3.3 Local Operators(局部色调算子)

目录

 

3.3局部色调算子

3.3.1空间非均匀尺度

3.3.2摄影色调复制


3.3Local Operators(局部色调算子)

通过尝试重现局部和全局对比度,局部比全局提高了色调映射图像的质量。 局部色调映射考虑到要进行色调映射的像素周围的邻域的局部统计信息来实现。 但是,必须仔细选择邻居,即仅选择相似像素或属于相同区域的像素。 否则,局部统计数据将产生光晕伪影; 参见图3.10(b)。 这通常发生在边缘周围,这些边缘将强度和/或颜色值不同的区域分开。 注意,当需要注意特定区域时,有时会需要光晕[235],但是如果该现象不受控制,则可能会产生令人不适的图像。

3.3.1空间非均匀尺度

Chiu等人[90]提出了第一个试图保持局部对比的算子。TMO通过相邻像素的平均值来缩放场景亮度,定义为:

其中s(x)是用于计算邻近像素局部平均值的尺度函数,定义为:

其中Gσ是一个高斯滤波器,k是一个定标最终输出的常数。 该运算符的一个问题是,虽然较小的σ值会产生非常低的对比度图像(请参见图3.10(a)),但是较高的σ值会在图像中产生光晕; 参见图3.10(b)。 光晕在非常亮和非常暗的区域之间的边缘处引起,这意味着s(x)> Lw(x)-1。 为了减轻这种情况,如果s(x)> Lw(x)-1,则将像素值钳位到Lw(x)-1。 在这一点上,s仍可能具有陡峭梯度形式的伪影,其中s(x)= Lw(x)-1。 一种解决方案是使用3×3高斯滤波器迭代平滑。 参见图3.10(d)。 最后,操作员通过模拟眩光来掩盖其余的光晕伪影,该眩光由低通滤波器建模。 

运算符提供了第一个局部解,但是减轻晕圈(在平滑步骤中进行约1,000次迭代)在计算上非常大。 还有许多参数需要调整,最终光晕会降低,但由于夹紧,平滑步骤和眩光而无法完全消除。

图3.10。 Chiu等人介绍的本地TMO示例。 [90]应用于地窖HDR图像:(a)σ= 4的简单算子。在保留局部对比度的同时,全局对比度完全丢失,从而导致色调映射图像的平整外观。 (b)σ= 32的简单算子。在这种情况下,会保留局部和全局对比度,但是光晕在图像中非常明显。 (c)具有夹紧(2,000次迭代)和σ= 32的TMO。减少了光晕,但并未完全消除。 (d)具有眩光模拟和σ= 32和钳制(2,000次迭代)的完整TMO。 请注意,眩光用于尝试掩盖光晕。

清单3.13提供了Chiu等人的运算符[90]的MATLAB代码。完整的代码可以在ChiuTMO.m文件中找到。该方法将比例函数的参数(例如比例因子c k)作为输入。 c sigma代表高斯滤波器Gσ的标准偏差; c钳位,即减少光晕伪像的迭代次数;并且,选择眩光过滤眩光的参数(结构)。第一步是使用函数GaussianFilter.m使用高斯滤波器(方程(3.21)中的Gσ)对亮度L进行滤波,该函数可在文件夹util中找到。过滤结果的倒数存储在变量s中。在c钳位高于0的情况下,将减少晕圈伪影的迭代过程应用于s。在先前的滤波过程(平滑约束)之后,仅对仍未固定为1的像素执行此操作。 indx存储模糊输入HDR亮度中仍高于1的像素索引。为了遵守平滑约束,将索引indx in s的像素替换为变量L inv的值。

变量L inv存储输入HDR亮度的取反值,该值对应于s(x)> Lw(x)-1情况下第一滤波步骤的输出。 这样,仅这些像素值将被迭代过滤。 通过将滤波器H应用于更新的s变量,最终确定平滑步骤。 一旦计算出比例函数并以s存储,就可以通过应用公式(3.21)获得动态范围减小。 如果眩光常数因子大于0,则会计算眩光。这是以经验方式执行的,其中使用文件夹Tmo / util中的函数ChiuGlare.m仅考虑开花效果。

3.3.2摄影色调复制

Reinhard等人介绍了基于摄影原理的局部映射。 [323]。 这种方法模拟了摄影师使用一个多世纪以来的燃烧和闪避效果。 特别是,映射受到亚当斯[4]提出的分区系统的启发。

算子的全局分量是一个主要压缩高亮度值的函数,定义为:

其中Lm是按aL-1 w,H缩放的原始亮度,而a是在摄影类比中为胶片显影选择的曝光量,可以自动估算[321]。 Lw,H是对数平均值,它是场景关键点值的近似值。 键值可以主观指示场景是明亮,正常还是黑暗。 这在区域系统中用于预测场景亮度将如何映射到一组打印区域[323]。请注意,在等式(3.22)中,虽然压缩了较高的值,但其他值则线性缩放。 但是,公式(3.22)不允许烧掉明亮的区域,因为摄影师可以在胶片显影过程中增强对比度。 因此,可以将公式(3.22)修改为:

