Skip to content

Latest commit

 

History

History
179 lines (173 loc) · 35.1 KB

第20章 色调调节.md

File metadata and controls

179 lines (173 loc) · 35.1 KB

边学边翻译,督促自己不能落下,同时也留点记忆

第二十章 色调调节

    正如在第19章中所讨论的,人类的视觉系统能适应广泛的观看条件。在正常观察下,我们可以分辨出大约4到5个对数单位的照度范围,也就是说,我们可以看到细节的最亮和最暗区域之间的比例可能高达100,000:1。通过适应过程,我们可以适应更大范围的光照。我们把与人类视觉系统能力相匹配的图像称为高动态范围。     视觉模拟通常产生高动态范围的图像(Ward Larson & Shakespeare, 1998)。图像捕捉技术的最新发展允许多次曝光对齐并重新组合成单一的高动态范围图像(Debevec & Malik, 1997)。多重曝光技术也适用于视频。此外,我们希望未来的硬件能够直接拍摄或拍摄高动态范围的场景。一般来说,我们可以把每个像素看作三个浮点数的三元组。     随着创建高动态范围图像变得越来越容易,显示这类数据的需求也在迅速增加。不幸的是,大多数当前的显示设备,显示器和打印机,只能显示大约2 log单位的动态范围。我们认为这种装置的动态范围很低。目前存在的大多数图像都是用每字节每像素每颜色的通道来表示的,它与当前的显示设备相匹配,而不是与它们所代表的场景相匹配。     通常,低动态范围的图像不能在不丢失信息的情况下表示场景。一个常见的例子是一个有出口的室内房间通过窗户可以看到门区域。人们很容易看到室内和室外的细节。传统的照片通常不能捕捉到这一系列的信息,摄影师必须选择是适当地暴露在室内还是室外的场景(见图20.1)。这些决定可以通过使用高动态范围成像和使用本章描述的技术准备这些图像来避免(见图20.2)。     有两种策略可用于显示高动态范围的图像。首先,我们可以开发可以直接适应高动态范围的显示设备(Seetzen Whitehead &XXX,2003;Seetzen等人,2004)。其次,我们可以准备高动态范围的图像,以便在低动态范围的显示设备上显示(Upstill,1985)。这是目前比较常见的方法,也是本章的主题。尽管我们预见到了这个高度动态范围显示设备将在不久的将来得到广泛应用。需要压缩动态范围,一个形象可能会消失,但不会消失消失。特别是像这本书这样的印刷媒体,就其本质而言,低动态范围。     为了在低动态范围显示设备上显示而压缩图像值的范围称为音调映射或音调再现。一个简单的压缩函数是将图像规范化(参见图20.3(左))。这构成了一个线性缩放,只有当图像的动态范围仅略高于显示设备的动态范围时,它才趋于充分。对于具有较高动态范围的图像,小的强度差异将被量化到相同的显示值,这样可见的细节就会丢失。在图20.3(中间)中,所有大于用户指定最大值的像素值都被设置为这个最大值(即,它们被夹紧)。这使得归一化较少依赖于噪声异常值,但在这里我们丢失了图像明亮区域的信息。为了进行比较,图20.3(右)是一个色调映射版本,显示了暗区域和亮区域的细节。     一般来说,线性缩放不适合于色调复制。在色调复制的关键问题是压缩图像,同时保留图像的一个或多个属性。不同的色调复制算法关注不同的属性,如对比度、可见细节、亮度或外观。     理想情况下,在低动态范围显示设备上显示声调映射图像将在观察者中产生与原始场景相同的视觉响应。鉴于显示设备的局限性,这是不可能实现的,尽管我们可以尽可能接近这一目标。     作为一个例子,我们创建了如图20.4所示的高动态范围图像。然后将图像进行声调映射,并在显示设备上显示。然后将显示设备本身放在场景中,这样它就可以显示自己的背景(图20.5)。在理想情况下,显示器应该是透明的ent。取决于色调再现操作器的质量,以及被描绘的场景的性质,这个目标或多或少是可以实现的。


