文章目录
- 一、贡献
- 二、数据集构建
- 三、算法框架
- 3.1 对齐模块
- 3.2 合成模块
- 3.3 损失函数
- 四、实验
一、贡献
Paper: Deep high dynamic range imaging of dynamic scenes
Code:https://github.com/TH3CHARLie/deep-high-dynamic-range
- 首次提出使用机器学习方法从一组包围曝光的LDR图像中重建HDR图像
- 构建了第一个适合于学习HDR重建的数据集,并详细介绍了构建方法
二、数据集构建
- 数据采集:
① 人物静止,拍摄三张不同曝光下的LDR图像,按照曝光时间依次为短帧、中间帧和长帧,用于合成ground truth;
② 人物运动,再拍摄与①中曝光时间相同的三张LDR图像,并将中间帧替换为静止场景的中间帧,作为运动场景的参考帧。
- ground truth合成方法
借鉴经典的Devebec合成算法,使用三角形函数计算三张LDR图像的权重(结合图和公式理解)。简单解释一下,短帧只用参考帧中像素值大于0.5的部分,越接近1权重越大;长帧只用参考帧中小于0.5的部分,越接近0权重越大;参考帧中越接近0.5权重越大,越接近0和1权重越小。
得到权重 α j \alpha_j αj后,使用下式合成ground truth:
- 数据扩充
采用颜色通道交换、几何变换的方式对数据进行增强,然后以20的步长将图像裁剪为多个40×40的patch。
三、算法框架
算法的两个关键模块为:①对齐模块;②合成模块。
3.1 对齐模块
对齐模块是采用光流法将短帧、长帧与参考帧对齐。输入为原始的短帧、参考帧和长帧,输出为与参考帧对齐后的短帧、长帧以及原始的参考帧。
由于光流法需要亮度恒定才能取得好的效果,所以在对齐短帧和参考帧之前需要将短帧的亮度提高到与参考帧一致,同理,在对齐长帧与参考帧时要将参考帧的亮度提高到与长帧一致。(为什么都是将亮度提高呢?因为如果图像中存在过曝区域,那么降低亮度也还是过曝区域,恢复不了过曝区的信息)
以短帧与参考帧的对齐为例,将短帧乘上参考帧与短帧的曝光比,即可将短帧的亮度提高到与参考帧一致(有个前提是短帧和参考帧都为RAW域)
3.2 合成模块
合成模块的输入为对齐后的三张LDR图像以及对应的在HDR域的图像,一共6张图像,18个通道。
为什么要使用LDR域加上HDR域的图像作为输入呢?按照作者在文中的说法,原因如下:
在合成HDR时,需要评估LDR的质量,再根据其质量进行组合,例如传统方法采用像素权重的方式进行组合,其中像素权重就相当于质量评估的分数。对于网络合成,需要同时输入LDR域图像和HDR域图像,其中:
① 由于曝光时间不同,LDR域的图像可用于检测噪声和饱和区域
② 由于亮度基本一致,HDR域的图像有助于检测不对齐
结合以上两点,从而在最大程度上确保噪声、过曝和位移区域在合成HDR过程中没有贡献,或者贡献很小。
文中提出了3种合成模型:
- 端到端,直接输出HDR图像
- 预测权重图,再与原始LDR图像进行加权平均计算得到最终的HDR图像
- 预测权重图和完善后的LDR图像,对两者进行加权平均得到HDR图像
三种模型的网络结构一致,区别在于输出通道数。
3.3 损失函数
对于image to image任务,通常情况下损失函数为网络输出与GT的L1或L2距离。由于HDR图像通常在色调映射后显示,所以作者采用的loss为经过色调映射后的网络输出与GT的L2距离。最简单的tonemapping为gamma变换,但是其在0处不可微,因此文中采用了u-law:
文中对比了两种损失函数的测试结果,直接以HDR与GT的L2距离作为损失函数会导致tonemmaping后的HDR中存在颜色偏差、暗区有伪影和噪声等现象。
四、实验
网络预测的权重图符合直觉,短帧的权重图在亮区有较大的值,长帧的权重图在暗区有较大的值。