本章主要对HDR成像的一整个流程做一个简要描述。
HDR整个成像过程可以写成:
1.捕获不同曝光时间的图片(方便我们获得不同亮度范围的合并生成高动态图像)
2、存储HDR图片(HDR图片的高动态范围带来了更大的数据量,因此有必要找到合适的压缩编码和存储方法)
3、HDR显示器(如果我们知道一般的计算机显示器分辨率不够,你就看不见了HDR只能看图像LDR图像,所以需要特殊的HDR显示器)
4、色调映射(Tone Mapping)后显示到LDR显示器上
流程图
2.1、获得HDR内容
首先,我们直接给予获取HDR然后阐述内容的主要方式。
2.1.1、合成多幅图像来获得HDR图像
我们可以通过在同一场景中合成多个不同曝光时间的图像(从最暗到最亮的细节)来获得HDR图像,详见本博客:HDR (1)成像技术学习 - 知乎 (zhihu.com)
,具体合成公式(即恢复原场景辐射)为(以后更正为2.3):
式2.1计算传感器的辐照值,而不是场景的真实辐照值,尽管我们通常认为两者成正比。但更严格的公式是:
α是像素到透镜光轴的角度,d从镜头到图像平面的距离,R是透镜的半径。真实辐照值和传感器辐照值似乎与空间关系有关。
下图显示了一些常用的w权重函数:
可以看出,上述三个权重函数更注重中间像素值,因为低像素值更容易饱和,所以中间像素值更可靠。
接下来介绍一个重要内容:相机响应函数(Camera Response Function,CRF)
要了解CRF在此之前,我们必须了解相机成像的过程:
拍摄对象反射的光(场景辐射)通过相机镜头转换为传感器辐射,传感器辐射通过快门通电转换为传感器曝光。这是光学变化的过程。传感器上的感器上的感光器件释放电荷产生电信号。通过放大和过滤电信号,然后通过模数转换获得数字信号,即图像数据。信号处理器相应处理后,将这些数据存储到图像文件中进行输出。这是电子成像部分,即相机响应过程。
相机响应函数(CRF)是传感器上的曝光图像亮度值映射关系,
CRF尽可能将现实世界的动态范围压缩到有限的8/10位存储器或胶片介质中,如下图所示。
横坐标:真实亮度。纵坐标:像素亮度 ISO:底片对光的敏感性。ISO即使真实亮度很小,成像的像素亮度也会很大,整体会变亮。
回到我们的目的,通过LDR获取HDR,所以我们应该尽可能多地去做LDR图片中获得,也就是说,我们必须反过来通过求。
因此,我们需要逆相机函数CRF求逆即可。
而只有传感器曝光,我们想要进一步获得场景辐射。
有了逆相机响应函数(inverse CRF),我们(2.1)应更新为:
在式(2.3)由于数值精度误差,可能会产生胡椒盐噪声。另一种情况是减少含有特定噪声像素的黑暗曝光场景。因此,为了减少其影响,我们需要正确的(2).3)给出其他形式。
对于第一种情况,我们在对数域给出公式:
第二种情况:
还有很多估计CRF这里就不一一列出固定来拟合不同曝光时间的像素值等方法了。对了,对彩色图像的估计CRF,三种不同的色带可能使用三种CRF,以及估计CRF我们不会使用所有的像素,而是对的LDR图像采样。
总之,。
如何去除异常值?
在不同曝光时间的图像中,可能会有一些过度曝光(太亮,白色)或过度曝光(太暗,黑色)。我们通常设置阈值当像素值小于时就定为防止曝光不足。对于过度曝光,我们采用曝光时间最短的第k曝光(这不是很确定)。
图像对准和鬼影
我们合同多个不同曝光时间的场景LDR图像的前提之一是对准你的图像。这是什么意思?人们在拍照时不可避免地会握手,所以即使是同一场景下的图片也是对的,这对我们来说是合成的HDR图像带来麻烦。理想情况下,有固定的相机和静态场景(人/物/灯) 在实验室等环境实验室等环境中实现)拍照。现实中很难有这样的环境,所以不对准的结果是照片中的鬼影(ghosting),鬼影会模糊照片。
幸运的是,我们有一些算法可以对准照片,在握手的情况下去除鬼影,如同源对齐、光流方法、基于补丁合成的方法、基于马尔科夫场景的方法等。下图显示了相机移动的鬼影示例:
眩光
眩光是指入射光在人眼或相机光学器件中散射造成的降低可见度的现象。当获得时HDR眩光会降低对比度。
(a)有眩光 (b)去除眩光
Talvala其他人提出了一种去除眩光的方法:在相机镜头前添加一个掩膜,可以阻挡图像部分的眩光。为了获得整个无眩光图像,掩膜移动到镜头前的6×6网格,最终合并这些图像,并给出掩膜模式的估计眩光。
眩光也可以变废为宝。眩光可以使用跨屏幕滤光器来突出场景的亮点和亮点。HDR信息编码为LDR图像。
2.1.2、捕获HDR视频
最近的捕获HDR基于多传感器系统的视频方法有:(Multi-Sensor System)、曝光空间变化(Spatially varying exposure)、多视图系统(Multi-view System)、曝光时间变化(Temporally varying exposure)、本地传感器(native sensors)。下面简要介绍一下这些方法。
多传感器系统
(a)多传感器系统 (b)多视图系统
Aggarwal and Ahuja使用一个或多个分束器(Beam Splitter)将光路分割成几个传感器系统(如上图所示)。这使得两个或两个以上的曝光图像同时捕获,没有鬼影和对错问题,导致高分辨率和高帧率。该系统需要仔细的光学对齐、相机校准和传感器同步。然而,一些小的亚像素(sub-pixel)仍可能存在对不准问题。
在多视图系统中,每个相机都有不同的曝光时间。
曝光空间变化
空间变化曝光是为了改变空间中的曝光,因此没有必要处理不正确的问题,因为所有的曝光时间都是同时捕获的。然而,该方法牺牲了空间分辨率来换取高动态范围,高质量的重建需要复杂的算法。
曝光空间变化
多视图系统
使用多个相机系统捕获HDR内容不需要昂贵的亚微米传感器对齐,允许使用深度信息和光场同时捕获不同的曝光。以下是一个示例图。
(a)一帧图片的伪色图 (b) 将(a)色调映射后的图片
曝光时间变化
Kang et al提出系统在每一帧改变其曝光时间。首先使用运动估计和层次同质将两个相邻的帧对准,然后用式(2.3)将它们合并在一起(这里不是很明白,等以后清楚了再回来填坑)。这种方法不能处理高速运动、明显的遮挡。并且鬼影问题是该技术的主要缺点。研究人员提出了几种方法来解决这个问题,使用运动估计、全局对齐和扩展补丁合成。
本地传感器
本地传感器即使用更高级的器件来代替复杂的技术。比如可以本地捕获HDR值的传感器,近年来,有几家公司已经引入了在线性/对数域内记录到10/12/14位信道中的传感器。相对低成本的传感器/摄像头系统现在已经在市场上上市。
2.1.3节介绍了一些市面上的相机,这里就不做介绍了
2.1.4、HDR内容的合成
书上主要写了射线追踪和栅格化两种渲染方式,渲染方式不大想写(感觉不是重点)
2.1.5、LDR内容的扩展和提升
书上也只是一嘴带过,在第六章会详细讲解。
2.2、HDR内容的存储
一个未压缩的HDR像素使用三个来表示,假设RGB颜色有三个波段。这意味着一个像素使用12字节的内存,在高清分辨率为1920×1080下,一个图像将占用大约24兆字节。这比存储不需要压缩的等效LDR图像所需的大约6兆字节要大得多。所以寻找有效的存储方式或压缩方式是很有必要的。
使用单精度浮点数,一个图像每像素占用96位。Ward提出了这个问题的第一个解决方案,RGBE。这种方法在这三种颜色之间存储了一个共享的指数并且假设它们之间没有太大的变化(因为三种颜色在RGB空间中有很强的相关性,数值上至少都在同一数量级,因此不需要为每个通道单独存放指数)。RGBE的像素编码格式主要用在Radiance的HDR图像文件格式中,利用四个字节编码,前三个字节表示红绿蓝三种颜色,最后一个字节存储公用的指数。该格式的编码被定义为:
解码为:
RGBE的编码格式覆盖了76个数量级。但是,该编码并不支持全色域的颜色和负值。为了解决这个问题,可以在编码之前将图像转换为XYZ颜色空间,此示例被称为XYZE格式。图形硬件供应商和计算机图形api支持RGBE格式的修改版本(即每个颜色通道的尾数为9位,共享指数为5位)。
另外还有例如LOGLUV和JND steps编码格式等,在此就不细说了。
2.3、本地可视化
主要介绍了一些HDR显示器及其技术,感觉也不是重点,就鸽了嘿嘿。
总结:
本章主要对HDR流水线做出介绍,从获得HDR内容到HDR内容存储到本地显示的一整个流程做出介绍。重点主要在获取HDR内容,包括将多幅LDR合成HDR、相机响应函数CRF、去鬼影 和HDR视频。