开启辅助访问
 找回密码
 立即注册

HDR Sensor 原理介绍

回答数10 浏览数106
在介绍HDR Sensor原理之前首先讨论为什么需要HDR Sensor.
什么是sensor的动态范围(dynamic range)?

sensor的动态范围就是sensor在一幅图像里能够同时体现高光和阴影部分内容的能力。 用公式表达这种能力就是:
DR = 20log10(i_max / i_min); //dB
i_max 是sensor的最大不饱和电流—-也可以说是sensor刚刚饱和时候的电流 i_min是sensor的底电流(blacklevel) ;
为什么HDR在成像领域是个大问题?

在自然界的真实情况,有些场景的动态范围要大于100dB。
人眼的动态范围可以达到100dB。
Sensor 的动态范围: 高端的 >78 dB; 消费级的 60 dB 上下;
所以当sensor的动态范围小于图像场景动态范围的时候就会出现HDR问题—-不是暗处看不清,就是亮处看不清,有的甚至两头都看不清。

HDR Sensor 原理介绍-1.jpg
暗处看不清–前景处的广告牌和树影太暗看不清。

HDR Sensor 原理介绍-2.jpg
亮处看不清–远处背景的白云变成了一团白色,完全看不清细节。
解决HDR问题的数学分析

根据前边动态范围公式
DR = 20log10(i_max / i_min); //dB
从数学本质上说要提高DR,就是提高i_max,减小 i_min;
    对于10bit输出的sensor, i_max =1023,i_min =1, 动态范围DR = 60;
    对于12bit输出的sensor, DR = 72;
所以从数学上来看,提高sensor 输出的bit width就可以提高动态范围,从而解决HDR问题。可是现实上却没有这么简单。提高sensor的bit width导致不仅sensor的成本提高,整个图像处理器的带宽都得相应提高,消耗的内存也都相应提高,这样导致整个系统的成本会大幅提高。所以大家想出许多办法,既能解决HDR问题,又可以不增加太多成本。
解决HDR问题的5种方法

从sensor的角度完整的DR 公式:

HDR Sensor 原理介绍-3.png
    Qsat :Well Capacity idc: 底电流,tint:曝光时间,σ:噪声。
方法1:提高Qsat –Well capacity 。

就是提高感光井的能力,这就涉及到sensor的构造,简单说,sensor的每个像素就像一口井,光子射到井里产生光电转换效应,井的容量如果比较大,容纳的电荷就比较多,这样i_max的值就更大。普通的sensor well只reset一次,但是为了提高动态范围,就产生了多次reset的方法。 通过多次reset,imax增加到i‘max,上图就是current to charge的转换曲线。 但这种方法的缺点是增加FPN,而且sensor的响应变成非线性,后边的处理会增加难度。
方法2:多曝光合成

本质上这种方法就是用短曝光获取高光处的图像,用长曝光获取阴暗处的图像。有的厂家用前后两帧长短曝光图像,或者前后三针长、中、短曝光图像进行融合
If (Intensity > a) intensity = short_exposure_frame;
If (Intensity < b) intensity = long_exposure_frame;
If (b<Intensity <a) intensity = long_exposure_frame x p + short_exposure_frame x q;
当该像素值大于一个门限时,这个像素的数值就是来自于短曝光,小于一个数值,该像素值就来自于长曝光,在中间的话,就用长短曝光融合。这是个比较简化的方法,实际上还要考虑噪声等的影响。

HDR Sensor 原理介绍-4.jpg
Current to charge曲线显示:imax增加a倍。
这种多帧融合的方法需要非常快的readout time,而且即使readout时间再快,多帧图像也会有时间差,所以很难避免在图像融合时产生的鬼影问题。尤其在video HDR的时候,由于运算时间有限,无法进行复杂的去鬼影的运算,会有比较明显的问题。于是就出现了单帧的多曝光技术。
方法3:单帧空间域多曝光。

最开始的方法是在sensor的一些像素上加ND filter,让这些像素获得的光强度变弱,所以当其他正常像素饱和的时候,这些像素仍然没有饱和,不过这样做生产成本比较高,同时给后边的处理增加很多麻烦。所以下面的这种隔行多曝光方法更好些。

HDR Sensor 原理介绍-5.png
如上图所示,两行短曝光,再两行长曝光,然后做图像融合,这样可以较好的避免多帧融合的问题,从而有效的在video中实现HDR。同时由于video的分辨率比still要低很多,所以这个方法所产生的分辨率降低也不是问题。这个方法是现在video hdr sensor的主流技术。
方法4:logarithmic sensor

实际是一种数学方法,把图像从线性域压缩到log域,从而压缩了动态范围,在数字通信里也用类似的技术使用不同的函数进行压缩,在isp端用反函数再恢复到线性,再做信号处理。
缺点一方面是信号不是线性的,另一方面会增加FPN,同时由于压缩精度要求对硬件设计要求高。
方法5:局部适应 local adaption

这是种仿人眼的设计,人眼会针对局部的图像特点进行自适应,既能够增加局部的对比度,同时保留大动态范围。这种算法比较复杂,有很多论文单独讨论。目前在sensor 端还没有使用这种技术,在ISP和后处理这种方法已经得到了非常好的应用。

HDR Sensor 原理介绍-6.jpg
上图就是用方法2 + 方法5处理后的HDR图像。亮处与暗处的细节都得到了很好的展现。
使用道具 举报
Aim_yuan
请问下现在比较成熟的tonemap的operator能推荐几个么
回复
使用道具 举报
jiaguangqin
推荐你看 high dynamic imaging  ,ERIK REINHARD写的这本书,里边第八章介绍你关心的内容。我自己只是应用,并没有具体去开发。
回复
使用道具 举报
清风吹袭断
请问vision research的镜头在HDR方面怎么样
回复
使用道具 举报
麻辣鸡翅
很好
回复
使用道具 举报
慧眼识英雄1
如果说,用n个保留多个高光信息的实时堆栈,来保留暗部的低噪音和亮部的细节,这个做得到吗?
回复
使用道具 举报
郭光庆
解决了我很多疑惑,谢谢分享
回复
使用道具 举报
真不是我干的的
filmic、ACES、自适应Reinhard。我所理解的HDR是ToneMapping+光晕Bloom,看了本文我感觉一定学了假的HDR.
回复
使用道具 举报
王俊杰2017
多少bit是对整个动态范围的分辨率,动态范围很低也可以有很高的分辨率,这两个没有直接关系。多少bit是这把尺子有多少刻度(分辨率),与尺子长度(动态范围)不是对应关系
回复
使用道具 举报
永远就三年疗
文中说的HDR是指sensor的HDR技术,属于图像前端处理,你说的应该属于图像后处理吧
回复
使用道具 举报
12下一页