20.1 分类

    尽管可以根据音调再现操作符的目的是保留什么属性,或者它们是为什么任务而开发的来对它们进行分类,但我们还是根据它们的一般技术来对算法进行分类。这将使我们能够显示大量不同操作符之间的差异和相似之处,因此,希望有助于为给定的音调复制任务选择有意义的特定操作符。 我们遵循的主要分类方案取决于这样一种认识,即音调再现运算符是基于从不同学科获得的见解。特别是,一些运算符是基于人类视觉感知的知识。     人类的视觉系统通过位于视网膜上的感光器来探测光线。光被转换成电信号,部分经过视网膜处理,然后传输到大脑。除了视网膜上最初的几层细胞外,被探测到的光所产生的信号都是通过脉冲序列来传输的。信息携带量是这些电脉冲发生的频率。     人类视觉系统所能探测到的光的范围远远大于人类大脑用来传输信息的频率范围。因此,人类视觉系统毫不费力地解决了色调再现问题——将大范围的亮度转换为小范围的脉冲序列频率。因此,模拟人类视觉系统的相关方面是一种有价值的音调复制方法;这种方法在第20.7节中有更详细的解释。     第二类算符以物理学为基础。光在被光感受器吸收之前与表面和体积相互作用。在计算机图形学中,光的相互作用通常用渲染方程来建模。对于纯漫射表面,这个方程可以简化为入射到表面的光(照度)与该表面的反射光能力(反射率)之间的乘积(Oppenheim, Schafer, & Stockham, 1968)。     由于反射率是表面的被动属性,对于漫反射表面,根据定义,它是低动态范围-通常在0.005到1之间(Stockham,1972)。一个表面的反射率不能大于1,因为这样它反射的光会比入射到表面上的光多。另一方面,照度可以产生任意大的值,只受光源的强度和接近程度的限制。     因此,图像的动态范围主要由照度分量决定。面对漫反射的场景,一种可行的色调复制方法可能是将反射率从照度中分离出来,压缩照度分量,然后重新组合图像。     然而,假设场景中的所有表面都是扩散的通常是不正确的。许多高动态范围图像描述高光和/或直接可见光源(图20.3)。镜面反射的亮度可能几乎与它反射的光源一样高。     目前使用的各种色调再现算子将图像分为高动态范围的基本层和低动态范围的细节层。如果所描绘的场景完全弥漫,这些层将代表照度和反射率。对于包含直接可见光源或镜面高光的场景,分离成基本层和细节层仍然允许有效的色调再现操作符的设计,尽管不能将直接的意义附加到单独的层。这些操作符将在第20.5节中讨论。


