传统多帧融合技术
拍摄一系列不同曝光时长的图像帧(LDR),然后使用融合算法进行融合成HDR图像。
融合算法可以分为两种
基于照度图估计的融合
基于照度估计需要拟合相机响应函数,详细可以参考如下论文:
Recovering High Dynamic Range Radiance Maps from Photographs
该论文描述了如何求解相机响应曲线。
通常相机对于现实世界的亮度是一个非线性映射,它决定了场景中的亮度如何转换成为输出图像中的像素值。通过该曲线可以查找到所有现实场景亮度对应的像素值,在同时拍摄了过曝光图像A和欠曝光图像B后,A中欠曝光过暗(黑色区域)地方的像素值可以通过B图乘以一个比例因子,而该比例因子可以根据相机响应曲线中Exposure的比值来确定。
假设相机在拍摄一个场景,对于场景中某个点处辐照度为E,则曝光为
该曝光经过相机处理(相机响应曲线)输出的原始数据
需要注意的是,对于拍摄场景中的同一个点,辐照度是现实场景真实存在的参数,短时间内可认为是恒定的,即某个点的真实场景亮度短期是恒定的。由于使用不同的曝光时长,造成了同一场景可以拍摄出不同亮度的图像。而这些图像序列的对应像素点都源于同一场景对应点的相同辐照度。
这里的即为相机响应曲线。
例如下列案例
欠曝光B图
过曝光A图
假设该响应曲线已知,知道欠曝光B图的参数和像素值,过曝光A图的参数和像素值。在B图中,暗光区域(黑区)的像素值由于没有正确曝光(黑区中无法表达场景),需要通过A图对应位置来获取,也就是以下公式:
根据已知信息可知
根据上述同一场景某个点处辐照度E短时间内是恒定的,可以得出将A图中正确曝光像素映射到B图中黑区对应位置的值如下:
同理可以得到欠曝光B图中正常曝光区域(在B图中是高光饱和区域)的像素值映射到A图中对应区域位置的像素值
以上描述的仅是利用相机响应曲线中的最简单融合方式。
值得注意的是:笔者认为,应该在Bayer域求解相机响应曲线,因为ISP后续的一些部分会引入非线性变换,这些非线性变换很有可能会扭曲相机响应曲线。
多曝光直接融合
参考最经典的论文:
Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography
以饱和度、对比度、曝光度等简单的质量指标为指导进行多帧图像的加权和多尺度融合。
对比度指标:拉普拉斯滤波器应用于每个图像的灰度图,并获得滤波器响应的绝对值C作为对比度指标。
饱和度指标:饱和度测量S,它被计算为每个像素的R、G和B通道内的标准偏差。
曝光度指标:像素的曝光度使用高斯曲线根据每个像素强度接近0.5的程度E
多尺度融合过程如下所示:
将输入图像分解为拉普拉斯金字塔(提取细节层),该金字塔基本上包含不同尺度的带通滤波图像。然后分别对每个级别进行混合。多分辨率(多尺度)融合在避免接缝方面非常有效,因为它混合了图像特征而不是强度。
另一篇有意思的论文:
An Analysis and Implementation of the HDR+ Burst Denoising Method
传统多帧的HDR图像融合方式最大的缺点是容易产生运动伪影,在拍摄高速运动场景中的运动物体时候或者相机发生抖动的时候,由于拍摄多帧之间的帧间隔时间,图像内容往往会发生较大改变(不仅仅是亮度),因此需要联合鬼影消除和图像配准等方式,算法会变得更为复杂。
HDR Sensor
现代HDR技术更多依赖于硬件的支持,其中最重要的就是CMOS Image Sensor。
Interlaced HDR(iHDR)
为了解决鬼影问题,诞生了隔行曝光(Interlaced)HDR。采用这种技术的sensor,以行为单位,一组做长曝光,一组做短曝光,比如奇数组短曝光,偶数组长曝光(由于bayer阵列的结构,一般是两行为一组)。这样在一帧中就同时包含了长曝光和短曝光的行。算法最后会进行融合处理。iHDR会使得空间分辨率损失一半,主要的iHDR的技术有Sony的BME-HDR和OV的Alternate row HDR。
索尼的BME 是 binned multiplexed exposure 的缩写。这种 sensor 每隔两行的曝光时间分别设为 短曝光和长曝光。然后融合长短曝光的两帧图像,成为行数减半的一帧 HDR 图像。空间分辨率损失了一半,就好像是做了 1x2 binning,所以叫做 binned multiplexed exposure。 IMX135 和 IMX258 使用了这一技术。
OV的alternate row HDR 是每两行用一个曝光,long 或者short。对应长曝光、短曝光行的gain也可以分开控制。与sony 的BME HDR 类似,这个alternate row HDR 会损失一半的空间分辨率。
zHDR(Zig-zag HDR)
iHDR技术最大的问题是空间分辨率损失的问题,zHDR基本思想源自iHDR,但做了改进。zHDR不再以行为单位做曝光时间区分,而是按照Z字形方式组织长曝光和短曝光的数据。 zHDR是由SONY提出的iHDR的升级版本, 具体的实现方案主要是SONY的SME-HDR。
SME 是 Spatially multiplexed exposure 的缩写。这种 sensor 在空间上以棋盘格的 pattern 排列着长曝光和短曝光的像素。然后通过算法处理融合两个曝光的图像成为一帧 HDR 图像。IMX214 采用了这一技术。
QHDR(QB-HDR)
QBC 是 quad bayer coding 的缩写。这种 sensor 的设计是:每个像素是有四个子像素组成, 他们公用一个 color filter。在非 HDR 模式下,四个像素合并成一个输出值,在 HDR 模式时,会把四个像素分成两组,对角线方向的分到同一组,135 度的那组曝光要短于 45 度的那组,然后再 scale+combine,这样就生成完全 pixel 位置的 HDR 图像。IMX294CJK 采用了这个技术。
行交织HDR(Digital-Overlap)
索尼的DOL(Digital-Overlap) HDR相比传统HDR读取完每一行所有像素然后开始曝光,完成后再分别进行长中短这种低效模式下,DOL HDR的长中短三次读取曝光是同时进行的(准同时)效率更高。DOL HDR相比传统HDR读取完每一行所有像素然后开始曝光,完成后再分别进行长中短这种低效模式下,DOL HDR的长中短三次读取曝光是同时进行的(准同时)效率更高。IMX290 使用了这一技术。(IMX274LQC也使用了该技术)
OV的Staggered HDR:staggered HDR 与sony 的Dol 类似,不同的是Sony 最多支持4:1 曝光输出,即long,medium,short,veryshort。而OV 最多支持3:1 输出,即long,medium,short。
传统的多帧HDR是以帧为单位,只有第一帧所有行完成曝光后才开始第二帧的曝光,如下图所示
而行交织DOL HDR只要长曝光行曝光结束就开始短曝光行的曝光,这种方式避免了传统多帧HDR方式对于拍摄高速移动物体场景的限制。
大小pixel HDR Sensor
与普通CFA的不同,大小pixel技术的sensor在相邻位置有一大一小两个pixel,他们空间上非常接近,可以认为对空间采样相同。IMX490 采用了此技术
由于pixel的大小不同,物理上的sensitivity不同,FWC也不同,会产生与时域HDR一样的不同曝光效果,形成了对不同动态范围的覆盖。
DCG Sensor
据说这是小米10 至尊纪念版主摄技术
Dual一词也就说明了一个pixel下有两个方案--Low conversion gain(LCG)和high conversion gain (HCG)。 LCG应对于明亮的场景,DCG处于打开状态;HCG应对低光场景,DCG处于关闭状态,灵敏度增加。CG值越高,电子更容易被探测到,也就是sensitivity越高。
双摄HDR
这个不用多说,就是使用两个摄像头,一颗摄像头负责短曝光,一颗摄像头负责长曝光,后期通过HDR多帧融合算法融合即可。