其中Lwhite是映射到white的最小亮度值,默认为max。如果Lwhite < Lm, max,大于Lwhite的值被夹住(在摄影类比中烧毁)。

图3.11。 Reinhard等人的照相色调再现算子的一个例子。 [323]:(a)Φ= 4,α= 0.05,Lwhite = 106 cd / m2的局部算子方程(3.26)。 (b)Φ= 4,α= 0.05且将Lwhite设置为窗口亮度值的局部算子方程(3.26)。 请注意,此设置会烧尽窗口,为摄影师提供更多控制。

可以为公式(3.22)和公式(3.23)定义本地运算符。 这是通过找到没有锐利边缘的最大局部区域来实现的,从而避免出现光晕伪影。 可以通过比较不同大小的高斯滤波Lm图像来检测该区域。 如果差异很小或趋于零,则没有边缘;反之,则趋于零。 否则有。 比较定义为

其中Lσ(x)=(Lm⊗Gσ)(x)是标度σ的高斯滤波图像,而ǫ是一个大于零的小值。 请注意,对滤波后的图像进行归一化,使其与绝对值无关。 项2Φaσ-2避免了奇点,a和Φ分别是关键值和锐化参数。 一旦为每个像素计算出满足公式(3.24)的最大σ(σmax),就可以将全局算子修改为局部的。 例如,将等式(3.22)修改为

同理,方程(3。23):

其中Lσmax(x)是在图像像素周围最大邻域(σmax)上计算的平均亮度。 在图3.11中可以看到公式(3.26)的示例,其中燃烧参数Lwhite发生了变化。 摄影色调再现算子是保留边缘的本地算子,避免出现光晕伪像。 另一个优点是它不需要将校准图像作为输入。 清单3.14,清单3.15和清单3.16提供了Reinhard等人的MATLAB代码。 [323] TMO。 完整代码可以在ReinhardTMO.m文件中找到。 该方法将参数pAlpha作为输入,该参数为图像a的曝光值,即将映射到与Lwhite对应的纯白色pWhite的最小亮度,布尔值pLocal决定要应用哪个运算符(0-全局或 1-局部),对应于Φ的锐化参数phi作为输入。

代码的第一部分计算缩放亮度步长(清单3.14)。 首先,验证用户设置的输入参数。 之后,从HDR输入图像读取亮度,并计算对数平均值并将其存储在Lwa中。 最后,对亮度进行缩放并存储在L中。在将Boolean pLocal变量设置为1的情况下,执行局部步骤。使用MATLAB过滤缩放后的亮度L。

函数ReinhardGaussianFilter.mand使用公式(3.24)中的条件来识别包含像素周围最大邻域的比例sMax(代表σmax)。 最后,L Adapt存储Lσmax(x)的值。

在最后一步中,将pWhite设置为HDR输入图像的最大亮度,该亮度按aL-1 w,H缩放,并执行动态范围的最终压缩。 根据使用的是全局运算符还是局部运算符,它等效于公式(3.23)或公式(3.25)。

Ashikhmin [27]提出了一种在保留边缘和避免光晕方面与照相色调再现操作器具有类似机制的操作器。 但是,此运算符根据用户的目标提供了两种不同的范围压缩功能,它们既可以保留局部对比度,也可以保留视觉对比度。 保留局部对比度的功能定义为:

其中f是色调映射函数,Lw,a(x)是局部亮度适应,Lw(x)是像素位置x的亮度。 保留视觉对比度的功能定义为:

其中TVI是一个简化的阈值与强度函数:

其中x是以cd / m2为单位的亮度值。 音调映射函数f基于感知尺度必须统一的原理。 因此,场景亮度根据它们在相应的感知标度中的相对位置映射到显示亮度[27]:

其中Ld,max是显示设备的最大亮度(通常为100 cd / m2)。 局部适应亮度Lw,a(x)的估计基于平衡两个要求的原理,例如保持局部对比信号具有合理的范围,同时保持有关图像细节的足够信息[27]。 该原理导致对足够均匀的最大邻域求平均值,而不会产生过多的对比度信号(可视化为伪像)。 这与Reinhard等人提出的机制类似,请参见图3.12,比较这两个算子。

图3.12。 Reinhard等人在TMO之间进行了比较。 [323]和Ashikhmin [27]提出的一个应用于Bottles HDR图像:(a)Reinhard等人的本地运营商。 [323]。 (b)Ashikhmin的本地运营商[27]。 请注意,在两个图像中同样保留了细节。 主要区别在于全局音调功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章