20.2动态范围

    传统的图像存储为红、绿、蓝三种成分,每像素一个字节。这种编码所提供的动态范围取决于最小和最大可表示值之间的比值,以及连续值之间的步长。因此,对于低动态范围的图像,每个颜色通道只有256个不同的值。     高动态范围图像编码的可能值明显更大;可表示的最大值可能要大得多,而连续值之间的步长可能要小得多。文件大小动态高因此,范围图像通常也更大,尽管至少有一个标准(OpenEXR高动态范围文件格式(Kainz, Bogart, & Hess, 2003)包含一个非常强大的压缩方案。     限制文件大小的另一种方法是对高动态数据应用音调再现运算符。然后可以将结果编码为JPEG格式。此外,输入图像可按像素被声调映射图像分割。这种划分的结果可以被下采样,并作为少量数据存储在同一JPEG图像的标题中(G. Ward & Simmons, 2004)。这种子带编码图像的文件大小与传统的JPEG编码图像的顺序相同。显示程序可以直接显示JPEG图像,也可以通过将声调映射图像与存储在标头中的数据相乘来重建高动态范围图像。     一般来说,最小步长和最小和最大可表示值之比的组合决定了图像编码方案提供的动态范围。对于计算机生成的图像,在将图像写入文件或显示在屏幕上之前,通常将图像存储为浮点值的三元组,尽管有更有效的编码方案(Reinhard, Ward, Debevec, & Pattanaik, 2005)。由于大多数显示设备仍然配备了八位D/A转换器,我们可以将音调再现视为浮点数到字节的映射,这样结果就可以在低动态范围显示设备上显示。     单个图像的动态范围通常较小,由场景中发现的最小和最大亮度决定。因此,一种测量图像动态范围的简单方法可以计算图像最大像素值和最小像素值之间的比值。通过忽略一小部分最暗和最亮的像素,可以降低对异常值的敏感度。     同样的比值也可以表示为对数域中的差值。这种方法对异常值不太敏感。本页页边空白处显示的图像是具有不同动态范围的图像示例。注意,在这种情况下,夜景的动态范围并不比白天的小。虽然夜景中所有的值都变小了,但最大值和最小值的比值却没有变小。     然而,记录设备或渲染算法可能会引入噪声,从而降低有用的动态范围。因此,对图像动态范围的测量应考虑噪声因素。因此,更好的测量动态范围的方法是用信号处理中使用的以分贝表示的信噪比。


20.3颜色

    色调再现操作符通常压缩亮度值,而不是直接处理彩色图像的红色、绿色和蓝色组件。在这些亮度值被压缩成显示值La(a, y)后,可以通过保持颜色通道之间的比例与压缩前相同(使用s = 1)来重建彩色图像(Schlick, 1994b): $$ I_{r,d}(x,y) = (\frac{I_r(x,y)}{I_v(x,y)})^s L_d(x,y),\ I_{g,d}(x,y) = (\frac{I_g(x,y)}{I_v(x,y)})^s L_d(x,y),\ I_{b,d}(x,y) = (\frac{I_g(x,y)}{I_v(x,y)})^s L_d(x,y). $$     结果经常出现过饱和,因为人类的颜色感知是非线性的,相对于整体亮度水平。这意味着,如果我们在昏暗的环境中观看显示器上明亮的户外场景,我们的眼睛会适应昏暗的环境,而不是室外照明。通过保持颜色比例不变,我们没有考虑到这种影响。     或者,饱和常数s可以选择小于1。这样的每通道伽马校正可以使结果饱和度降低到适当的水平,如图20.11所示(Fattal, Lischinski, & Werman, 2002)。一种更全面的解决方案是将色彩外观建模领域的思想融入到色调再现操作中(Pattanaik, Ferwerda, Fairchild, & Greenberg, 1998;Fairchild & Johnson, 2004;Reinhard & Devlin, 2005)。     最后,如果已经有具有代表性的配色方案的示例图像,则可以将该配色方案应用到新的图像上。这种图像之间的颜色映射可用于细微的颜色校正,如饱和度调整或更有创意的颜色映射。映射通过将源图像和目标图像转换到一个与颜色相关的空间来进行。在这样的颜色空间中,每个颜色通道中的像素值可以独立处理,而不引入太多工件(Reinhard, Ashikhmin, Gooch, & Shirley,2001).     在与颜色相关的颜色空间中,将一个图像的颜色映射到另一个图像是很简单的:分别为三个颜色通道计算源图像和目标图像中所有像素的平均值和标准差。然后,移动和缩放目标图像,以便每个颜色通道的平均值和斯坦目标图像的偏差为与源图像相同。结果然后通过变换得到图像从无关的颜色空间到RGB和夹紧负像素到零。图像的动态范围可能会因为申请的结果而改变通过这个算法。因此,请重新查看图20.12。一个合适的与颜色相关的空间是18.2.4节中的对立空间。     对图20.12中的图像应用这种颜色变换的结果如图20.13所示。


20.4图像形成

    目前,我们假设图像是由光在表面上漫反射形成的。在第20.5节和20.6节中,我们将这种限制放宽到直接描述光源和高光的场景。每个像素的亮度L由以下乘积近似表示: $$ L_v(x,y)=r(x,y)E_v(x,y). $$     这里,r表示表面的反射率,E表示照度。下标u表示我们使用的是光度加权量。或者,我们可以把这个表达式写成对数定义域(Oppenheim等,1968): $$ \begin{aligned} D(x,y) &=log(l_v(x,y))\ &=log(r(x,y))E_v(x,y)\ &=log(r(x,y))+log(E_v(x,y)) \end{aligned} $$     摄影透明装置通过改变材料的密度来记录图像。在传统摄影中,这种变化与亮度有对数关系。因此,与摄影中常见的做法类似,我们将使用术语密度表示(D)来表示对数亮度。当用对数域表示时,反射率和照度成为相加的。这促进了这两个组分的分离,尽管分离反射率或照度是一个限制不足的问题。实际上,分离只在一定程度上是可能的,并取决于图像的组成。尽管如此,色调复制可以基于图像形成的这两个组成部分的分离,如下面的两个部分所示。


20.5基于频率的运算符

    对于典型的漫反射场景,由于纹理表面和表面边缘的存在,反射率分量倾向于显示高的空间频率。另一方面,照度在空间上趋向于一个缓慢变化的函数。     由于反射率是低动态范围,照度是高动态范围,我们可以尝试将这两个组成部分分离。反射率和照度的频率依赖性提供了一个解决方案。例如,我们可以计算图像的傅里叶变换,只衰减低频部分。这将压缩照度分量,同时保留反射率分量基本上不受影响——我们所知的第一个数字音调复制操作符采用了这种方法(Oppenheim et al., 1968)。     最近,其他运营商也遵循了这一思路。特别地,使用双边和三边滤波器将图像分离为基本层和细节层(Durand & Dorsey, 2002;Choudhury & Tumblin, 2003)。这两个滤波器都是保边平滑算子,可以以各种不同的方式使用。对密度图像应用cdg - precrving平滑算子会得到一个模糊的图像,其中锋利的边缘仍然存在(图20.14(左))。我们可以把这样的图像看作基础层。如果我们按像素将高动态范围图像除以基本层,我们得到一个包含所有高频细节的细节层(图20.14(右))。     对于漫反射场景,基本层和细节层类似于照度和反射率的表示。对于描述亮点和光源的图像,这种类比并不成立。然而,将一幅图像分离成基片和基片细节层是可能的,不管图像的内容。通过压缩将基层再组合成压缩后的密度图像,低dy纳米范围密度图像可以被应用(图20.15)。     XXXXXXXXXXXXXX可用于空间变化或局部音调再现算子。我们将在第20.7节描述双边和三边过滤器的使用。


20.6梯度域操作符

    上一节中关于基于频率的算子的论证也适用于梯度场。假设没有直接可见的光源,反射率分量将是梯度场中带有尖峰的常数函数。同样,照度分量会在各处造成小的梯度。     在典型的场景中,人类通常能够区分照度和反射率。对光源折现后的表面反射率的感知称为明度。为了评估只描述漫反射表面的图像的亮度,B. K. P. Horn第一个使用梯度场分离反射率和照度(Horn, 1974)。他使用简单的阈值法去除所有小的梯度,然后对图像进行集成,这涉及到使用完全多重网格法求解Poisson方程(Press, Teukolsky, Vetterling, & Flannery, 1992)。     结果与保边平滑滤波器相似。这是根据预期,因为奥本海姆基于频率的算子在相同的场景反射率和图像形成的假设下工作。霍恩的作品直接针对的是“蒙德里安的迷你世界”,这是类似荷兰著名画家皮埃·蒙德里安(Piet Mondrian)抽象画的扩散场景的简化版本。     Horm的工作不能直接用作色调再现算子,因为大多数高动态范围图像描述光源。然而,一个相对小的变化将把这个工作变成一个合适的色调再现操作符。如果光源或镜面被描绘在图像中,那么大的梯度将与光源的边缘和高光相关联。这使得图像具有很高的动态范围。一个例子如图20.16所示,其中斯诺克球上的高光引起了尖锐的渐变。     因此,我们可以通过衰减大的梯度来压缩高动态范围的图像,而不是阈值梯度场。Fattal等人采用了这种方法,他们表明通过集成压缩梯度场可以成功地压缩高动态范围图像(图20.17)(Fattal等人,2002)。Fattal的梯度域压缩不限于漫景。

20.7 空间算符

    在接下来的小节中,我们将讨论直接对像素应用压缩而不转换到其他域的音调再现操作符。通常要区分全局和本地操作。前者中的色调复制操作符根据压缩函数改变每个像素的亮度值,压缩函数对每个像素都是相同的。术语全局来源于这样一个事实,即许多这样的函数需要锚定到通过分析完整图像确定的一些值。在实际操作中,大多数操作人员使用几何平均Le来控制压缩: $$ L_v = exp(\frac{1}{N}\sum_{x,y}log(\varepsilon+L_v(x,y))). \tag{20.1} $$     在式(20.1)中,引入了一个小常数6,以防止在存在黑色像素时,平均值变为零。几何平均值通常映射到一个预定义的显示值。将几何平均值映射到不同显示值的效果如图20.18所示。或者,有时使用最小或最大的图像亮度。全局算符设计中面临的主要挑战在于压缩函数的选择。     另一方面,局部算子根据特定的压缩函数压缩每个像素,该压缩函数由来自相邻像素的选择的信息调制而成,而不是整个图像。其基本原理是,明亮区域内的明亮像素可能与昏暗区域内的明亮像素被感知到的不同。本地运营商发展中的设计挑战包括选择压缩函数,每个像素的局部邻域大小,以及使用局部像素值的方式。通常,局部运算符比全局运算符获得更好的压缩效果(图20.19),尽管计算成本更高。     全球和本地的操作人员都经常受到人类视觉系统的启发。大多数算符使用两个不同的压缩函数之一,它与局部和全局算符之间的区别正交。显示值La(x, y)最常由图像亮度Lv (x, y)由以下两种函数形式: $$ L_d(x,y)=\frac{L_v(x,y)}{f(x,y)},\tag{20.2} $$ $$ L_d(x,y)=\frac{L_v(x,y)}{L_v(x,y)+f^n(x,y)}.\tag{20.3} $$     在这些方程中,f(a, y)既可以是一个常数,也可以是一个随像素变化的函数。在前一种情况下,我们有一个全局算符,而空间变化的函数f(x, y)产生一个局部算符。指数n通常是一个常数,对于特定的算子是固定的。     式(20.2)将每个像素的亮度除以从完整图像或局部邻域提取的值。式(20.3)在对数线性曲线上有一条s形曲线,因此称为s型曲线。这个函数形式符合从测量各种物种的光感受器对闪光的电响应得到的数据。在接下来的小节中,我们将讨论这两种函数形式。


20.8 部门

    每个像素可以除以一个常数,以使高动态范围的图像处于可显示范围内。这样的划分基本上构成了线性缩放,如图20.3所示。虽然图20.3显示了特定的线性缩放,但这种方法可以通过使用心理物理数据来提炼(20.2)式中的缩放常数f(a, y) = k (G. J. Ward, 1994;Ferwerda, Pattanaik, Shirley,和Greenberg, 1996)。     另外,还有几种方法可以计算空间变化的除数。在每一种情况下,f(x, y)是图像的模糊版本,即f(a, y) = Lblur(a, y)。模糊是通过用高斯滤波器对图像进行卷积来实现的(Chiu et al., 1993;Rahman, Jobson, & Woodell, 1996)。此外,通过模糊图像计算f(r, y)可能与白点的偏移相结合,以达到颜色外观建模的目的(Fairchild & Johnson, 2002;g.m.约翰逊,费尔柴尔德,2003;Fairchild & Johnson, 2004)。     高斯滤波器的大小和权重对最终的可显示图像有深远的影响。高斯滤波器具有选择加权局部平均的作用。然后,色调复制就是将每个像素用其相关的加权局部平均分割。如果过滤器内核的大小选择过小,那么就会出现晕光器(图20.20(左))。晕是局部运算常见的问题,当音调映射依赖于除法时尤其明显。一般来说,这种方法可以通过使滤波器内核变大(图20.20(右))来最小化光晕工件。通过选择至少为图像的四分之一的滤波器大小,可以获得合理的结果。有时甚至需要更大的过滤器内核来最小化工件。注意,在极限情况下,滤镜大小与图像本身一样大。在这种情况下,局部操作符变成全局的,通常由局部方法提供的额外压缩就失去了。     在函数形式中,每个像素被相同空间位置的高斯模糊像素划分,因此需要在压缩量和伪影严重程度之间进行不必要的权衡。


###20.9 Sigmoids     式(20.3)采用了与简单除法不同的函数形式,因此,在压缩量、工件的存在和计算速度之间提供了不同的权衡。     sigmoid有几个理想的性质。对于非常小的亮度值,映射是近似线性的,因此在图像的黑暗区域对比度是保留的。函数在1处有一条渐近线,这意味着输出映射总是在0和1之间有界。     在式(20.3)中,函数f(r, y)可以计算为全局常数,也可以计算为空间变化函数。根据电生理学的惯例,我们称f(r, y)为半饱和常数。它的值决定了输入图像中哪些值在声调映射后是最佳可见的。特别地,如果我们假设指数n等于1,那么等于半饱和常数的亮度值将被映射到0.5。选择不同的半饱和常数的效果如图20.21所示。     函数f(z, y)可以用几种不同的方法计算(Reinhard et al., 2005)。在其最简单的形式中,f(r, y)被设置为Le/k,因此几何平均值映射到用户参数k(图20.22)(Reinhard et al., 2002)。在这种情况下,k的一个好的初始值是0.18,尽管对于特别明亮或黑暗的场景,这个值可能会升高或降低。它的价值可以从图像本身来估计(Reinhard, 2003)。式(20.3)中的指数n可设为1。     在这种方法中,半饱和常数是几何平均值的函数,因此算子是全局的。这个全局算子的一个变体通过线性插值来计算半饱和常数几何平均和各像素亮度: $$ f(r, y) = a L_v (x, y) + (1 - a) L_v。 $$     插值由用户参数a控制,该参数可以改变可显示图像的对比度(图20.23)(Reinhard & Devlin, 2005)。更多的对比意味着在明暗区域可见的细节更少,反之亦然。这种插值可以被看作是完全全局算子和完全局部算子之间的折中方案,它在两个极端之间进行插值,而不借助于昂贵的模糊操作。     虽然运算符通常压缩亮度值,但这种特殊的运算符可以扩展为包含一种简单形式的颜色适应。因此,它提供了一个机会来调整通常与色调映射相关的饱和度水平,如本章开始所讨论的。 不是只压缩亮度通道,而是对三个颜色通道中的每一个进行s型压缩: $$ I_{r,d}(x,y)=\frac{I_r(x,y)}{I_r(x,y)+f^n(x,y)},\ I_{g,d}(x,y)=\frac{I_g(x,y)}{I_g(x,y)+f^n(x,y)},\ I_{b,d}(x,y)=\frac{I_b(x,y)}{I_b(x,y)+f^n(x,y)}, $$     将f(z, y)的计算修改为几何平均亮度与像素亮度之间以及每个独立颜色通道与像素亮度值之间的双线性插值。因此,我们计算几何平均亮度值Le,以及红色,绿色和蓝色通道(I,, Ig,和Ib)的几何平均亮度值。根据这些值,我们分别为每个像素和每个颜色通道计算f(r, y)。我们来看看这个方程对于红色通道(fr(x, y)): $$ G_r(z, y) = cI_r(z, y) + (1 - c) L_v(x, y),\ G_r(r, y) = cI_r + (1 - c) L_v,\ f_r(r, y) = a G_r(x, y) + (1 - a) G_r(r, y)。 $$     插值参数a像以前一样控制对比度的大小,而新的插值参数c允许简单的颜色校正形式(图20.24)。     到目前为止,我们还没有讨论式(20.3)中指数n的值。电生理学研究报告的值在n = 0.2到n = 0.9之间(Hood, Finkelstein, & Buckingham, 1979)。虽然指数可以由用户指定,但对于各种各样的图像,我们可以通过以下经验方程从几何平均亮度Le和图像中的最小和最大亮度(Lmin和Lmax)中估计一个合理的值: $$ n = 0.3+0.7(\frac{L_{max}-L_v}{L_{max}-L_{min}})^{1.4} $$     到目前为止所展示的乙状形压缩的几种变体在本质上都是全局的。这样做的优点是计算速度快,非常适用于中动态范围高的图像。对于非常高动态范围的图像,可能需要使用局部运算符,因为这可能会提供一些额外的压缩。一种扩展s形压缩的直接方法用空间变化的函数替换全局半饱和常数,可以用几种不同的方法计算。     换句话说,函数f(r, y)到目前为止被假设为常数,但也可以计算为空间局部的平均值。也许实现这一点最简单的方法是再次使用高斯模糊图像。每一个像素模糊图像表示一个局部平均值,可以视为半饱和常数的合适选择。     与上一节中讨论的基于除法的运算符一样,我们必须考虑光环工件。然而,当一幅图像被自身的高斯模糊版本所除时,高斯滤波器核的大小需要很大,以使光晕最小化。如果sigmoid与空间变化的半饱和常数一起使用,高斯滤波核需要变小,以最小化伪象。这是一个显著的改进,因为少量的高斯模糊可以直接在空间域有效地计算。换句话说,没有必要诉诸昂贵的傅里叶变换。在实践中,只有几个像素宽度的滤波器内核足以抑制显著的伪影,同时在色调映射图像中产生更多的局部对比度。 高斯模糊的一个潜在问题是滤镜模糊了鲜明的对比边缘,就像它模糊了小细节一样。在实践中,如果有 XXXXXXXXXXXXXXX对比度。在这种情况下,光晕仍然会出现,但它们的大小使它们通常不被注意到,反而被认为是增强对比。     另一种模糊图像的方法是,在最小化附近大对比度步骤的负面影响的同时,避免模糊这些边缘。一种简单但计算成本高的方法是计算一堆具有不同内核大小的高斯模糊图像。对于每个像素,我们可以选择没有显著梯度重叠的最大高斯分布。在一个相对均匀的邻域中,高斯模糊像素的值应该是相同的,而不考虑滤波器核的大小。因此,用两个不同的高斯滤波的像素之间的差值应该近似为零。只有当更宽的过滤器内核重叠时,这种差异才会显著改变具有包含鲜明对比步长的邻域,而较小的过滤器内核则没有。     因此,通过检查不同核大小下高斯函数的差异,可以找到不包含锋利边缘的像素周围的最大邻域。对于图20.25所示的图像,为每个像素选择的比例如图20.26(左)所示。摄影色调复制算子(Reinhard等人,2002年)和Ashikhmin的算子(Ashikhmin, 2002年)都采用了这种音阶选择机制。 一旦每个像素的适当邻域已知,该邻域的高斯模糊平均Lblur(如图20.26右侧所示)可用于控制半饱和常数,例如摄影色调复制算子所使用的: $$ L_d=\frac{L_w}{1+L_{blur}}. $$     另一种可能更好的方法是使用边缘保留平滑运算符,这种运算符是专门为去除小细节而设计的,同时保持鲜明的对比。一些这样的滤波器,如双边滤波器(图20.27),三边滤波器,苏珊滤波器,LCIS算法和平均位移算法是合适的,尽管其中一些算法的计算成本很高(Durand & Dorsey,2002;乔杜里和Tumblin, 2003年;Pattanaik & Yee,2002年;Tumblin & Turk, 1999;Comaniciu & Meer, 2002)。


20.10 其他方法

    尽管前面的章节共同讨论了迄今为止大多数的音调复制操作符,但仍有一两个操作符不直接适合上述需求血淋淋的。其中最简单的是对数压缩的变体,另一种是基于直方图的方法。     动态范围缩小可以通过取对数来完成,只要这个数大于1。任何正数都可以在0和I之间用下面的公式进行非线性缩放: $$ L_d(x,y)=\frac{log_b(1+l_v(x,y))}{log_b(1+L_{max})} $$     虽然上面对数的底b没有指定,但任何底都可以。这种选择对数底数的自由可以用来根据输入亮度改变底数,从而实现与被压缩图像更好匹配的运算符(Drago, Myszkowski, Annen, & Chiba, 2003)。该方法采用Perlin和Hoffert的偏置函数,取用户参数p(Perlin & Hoffert, 1989):     使底b依赖于亮度,并在2到10之间平滑地插值底,上面的对数映射可以被细化: $$ L_d(x,y)=\frac{log_b(1+l_v(x,y))}{log_b(1+L_{max})}\cdot \frac{1}{log_{10}(2+8((\frac{L_c(x,y)}{L_{max}})^{log_{10}(p)/log_{10}(1/2)}))} $$     对于用户参数p,初始值约为0.85往往会产生合理的结果(图20.28(右))。     或者,音调再现可能基于直方图均衡化。传统直方图均衡化的目的是使每个亮度值在输出图像中出现的概率相等。Greg Ward以一种保持对比的方式改进了这种方法(Ward Larson, Rushmeier, & Piatko, 1997)。     首先,根据高动态范围图像的亮度计算直方图;从这个直方图中,计算一个累积直方图,使每个bin包含亮度值小于或等于bin表示的亮度值的像素的数量。累积直方图是一个单调递增函数。因此,将每个料仓中的值与每个料仓所表示的亮度值进行绘制,就得到了一个可以被视为亮度映射函数的函数。缩放此函数,使垂直轴跨越显示设备的范围,产生一个音调再现运算符。这种技术被称为直方图均衡。     Ward进一步改进了该方法,确保该函数的梯度不超过1。这意味着,如果累积直方图中相邻值之间的差异太大,这个差异将被固定为1。这避免了输入亮度的微小变化可能导致输出图像的巨大差异的问题。换句话说,通过将累积直方图的梯度限制为1,对比不会被夸大。得到的算法称为直方图调整(见图20.29)。


20.11 夜间色调映射

    到目前为止所讨论的色调再现操作符几乎都假设图像表示光视条件下的场景,即在正常光线水平下看到的场景。对于暗暗场景,即非常黑暗的场景,人类的视觉系统表现出明显不同的行为。特别是,感知对比度较低,视力(即我们能区分的最小细节)较低,所有东西都呈现出略显蓝色的外观。     为了使这些图像能够在放置在光照明条件下的显示器上正确地观看,我们可以对图像进行预处理,使其看起来像是适应了非常黑暗的观看环境。这种预处理通常以亮度和对比度的降低、图像的去饱和度、蓝移和视觉敏锐度的降低为形式(Thompson, Shirley, & Ferwerda, 2002).     典型的方法是从将图像从RGB转换为XYZ开始的。然后,可以计算每个像素的scotopic亮度V: $$ V=Y\left[1.33\left( 1+\frac{Y+Z}{X}\right)-1.68\right] $$     然后,这个单通道图像可以被缩放并乘以经验选择的蓝灰色。示例如图20.30所示。如果一些像素在光的范围内,那么夜晚的形象可能是林创作的早期混合蓝灰色图像用输入图像。分数到每个像素的使用依赖于V。     视力的丧失可能是通过低通过滤的夜晚年龄,虽然这会给出一个incor 矩形模糊感。     最后,20.3节中介绍的颜色转移技术也可用于将白天的图像转换为夜景。这种方法的有效性取决于从其中转移颜色的合适的夜间图像的可用性。例如,将图20.12中的图像转换为图20.31中的夜间图像。


20.12 讨论

    由于全局照明算法自然产生高动态范围的图像,直接显示结果图像是不可能的。与其使用线性缩放或夹紧,不如使用音调再现算子。任何色调复制算子都比不使用色调复制算子好。根据应用程序的要求,几种操作符中的一种可能是合适的。     例如,实时渲染应用程序可能应该求助于一个简单的sigmoidal压缩,因为这些足够快,也可以实时运行。     此外,他们的视觉质量往往足够好。直方图调整技术(Ward Larson et al., 1997)可能也足够快,可以进行实时操作。对于具有非常高动力范围的视场,使用局部算子可以获得更好的压缩效果。然而,计算成本通常非常高,使得这些运算符只适合于非交互式应用程序。由于这种技术所提供的优化(Durand & Dorsey, 2002),双边滤波器在局部操作中是最快的。     这个滤波器本身作为一个音调再现算子是很有趣的,或者它可以用来计算在s形压缩函数中使用的局部适应水平。在任何情况下,过滤器尊重鲜明的对比变化和平滑较小的对比。这是一个重要的特性,可以帮助最小化光晕工件,这是本地操作人员常见的问题。     另一种最小化光晕伪影的方法是在摄影色调再现算子中使用的尺度选择机制(Reinhard等人,2002年),尽管这种技术计算速度较慢。     综上所述,虽然目前有大量的音调再现操作符可用,但只有少数从根本上不同的方法存在。傅里叶域算子和梯度域算子都来源于形象的形成。空间域运算符在本质上要么是空间变量(局部),要么是全局的。这些操作通常基于对人类视觉系统(以及许多其他物种的视觉系统)的研究所得的见解。