首先,什么是动态范围,其实这是一个应用面很广的定义,但每个应用面又有明显的不同,小胖聊的自然是图像技术里的动态范围。按照定义即:满阱最大不饱和容量/零输入响应,有动态范围DR公式:

F为光电二极管,也即像素满阱最大不饱和值,D为零输入,也就是全黑照片的亮度平均值,σ为标准差,可按2为底取对数,即为EV。但动态范围按工程学来说也能用电流来表达(严格的测量就输入和输出信号的电流或电压比):

也即i_max最大不饱和电流与i_min底电流之差,按dB分贝取值,为什么有不同?是因为动态范围在不同应用面的测试方法其实不同,像显示器上是比例值,比如800:1等等,但它的测试方法是直接取白电平和黑电平做比值,这对于成像系统来说并不实用。传感器动态范围测试一般是先把图像低通滤波,最低亮度求平均、平滑高亮单点后,再计算噪声基底,测量结果会更稳定。

目前来看高端传感器动态范围可超80dB,但自然界中很多场景动态范围甚至超过了100dB,比如逆光、比如颜色反差极大的物体、比如不同肤色的人,事实上如果把多色彩通道考虑进来,目前成像技术只能实现可见色域的一小部分而已,所以无论从亮度还是色彩,都是HDR的存在价值。

按传感器定义来看不难发现,我们提高满阱容量F,或最大不饱和电流i_max就能解决这个问题了啊。最直接就是提高传感器的输出带宽,比如从目前已有的14bit增加到16bit,就能从84.2dB增加到96.3dB啦,但传感器加速在目前却是一个难度很大的问题,制程、功耗、成本都会变得很不可控,所以HDR高动态范围不能单纯、急躁地堆高速,还得走一些“曲线救国”的方案。

首先是多帧合成,这个其实就包含小胖之前聊过的部分了,具体来说就是以多次,但速度不同的快门来捕捉暗部、亮部以及均值曝光,再机内熔图(索尼叫Digital Overlap,DOL),但这个方案很考究算法,还要考虑噪声影响。同时对传感器的读出速度要求很高,不过毕竟不是单张照片,时间差始终存在,所以这个方法不适用于对于视频HDR。

不同曝光进行融合的概念可使用在在单帧HDR上,主要方案有三种,第一是每两行像素为一组,以短曝光、长曝光、短曝光、长曝光……为节奏排序,最终合成的照片只有总行数高度的一半,换言之就是空间分辨率减半,因为视频分辨率并不算高,4K也不过829万,所以这个设计是视频HDR目前的主要思路(索尼叫Binned Multiplexed Exposure,BME)。

但毕竟用50%的分辨率换HDR并不适用于所有图形主题,所以有了第二种方案,单个像素也有不同曝光值,再通过解马赛克算法融合(也即索尼Spatially Multiplexed Exposure,SME),厂商数据称此模式的空间分辨率折损只有20%(也可通过电子快门的控制实现第一种方案)。

上述两种算法的问题在于像素亮度与物体亮度不能一一对应,需要更大量的计算,所以就有了第三种单帧HDR技术,2X2,也就是4个像素共用一个色彩滤镜,非HDR模式下4个像素合并为单个输出,可降噪、增加动态范围。而在HDR模式下时,4个像素中对角线方向的两两一组,分别由电子快门控制为长曝光与短曝光,再进行计算合并。这个技术在索尼叫Quad Bayer Coding,QBC,没错,当前正红火的华为P20 Pro传感器就是基于此技术。

除此之外,从传感器本身的设计来看也有一些办法可依据,比如加大阱容,从而让i_max变大,原本只需reset一次,现在也换成reset多次,实现更高的i_max值。但这时候会增加固定模式噪声,响应变成非线性,后端处理会比较麻烦。

事实上传感器HDR只是提供了一个可用值,能把多少可用值转换为可视值就得依赖显示器了。举个简单的例子,sRGB色域没有黑电平的概念,无法实现真正的输出值0,但这对于HDR显示来说事关重大,最高不饱和亮度固定的情况下,0.1和0.01cd/m^2的输出差别反应到动态范围就是10倍的差距,所以在低动态范围(LDR)显示器上,就出现一层层黑圈瑕疵,并非纯粹的黑,这就需要HDR显示器才能解决。

但传感器提供的原始HDR信息即便是目前的HDR显示器也不能直接使用,需要进行色调映射,把高对比度高色域的图像,根据场景光强转换成适合显示的像素值。具体过程:首先要根据当前的场景推算出场景的平均亮度,再根据这个平均亮度选取一个合适的亮度域,再将整个场景映射到这个亮度域,从而得到正确的结果。接下来是公式时间。

根据场景推算平均亮度,Lw(x,y)是像素点x,y的亮度,N是像素数,δ代表纯黑像素,有公式如下:

而映射亮度域则需要引进一个α值,控制亮度倾向,比如相对适中的0.18,越小就越偏暗,越大就越偏亮,所以该亮度域的公式为:

将其再次映射到计算机实用的0,1区间就是:

Ld(x,y)就是映射后的x,y像素亮度值,Lwhite是控制亮度峰值的限制,超过它的值均为纯白。其实这个算法在色调映射里很基础,作为HDR算法的一部分,可变式也不算少。今天的文章也希望能权当抛砖引玉,欢迎业内大神补充指导。