当前位置: 代码迷 >> 综合 >> 色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation
  详细解决方案

色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

热度:62   发布时间:2023-10-19 12:32:21.0

Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

? 目前在传统Tone Mapping这个领域,我个人根据看过的Paper将其分类为Retinex、HVS、Gradient Domain,其中Retinex相比常见的SSR(Single Scale Retinex)、MSR(Multi Scale Retine),在Tone Mapping中的Retinex泛指一切使用到低通滤波器将图像分解为基础层(Base Layer)、细节层(Detail Layer),并对基础层做Global Tone Mapping的方法,所有这些用低通滤波做图像分解的算法都是为了在调节图像亮度的过程中不损失图像细节信息。

? 和《Image Smoothing via L0 Gradient Minimization》这篇文章一样,这篇Paper依旧着力在保护图像主要边缘信息和平滑图像之间的平衡,从《Image Smoothing via L0 Gradient Minimization》这篇Paper给出的结果来看,这篇Paper在保护边缘和平滑图像之间的平衡并没有《Image Smoothing via L0 Gradient Minimization》好,但是可以通过这篇Paper比较好的了解Tone Mapping或者Local Contrast Enhancement当中的Retinex。

Halo

在Tone Mapping、Sharpen当中都很容易产生Halo Artifacts,Tone Mapping产生Halo是因为不够包边的低通滤波器在模糊图像边缘的同时,将图像的部分亮度信息分到了图像的细节层,而在Tone Maping中细节层往往不做格外的处理,或者是做增强的处理,就会造成部分图像亮度信息(主要是强边缘处)没有经过Global Tone Mapping,残留在了图像的细节层,最后叠加回基础层的时候造成梯度反转;而在Sharpen当中,Halo主要是因为对边缘细节的增强处理所造成的梯度反转。如果在Tone Mapping中出现了Halo问题,在后续的处理中基本难以去除,因为不管在ISP还是后处理当中,Sharpen都会跟在Tone Mapping之后,只会将Tone Mapping过程中产生的Halo增强,因此基于Retinex的Tone Mapping的一个关键问题就是解决Halo问题,方法就是使用更加保边的低通滤波,这一低通滤波不求很好的保护图像的微小细节及纹理,但需要做到保持图像中较大边缘的锐利程度。

色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

左:Tone Mapping中的Halo;右:Sharpen中的Halo

Edge-Preserving Smoothing via WLS

WLS Optimization Framework

