转载之色调映射

一、概述

        虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普通的高动态范围图像小得多。。因此,色调映射技术在这样的背景下,就显得尤为重要。HDR 图像处理的一个重要方面就是色调映射(Tone Mapping),即压缩其动态范围至输出设备的动态范围以下,使高动态范围HDR图像能够适应低动态范围LDR显示器。

        色调映射实质上是一个信息压缩过程。需要将HDR图像的色度,亮度,动态范围等,全部映射到LDR图像的标准范围内。在这个过程中,不能简单使用线性映射,因为这样会丢失原始图像的一些重要信息,例如全局与局部的对比度和重要的细节等,最重要的一点是,简单线性映射产生的图像相比于自然界中的场景,会出现严重的失真情况。因此,色调映射技术需要经过深入的研究与精密的设计,才能使得产生的图像在视觉效果上与实际场景中的效果一致。如何选取有效的信息成分,使低动态图像能保持人类对真实场景的视觉感受,是色调映射应遵循的基本原则。

        色调映射方法可以被分为两大类:

  1. 全局色调映射(The global tone mapping),它用一个空间不变映射函数来映射图像中所有的像素点;
  2. 局部色调映射(The local tone mapping),它根据局部的像素统计量和局部的像素上下文关系,来调节映射函数。

        全局色阶重建算法在对图像进行动态范围变换时, 图像的每个像素点使用同一个变换函数, 是一对一的映射关系。这类算法的优点是算法简单,运行速度快。但是由于统一不变的变换曲线不能自适应图像的不同区域, 会导致结果在细节、亮度以及颜色上的损失。

        局部色阶重建算法是针对图像的每个像素点所在不同的区域进行不同的变换,因此有可能出现在同一幅图像中由于位置不同, 照度值相同的两个像素点映射后得到不同的新的值, 或者是照度不同的两个像素点映射后得到相同的新的值。这类算法的优点是通过色调映射算法处理后能产生效果更好的图像。其缺点就是计算量大, 容易产生“光晕” 效应。

        色调映射的技术难点如下:

  • (1)消除图像中高对比度边缘周围出现的光晕:在局部色调映射算法中,当待处理的像素点的邻域选择过大时,由于对比度过度增强,往往容易产生光晕现象。
  • (2) 保持映射图像中的细节:图像中的细节往往集中在中等亮度区域,色调映射算法在保持这部分细节的同时,往往使得图像中较暗与较亮区域的细节过度压缩,使得其难以呈现或完全消失。
  • (3) 在局部算法中选择合适的支持域尺寸:在局部色调映射算法中,需要选择合适的支持域(局部映射区域)来计算图像的局部特征。支持域尺寸选择过大或过小,都不能反应局部区域的真实特征,容易造成映射图像的失真。

二、全局色调映射(global tone mapping)

        全局色调映射算法或者称为空域不变算法,它是采用同一个变换函数对HDR 图像中的所有像素进行相同的映射,使HDR图像的动态范围被压缩到显示设备的动 态范围内。常见的变换曲线主要有指数变换或者对数变换。

        由于全局映射是对图像中 所有的像素做相同的映射,因此这种映射算法计算简单且具有较高的时间效率和空间 效率,但是这种固定类型的变换曲线不能根据像素邻域的局部特征进行自适应变换, 因而会导致图像在色度以及细节等方面有一定损失,出现极暗或者极亮区域,图像整 体明暗层次不佳,局部对比度不高,映射之后的图像与真实的场景在视觉上有较大差异。

         线性映射函数是最简单的空域不变算法,它是对图像中的每一个像素进行相同的 变换,从图像F到图像F^的映射如式:

        其中Tclamp表示阈值。

        对于HDR图像而言,阈值设置得过高,图像的整体亮度就会偏暗,图像细 节就会显现不清;阈值设置过低,图像过多的像素会被设置为卜从而导致图像 的亮度走样,图像整体就会发生偏差。设置不同的闽仇时,就会产生不同的效果:

1、基于S型曲线

        Huang等人根据人类视觉系统对图像的感知变化是一种趋向于S型曲线的方 程,进而提出了使用S型曲线方程来压缩图像的动态范围。S型曲线方程如下: 

           通常a,b,c,d的取值为1。 S值域范围在[0,1]之间。它的曲线如下图所示:

        从S函数曲线图分析可知,当x的取值在[-5,5]之间的时候,函数的 值变化较大。因此利用S曲线方程可以得到平滑的处理效果,并将图像的亮度范围压缩至[0,1 ]之间,使其能够在低动态范围显示设备上正常显示。

        基于S曲线方程的色调映射算法主要思想是根据图像的平均对数亮度值作为参 数对图像进行全局压缩,平均对数亮度值计算如式所示: 

        其中Lw(x,y)是图像的亮度,\delta是一个较小的整数,主要是为了防止求出的亮度趋近于负无穷。获得平均亮度之后,对图像动态范围进行压缩:

        Lw为图像的像素值。经过该算法映射后的图像能够有比较好的视觉效果,保留图像的大部分细节,但是图像的对比度有一定的下降,并且存 在图像颜色的失真。 

