Camera HDR Algorithms
Camera HDR Algorithms
HDRI是High-Dynamic Range(HDR)image的缩写,也就是高动态范围图像。它就是为了解决更好的存储高动态范围图像这个问题而发明出来的。简单地说,HDRI是一种亮度范围非常广的图像,它比其它格式的图像有着更大亮度的数据贮存。而且它记录亮度的方式与传统的图片不同,不是用非线性的方式将亮度信息压缩到8bit或16bit的颜色空间内,而是用直接对应的方式记录亮度信息。它可以说记录了图片环境中的照明信息,因此我们可以使用这种图象来“照亮”场景。有很多HDRI文件是以全景图的形式提供的,我们也可以用它做环境背景来产生反射与折射。这里强调一下HDRI与全景图有本质的区别,全景图指的是包含了360度范围场景的普通图象,可以是JPG格式、BMP格式、TGA格式等等,属于Low-Dynamic RangeRadiance Image,它并不带有光照信息。
HDRI文件是一种文件,扩展名是hdr或tif格式,有足够的能力保存光照信息,但不一定是全景图。Dynamic Range(动态范围)是指一个场景的最亮和最暗部分之间的相对比值。一张HDR图片,它记录了远远超出256个级别的实际场景的亮度值,超出的部分在屏幕上是显示不出来的。可以这样想象:在photoshop里打开一张从室内往窗外外拍的图片,窗外的部分处在强烈的阳光下,曝光过度,呈现的是一片白色,没有多少细节。你将毫无办法,调暗只会把白色变成灰色而已,并不会呈现更多的细节。但如果同一场景是由hdr纪录的话,你减低曝光度,原来纯白的部分将会呈现更多的细节。谈论游戏画面时常说的HDR到底是什么呢?HDR,本身是High-Dynamic Range(高动态范围)的缩写,这本来是一个CG概念。
计算机在表示图象的时候是用8bit(256)级或16bit(65536)级来区分图象的亮度的,但这区区几百或几万无法再现真实自然的光照情况。HDR文件是一种特殊图形文件格式,它的每一个像素除了普通的RGB信息,还有该点的实际亮度信息。普通的图形文件每个象素只有0 -255的灰度范围,这实际上是不够的。想象一下太阳的发光强度和一个纯黑的物体之间的灰度范围或者说亮度范围的差别,远远超过了256个级别。因此,一张普通的白天风景图片,看上去白云和太阳可能都呈现是同样的灰度/亮度,都是纯白色,但实际上白云和太阳之间实

HDR实例
际的亮度不可能一样,他们之间的亮度差别是巨大的。因此,普通的图形文件格式是很不精确的,远远没有纪录到现实世界的实际状况。所以,现在我们就要介绍一下高动态范围图像(简称HDRI)。HDR全称是高动态范围。这是一个简单的术语,HDR图片是使用多张不同曝光的图片,然后再用软件将它们组合成一张图片。它的优势是最终你可以得到一张无论在阴影部分还是高光部分都有细节的图片。在正常的摄影当中,或许你只能选择两者之一。
Digital Overlap 与上一期介绍的Dual conversion gain一样,都是目前比较流行的sensor HDR 技术,在监控与车载相机等领域的应用非常广泛。Sony于2012年在监控相机市场首先推出基于DOL(digital overlap) HDR技术的图像传感器,之后OV与Onsemi也都推出了与DOL类似的HDR技术的图像传感器,而且应用领域不局限于监控这种传统HDR imaging的市场,而且扩展到了Automotive camera市场。现在Sony已经推出了第二代支持虚拟通道DOL HDR技术的sensor。
HDR的最佳搭档:OLED电视
HDR技术带来的画质提升是直观可感的,即使是普通观众也能用肉眼辨别,因此2016年众多厂商纷纷在电视产品上搭载HDR技术。但即便如此,却不是所有电视产品都能成为HDR技术的“良配”。毕竟HDR技术的运用不是单一的某个环节,而是关系到画面显示的整个生态系统。
呈现完美的HDR需要两个条件,第一是高对比度,第二是卓越的色彩表现力。而OLED电视与传统的液晶显示技术不同,它摒弃了背光源,实现了每一个像素点的有机自发光,也就意味着每一个像素点都能独立地打开或关闭,本身具有无限对比度、广色域、还有广视角等优势。因此HDR在OLED电视上可以发挥得淋漓尽致。
首先,对于HDR最重要的是对比度。液晶电视能表现的最低亮度为0.1nits,最亮为500到1000nits之间,对比度只有5000比1。如果把亮度提高两倍到10000nits,也只能达到10000比1。而LG OLED能表现的最低亮度为0.0005nits(目前用亮度测量的仪器能检测到的最低亮度),最高为500nits,大约20个档次,对比度为100万比1,再加上最低亮度(0.0005nit)几乎为零。所以相当于拥有接近于无限的对比度。
1.什么是时域多帧HDR技术
相机在时间上连续输出由欠曝到过曝的图像,然后做图像融合,得到HDR图像。