图像的最小二乘滤波算法最早由Lagendijk在其论文《Regularized Iterative Image Restoration with Ringing Reduction》用于去除频域图像处理过程最常被发生的振铃效应,后来被逐渐被用于图像降噪,Adobe之前的交互式Tone Mapping功能就是基于WLS(Adobe的Tone Mapping算法原文是《Interactive Local Adjustment of Tonal Values》。

记原图像为ggg,原图像经平滑后的图像为uuu,则此优化问题的目标函数为:
∑p((up?gp)2+λ(ax,p(g)(?u?x)p2+ay,p(g)(?u?y)p2))(1)\sum_{p}\left(\left(u_{p}-g_{p}\right)^{2}+\lambda\left(a_{x, p}(g)\left(\frac{\partial u}{\partial x}\right)_{p}^{2}+a_{y, p}(g)\left(\frac{\partial u}{\partial y}\right)_{p}^{2}\right)\right)\tag{1} p?((up??gp?)2+λ(ax,p?(g)(?x?u?)p2?+ay,p?(g)(?y?u?)p2?))(1)
其中第一项用于约束平滑后的图像与原图像间的相似性,第二项用于约束平滑后图像的梯度,ax,p(g)、ay,p(g)a_{x,p}(g)、a_{y,p}(g)ax,p?(g)ay,p?(g)是由原图像决定的权重系数:
ax,p(g)=(∣???x(p)∣α+ε)?1ay,p(g)=(∣???y(p)∣α+ε)?1(2)a_{x, p}(g)=\left(\left|\frac{\partial \ell}{\partial x}(p)\right|^{\alpha}+\varepsilon\right)^{-1} a_{y, p}(g)=\left(\left|\frac{\partial \ell}{\partial y}(p)\right|^{\alpha}+\varepsilon\right)^{-1}\tag{2} ax,p?(g)=(??x???(p)?α+ε)?1ay,p?(g)=(??y???(p)?α+ε)?1(2)
其中?=log(g),1.2≤α≤2\ell=log(g),1.2≤\alpha≤2?=log(g),1.2α2,将上式重写为矩阵形式,即有:
(u?g)T(u?g)+λ(uTDxTAxDxu+uTDyTAyDyu)(3)(u-g)^{\mathrm{T}}(u-g)+\lambda\left(u^{\mathrm{T}} D_{x}^{\mathrm{T}} A_{x} D_{x} u+u^{\mathrm{T}} D_{y}^{\mathrm{T}} A_{y} D_{y} u\right)\tag{3} (u?g)T(u?g)+λ(uTDxT?Ax?Dx?u+uTDyT?Ay?Dy?u)(3)
解得:
(I+λLg)u=g=Fλ(g)(4)(I+\lambda L_{g})u=g=F_{\lambda}(g)\tag{4} (I+λLg?)u=g=Fλ?(g)(4)
其中Lg=DxTAxDx+DyTAyDyL_{g}=D_{x}^{\mathrm{T}} A_{x} D_{x}+D_{y}^{\mathrm{T}} A_{y} D_{y}Lg?=DxT?Ax?Dx?+DyT?Ay?Dy?,直接迭代上式即可得到平滑图像,如果期望加速收敛或者得到十分平滑的图像,可以用上一次迭代过程中得到的uiu^{i}ui来替代ggg,即:
ui+1=Fλ(ui)(5)u^{i+1}=F_{\lambda}(u^{i})\tag{5} ui+1=Fλ?(ui)(5)
下面是本文方法对图像进行平滑的效果示意图:
色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

WLS与其他算法对图像平滑的效果对比示意图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/85af9741edad1b68eec325e129f5619e.png#pic_center#pic_center)
WLS的正则化项在不同参数下对图像平滑的结果对比

可以看出正则化项参数α、λ\alpha、\lambdaαλ设置得越大图像都将越平滑,只保留图像中一些比较明显的边缘。

Multi-scale tone manipulation

迭代上式(4)或(5)可以得到一系列不同尺度的平滑图像,记原图为u0u^{0}u0,平滑后的图像为u1,u2,......,uku^{1},u^{2},......,u^{k}u1,u2,......,uk,其中uku^{k}uk是最大尺度的平滑图像,将kkk作为基础层bbb,将细节层定义为相邻两帧平滑图像间的差值:
di=ui?1?ui,i=1,......,kd^{i}=u^{i-1}-u^{i},i=1,......,k di=ui?1?uii=1,......,k
这是原图的完备表示:
g=b+∑i=1kdig = b + \sum_{i=1}^{k}d^{i} g=b+i=1k?di
可以分别基础层和细节层做Tone Mapping,本文提供的做法相对比较简单,基础层和细节层的Mapping都是选用的Sigmoid函数,具体Tone Mapping过程如下:
g^=u+S(δ0,ηb?u)+S(δ1,d1)+S(δ2,d2)+......+S(δk,dk)\hat{g}=u+S(\delta_{0},\eta b-u)+S(\delta_{1},d^{1})+S(\delta_{2},d^{2})+......+S(\delta_{k},d^{k}) g^?=u+S(δ0?,ηb?u)+S(δ1?,d1)+S(δ2?,d2)+......+S(δk?,dk)
其中uuu为基础层的亮度矩阵,S(a,x)=11+e?axS(a,x)=\frac{1}{1+e^{-ax}}S(a,x)=1+e?ax1?
色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation
色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

本文算法的Tone Mapping结果

本篇文章所述Tone Mapping算法,属于Retinex类算法,通过对图像进行多尺度分解,对不同尺度的图像分别对Tone Mapping,在图像的多尺度分解中应用到了WLS,目的是保证图像在不同尺度上依旧保持边缘的锐利度,所有基于Retinex的Tone Mapping算法,都只有在保持其低通滤波结果的边缘的锐利度的前提下才能不产生Halo。

色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

上:基于BLF的Tone Mapping;下:基于WLS的Tone Mapping

色调映射:Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation

本文算法对HDR的Tone Mapping结果与其他Tone Mapping算法的比较
  相关解决方案