2、基于自适应对数

        人类视觉系统对亮度的感知曲线趋近于对数变换函数,因此在理论上通过对 数变换对HDR图像进行动态范围压缩获得质量较高的图像,该对数模型如式 所示: 

        

        其中Lw为像素值。上式是根据人眼视觉模型提出 得简单色调映射算法,处理效果不佳,在此基础上有学者作了进一步改进, 提出了新的对数方程。下式中基数的选择直接影响图像对数变化后 对比度的效果,选择的不同基数,图像对数变换后的效果也不同。 

         

        exposure为相机的曝光时间。Ldmax为显示设备所能显示的最大亮度。式中基数是根据图像中侮个像素的亮度值进行自动调节的,且基数的取值范 围在2-10之间变化,算法采用的自适应的对数基数方程如下式所示。  

        式子中参数b为用户可调节参数,对明亮和昏暗影响比较显著,根据实验参数I, 一般可取的值为(0.5,1)。 自适应对数色调映射算法是根据人眼视觉模型提出的一种全局色调映射算法,处 理之后图像符合人眼的视觉模型曲线,整体明亮程度适中,但是图像丢失了一些细节信息。  

3、基于直方图

        

最后一种基于数字图像处理的算法是直方图校准算法,在这种算法中,也加入了一些人类视觉感知系统的理论应用。Larson将传统的直方图均衡技术进行了修改和调整,使它能够用于色调映射技术上,Larson同时也在其映射算法中模拟了人类视觉系统的一些特性。首先,这种方法要计算输入图像的灰度直方图I,并在对数域内使用二进制数 nbin 表示。Larson通过实验证明,最多需要100个二进制数就足够准确地表示结果,此时,累计直方图P表示如下:

         其中x是二进制数,这里需要注意的是累计直方图是一个积分形式,而灰度直方图是它在适宜尺度下的导数:

        随后,灰度直方图需要均衡化,传统的均衡化对比度方法如下:

         这种操作因为只利用了很少的点进行区域内的色度域压缩并用最中间的点进行拓展,所以会引起图像中一大片区域的对比度失真,因此他们使用了一种直接的方法,可以用下式表示:

        

         综合上面的三个式子,我们可以得到:

        

         上式可以简化为:

         因此,当上式的条件无法满足时,对比度的失真就产生了,解决方法就是截断f(x),不过这种操作需要迭代的进行,以避免改变T和c。这种算法引入了一些模拟人类视觉系统的机制,例如对比度、锐度和颜色敏感度等,这些都是受启发于Ferwerda之前的工作。

        总的来说,这种色调映射算法提供了一种改进HDR图像的直方图均衡方法,可以提供效果更好的动态范围压缩以及良好的整体对比度。

三、局部色调映射(local tone mapping)

        局部色调映射又叫做空域变化算法,它与空域不变算法不同的地方在于,空域不变算法不考虑像素位置,像素值的映射是单一映射,而空域变化算法需要根据像素 邻域的局部特征将图像划分多个区域,然后根据各个区域的相关特征进行色调映射, 像素值的映射可能是一对多或多对一的映射。

        空域变化算法相对于空域不变算法的优 势在于它是根据图像局部特征进行了色调映射,经过空域变化算法处理之后的图像不 仅亮度得到了压缩,同时还具有较好的视觉效果,保持了较高的局部对比度和细节信 息,因而图像的质量较高,但同时也增加时间复杂度和空间复杂度,并且图像中还会 出现光晕、虚假轮廓以及噪声等。

         空域变化算法是目前最常用的色调映射算法,它们通常是基于分层模型的算法, 这类算法模型如下图所示,首先将图像分解为高频分量、低频分量以及颜色分量, 然后对低频分量进行色调映射,最后合成这些分量得到映射后图像:

1、基于双边滤波

        2002 年,Durand 和 Dorsey 提出了一种基于双边滤波特性的色调映射算法,此算法通过对图像进行双边滤波,将图像分成基层和细节层,然后仅对基层进行色调映射,再将色调映射后的基层同细节层相加得到了压缩后的图像。因此,此算法不仅压缩了图像的动态范围,又保存了原始图像的边缘信息。

        Durand 算法的基本思想可用下图表述。首先将一副HDR 图像的灰度信息和色彩信息分开,形成一副灰度图(Intensity)和色域图(Chromaticity)。然后,对灰度图使用双边滤波将图像的细节信息分出来,得到细节层和基层,对基层进行色调映射后在结合分离出来的图像细节信息和色彩信息便可得到经Durand 算法色调映射后的图像。

双边滤波见数字图像处理——2D降噪 

        对于一副HDR 图像,若它有RGB 三个通道的分量,则可以通过如下公式得到HDR 图像的灰度图:

        然后对L 取对数,便可得到对数域下的灰度图,用LogL 表示,即:

        接下来对LogL 进行双边滤波,得到Log 域下的基层图像,即:

        对Log 域下的基层图像取指数,将其转换回原域下的基层图像:

  

        再对Lbase 进行色调映射,得到色调映射后的基层图像为Ld 。然后还需要求出图像的细节层,可用如下公式求出:

        最后,将映射后的基层图像Ld、细节层图像Ldetail 以及色域图相结合,便可得到经压缩后的HDR 图像,可通过如下公式得到映射后的彩色图像: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值