HDR色调映射学习(一)

色调映射学习(一)

  1. 摘要
      HDR技术当前发展迅速,各大手机厂商将其视为重要的评价标准,未来也会成为图像和视频的主流。通常捕获图像后,需要对图像和视频进行显示,不幸的是,标准显示的数据远远低于真实场景中可能发生的数据。虽然有限的高HDR显示器确实存在,但标准的LDR显示器继续主导市场。所以如何让HDR图像与视频也能够同时兼容地在现有的LDR显示设备上显示,是非常重要的技术挑战。色调映射技术就是用来实现将HDR源信号转换到LDR源信号的技术。因此,色调映射作为一种针对硬件限制的软件解决方案仍然很重要。图一左边是LDR技术显示的图像,右边的HDR技术显示的图像。
    HDR色调映射学习(一)_第1张图片
    图一

  2. 背景
      图像显示技术的最终目的是为了使得显示的图像效果尽量接近人眼在自然界中观察到的对应的场景。由于HDR图像与视频有着更高的亮度、更深的位深、更广的色域,因此它无法在常见的普通显示器上进行显示。一般的LDR显示设备只能将色彩通道离散化到8-bit,色度空间只有255个层级,能够显示的颜色范围较少;而HDR显示设备通常高于10-bit,因此HDR图像无法完整的直接显示在LDR显示设备上,为了使得HDR图像与视频能兼容地放映在LDR设备上,就必须使用色调映射技术将HDR图像与视频映射为LDR图像与视频,进而可以正常显示在LDR显示设备上。
      色调映射的目的是使高动态范围HDR图像能够适应低动态范围LDR显示器。想要实现这一目的,就需要将HDR图像的色度,亮度,动态范围等,全部映射到LDR图像的标准范围内。在这个过程中,不能简单使用线性映射,因为这样会丢失原始图像的一些重要信息,例如全局与局部的对比度和重要的细节等,最重要的一点是,简单线性映射产生的图像相比于自然界中的场景,会出现严重的失真情况。因此,色调映射技术需要经过深入的研究与精密的设计,才能使得产生的图像在视觉效果上与实际场景中的效果一致。

  3. 色调映射算法
      色调映射算法是为了将HDR图像的显示亮度压缩到LDR设备的显示范围内,同时在转换的过程中要保持图像的细节和颜色等重要信息。色调映射算法需要具备两个基本的功能:1、图像亮度压缩;2、保持图像细节与颜色,避免丢失重要信息。
      LDR显示设备的亮度范围远远小于HDR图像以及自然界中的亮度范围,对于HDR图像来说,亮度值就代表绝对的亮度值。由于HDR显示设备的亮度范围足够大,因此,HDR图像每一个像素点记录的亮度值,就是显示在HDR显示设备上的亮度值。而LDR图像则有所不同,因为LDR显示设备的亮度范围很小,并且显示范围只有0-255,因此能够显示的颜色与亮度的范围都很有限。为了让有限的亮度空间都能被合理利用,LDR图像的亮度实际上并不对应于显示场景中的亮度,而是一种“相对亮度”。像素值通过Gamma映射,映射到显示器支持的亮度范围当中后,再显示出来。因此,LDR图像的亮度是由显示设备决定的,而HDR图像的亮度记录在图像当中,由图像决定的。
      人眼通过瞳孔的调节,找到场景中亮度的主要分布范围,人眼会对于这个亮度范围内的亮度敏感,能够分辨其中的细节,而对于其他亮度,在人眼的感知中就是过于明亮或者过于阴暗,人眼就无法感知其中的细节。色调映射如前所说,也需要解决这个问题。不同的色调映射算法选择的处理方式有所不同。色调映射技术可以使用以下的方式做一个统一的定义:

在这里插入图片描述
  其中f代表的是色调映射算子,I表示待操作的图像,w,h代表图像的宽和高,c代表图像的通道数,通常为RGB三通道,同时,因为色调映射算子此时只对亮度进行操作,而不改变颜色,所以上式可以简化为:
HDR色调映射学习(一)_第2张图片
  这里s∈(0,1]代表饱和度因子,用来降低色调映射后的饱和度,因其在色调映射过程中饱和度通常会增加,操作完成后,通常还会对每个颜色通道进行Gamma校正,使它的色度范围固定在[0,255]范围内。图2是浴室图像的简单色调映射。动态范围(DR)很大,处理后显示(a)曝光不足和(b)曝光过度问题,使用简单的色调映射。暗部和亮部的特征不能同时显示。
HDR色调映射学习(一)_第3张图片
图2

  1. 颜色映射
      在色调映射的过程中,不仅仅是图像亮度的范围减小了,同时图像的颜色范围也减小了。可以通过对三个通道进行统一的操作,进而将图像的亮度进行适当的压缩;也可以分别对单个通道进行不同的操作,进而在对亮度进行压缩的同时,也对图像的颜色进行映射。色调映射的过程通常分为两个步骤:(1)亮度映射,(2)颜色映射。
    颜色映射的方式较为统一,通常使用如下式子的方式进行映射:
    在这里插入图片描述
    其中,C和c分别是色调映射前和色调映射后的颜色。L是HDR图像的亮度,T是色调映射后对应的亮度值。s是用来调节饱和度的参数,当s<1时,颜色的饱和度可以得到调节。大多数的色调映射算法,都是通过这样的方式进行颜色的映射。

  2. 色调映射算法流程
      随着色调映射算法的研究逐渐成熟与深入,算法通常都遵循着一种算法设计流水线。图3 色调映射算法流程图。
    HDR色调映射学习(一)_第4张图片
    图3 色调映射算法流程图
      流程图输入的是HDR图像,输出为LDR图像,通过对输入图像进行预处理,将图像的亮度信息转换到对数域,得到处理后的HDR图像,然后通过图像的保边滤波器,将图像分解成基础层和细节层,基础层能够反应图像的一个亮度信息,细节层能够体现图像的纹理和边缘信息。 再接着分别对图像的基础层和细节层进行不同操作,提取出的基础层亮度信息通过不同的色调曲线进行压缩,进而映射到LDR图像的亮度域之中。然后将压缩后的亮度信息加上第二步操作后得到的细节层,可以得到色域映射后的图像,最后可以通过后置处理(线性化、颜色重构等图像处理步骤)进行颜色校正,得到最好的LDR图像。
    色调曲线色调映射算法设计的核心问题。在上面的色调映射算法流程图中我们提到,提取出的亮度信息,要通过色调曲线,映射到LDR图像的亮度域当中。色调曲线可以压缩图像的动态范围,或者说亮度范围,但是,在压缩的过程中,会使得图像整体的对比度出现损失。由于全局对比度在亮度被压缩到较小的亮度范围时不可避免的会出现细节损失,提升图像的质量可以从保持图像的局部对比度,或者说细节入手。通常利用高斯函数可以有效解决图像的局部对比度问题。
    文中出现的基础层与细节层多尺度分解可参考前面博文多尺度图像分解。

感谢如下参考:HDR关键技术:色调映射(一)

你可能感兴趣的:(HDR图像学习,计算机视觉)