融合后HDR图像

比较典型的一种融合方法是根据luminance,contrast,motion等条件,对第K帧图像的像素[i,j]给出权重。Wij,k 是第K帧,位置i,j像素的权重,Xk((i,j)是原始像素值,Xf(i,j)是融合后的像素值。公式如下

对彩色图像,权重的计算会考虑色彩的饱和度等因素。
2.传统时域多帧HDR技术存在的局限
由于传统时域多帧是基于连续曝光的整帧图像(Frame Based)进行融合,所以图像之间的间隔时间就是一帧图像的周期,由此会产生很多artefacts:
场景内物体增减

近距离物体快速移动形成拖影

Color artefact

Frame based的多曝光HDR技术常用于still image 的capture,也有视频HDR 采用这种技术,比如sensor以60fps的帧率交替输出长短曝光,融合后输出30fps的HDR图像。

早期的HDR video有采用这种技术,自从DOL技术出现后,这种Frame based Video HDR技术就逐渐退出历史舞台了。
3.什么是DOL HDR
DOL HDR 也叫做line interleaving HDR 技术。以两曝光DOL为例,sensor每行会以长短曝光两次先后输出,从readout角度来看,就是长曝光帧与短曝光帧 line interleaving 依次输出,如下图,第一行L输出,第一行S输出,第二行L输出,第二行S输出,以此类推。

frame based HDR,长短曝光帧的间隔是一个帧周期,也就是必须一整帧(长)曝光结束,再开始一整帧(短)曝光,如下图

对于DOL HDR而言,由于line interleaving(行的交织),存在两帧的overlap,等于一帧输出没结束,下一帧就来了,长短曝光帧的间隔大大缩小了。
从下图可见,长曝光帧与短曝光帧overlap了一部分,所以这种技术叫digital overlap。

4.DOL长短曝光帧的时间间隔
前边说过,Frame based HDR的长短曝光帧的间隔是一帧的时间,那么DOL HDR的长短曝光帧的时间间隔是多大呢?
如果先输出长曝光的话

如果先输出短曝光的话

T= long exposure 的时间
所以当然是先输出长曝光,这样T(时间间隔)会更小。。
5.DOL长短曝光时间比与动态范围扩展
以两曝光DOL 为例
Exposure ratio = Long exposure time/ short exposure time
假设Exposure ratio = 16,假设在xinhao 没有饱和的条件下,相当于曝光最大值增大了16倍:2^4。也就是动态范围扩大了4个bit。
以此类推,每增加一个曝光帧,如果exposure ratio =16,动态范围就可以扩大4bit。
按照一般HDR sensor 单曝光为12bit来算的话,4曝光就可以让sensor输出的动态范围扩大到24bit(12+4+4+4)。
exposure ratio 也不是越大越好,exposure ratio会受到三方面的制约,图像质量,sensor设计以及isp line delay buffer。
从图像质量上来说,短曝光时间越短,图像噪声越高,长曝光越长,motion的影响越大。Exposure Ratio越大,在图像融合后的SNR drop也越大。
从sensor设计上来说,长短曝光之比受到读出电路的限制,sony的DOL第二代采用虚拟通道技术一定程度改善了这个限制。
从ISP的角度来说line delay buffer 也限制了最大曝光时间。在短曝光行出来之前,第一个长曝光行应该还在delay buffer里,这样才能两者对齐好给后面的frame stitch操作。而长短曝光比越大,需要的line delay buffer就越大。

对于sensor做hdr融合case而言,line delay buffer size就是固定的,所以ISP倾向于在isp这端做HDR融合,这样可以更灵活的设计。(Maver注:对于车载而言,带宽是个主要关注点,所以大部分用户不会选择在ISP侧做HDR融合)
6.DOL的局限
Sony在推出DOL的时候,宣传DOL是‘准同时’输出长短曝光。既然是‘准同时’,那就还不是同时,所以也会有一些典型时域多帧HDR的图像质量问题,同时DOL也有一些特有的IQ问题。
HDR Transition Artefacts
可以从下左图看到composition noise造成的edge,这种edge有时候会误导机器视觉。

从DOL hdr的noise profile可以看出来,如下图,在HDR拼接处,可以看到SNR的显著变化,叫做snr drop,当SNR drop大的时候,就会出现明显的edge,如上图所示。

曝光比越小,SNR drop就越小, 可以想见,如果曝光比为1,也就没有snr drop了。反之,曝光比越大,动态范围越大,snr drop也越大,如下图所示。

Flicker
交流电供电光源造成的flickering,如下图:

为了避免banding,就得让最小曝光时间是半周期的整数倍。

这样就不会出现banding了。但是由于最小曝光时间变大了,动态范围就损失了。所以有时候为了保证不损失动态范围,就得容忍Flickering。这就得看应用场景了。
类似的问题发生在PWM供电的Led光源上,尤其是交通信号灯以及汽车信号灯,如下图所示

sensor的长曝光帧能catch到led 的light pulse,但是短曝光帧就没catch到,这样也会造成flickering甚至信号灯图像的丢失。
这种flicker或者信号灯信息丢失的问题在车载成像系统上是致命的,所以车载HDR现在更倾向采用spatial based HDR技术,比如Sony采用的sub pixel技术或者OV 采用的split pixel技术。
Camera HDR Algorithms的更多相关文章
- 你都认识下面这些参数么?【Camera】
在调试的时候利用下面这个函数将 Camera AP 部分所设置的参数全部 dump 出来了,真是多啊! 这里仅限于 MTK 平台,MTK 自己在相机这块添加了许多功能,所以看起来就有一大堆的参数. 调 ...
- paper 72 :高动态范围(HDR)图像 HDR (High Dynamic Range)
In standard rendering, the red, green and blue values for a pixel are each represented by a fraction ...
- Unity中HDR外发光的使用
1.使用标准材质,设置好Emission外发光 2.Camera下打开HDR,加上Bloom特效 最终效果 如果只勾选HDR,只会有高光感,不会有外发光 注意,正向光照下打开HDR不可用抗锯齿,否则切 ...
- Unity Camera属性
Camera属性 1.Clear Flags 清除标记:决定屏幕的那部分将被清除.当使用多个相机来描绘不同的游戏景象时,利用它是非常方便的. 2.Background 背景:在镜头中的所有元素描绘完成 ...
- [原]Unity3D深入浅出 - 摄像机组件(Camera)
在Unity中创建一个Camera后,除了默认带一个Transform组件外,还会附带Flare Layer.GUI Layer.Audio Listener等4个组件,如下图. ClearFlags ...
- qualcomm platform camera porting
转载自http://www.cnblogs.com/thjfk/p/4086001.html camera基本代码架构 Camera原理:外部光线穿过lens后,经过color filter滤波后照射 ...
- MTK Camera相关的Makefile Option详解
列举了所有Camera相关的MakefileOption,并对其功能含义和OptionValues做了详细的解释.[KEYWORD]Others[SOLUTION]YUVCAM_INTERPOLATI ...
- Android视频录制从不入门到入门系列教程(四)————Camera Parameter
Camera提供了一个叫做setParameters的方法帮助开发者设置相机的相关参数. 通过Camera的getParameters方法可以获取到当前为相机设置的相关参数. 下面简单介绍下,视频录制 ...
- Android Camera MSM HAL
高通新的camera驱动架构设计发生了一些变化,借用互联网上常用的一种结构,大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口 ...
随机推荐
- windows内核编程基础知识
/* 1.基本的驱动数据结构 //驱动对象结构体 typedef struct _DRIVER_OBJECT { CSHORT Type; //结构类型 CSHORT Size; //结构大小 PDE ...
- hdu5033 最大仰望角
题意: 给你n个楼房排成一条直线,楼房可以看成是宽度为1的线段,然后给你m组询问,每组询问给你一个坐标,输出在当前坐标仰望天空的可视角度. 思路: n比较大,O(n*m)肯定跪 ...
- UVA11389巴士司机问题
题意: 有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单 ...
- Xshell6连Linux
一.安装 文件 链接: 提取码:8rmr 二.连Linux 名称填自己喜欢的.续之前,我们保持一样的名字.主机填IP,根据之前Linux填的静态IP去连接. 然后双击,连接 我们用最高权限,填root ...
- valgrind 内存泄漏分析
概述 valgrind 官网 https://www.valgrind.org/ valgrind 是 Linux 业界主流且非常强大的内存泄漏检查工具.在其官网介绍中,内存检查(memcheck)只 ...
- 引言:CTF新世界
1. CTF的昨天和今天 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客 ...
- IP子网划分与聚合
一:IP地址: IP地址是由32位2进制数组成,每8位一组.由点分十进制表达. IP地址可以分为五类 A类(1.0.0.0-126.255.255.255),127.0.0.1 为本地回环地址. B类 ...
- Scrum Meeting 1
Basic Info where:新主楼 when:2020/4/23 target: 简要汇报一下已完成任务,下一步计划与遇到的问题 Progress Team Member Position Ac ...
- NPM包管理器入门(附加cnpm : 无法加载文件错误解决方案)
NPM 包管理器 1.作用: 快速构建nodejs工程 快速安装和依赖第三个模块 2.使用方法 快速构建 npm init 会得到一package.json文件 { "name": ...
- micro 从cli的tag中获取配置
官方文档: https://micro.mu/docs/go-config.html https://github.com/micro/go-micro/tree/master/config/sour ...