Multi-scale Image Harmonization
文章目录
- Multi-scale Image Harmonization
-
- Overview
- Smooth Histogram Matching
- Structure and Noise Matching
- Pyramid compositing
在图像合成、拼接、纹理合成等图像处理应用场景中,不仅仅是需要实现背景图像内容间的无缝融合,还需要保证合成图像真实性,前面提到的 泊松融合仅考虑到了图像在融合区域梯度场的约束,能很好的融合背景图像和前景图像的图像内容,但由于前景图像与背景图像本身还存在图像风格、纹理、噪声等方面的差异,得到的融合图像会缺乏真实感,如下图中b所示,在融合区域缺乏背景图像本身的纹理信息,人工合成的痕迹明显,基于此,这篇问题提出了一个多尺度图像融合算法,使得融合后的图像与背景图像在图像风格、纹理、噪声等方面也保持一致,已增加融合结果的真实性。
Overview
记想要协调图像风格的源图像为IsI^{s}Is,需要将其融合进去的目标图像为ItI^{t}It,原图像即为前景目标图像,目标图像即为背景图像,由于光线、噪声、后期图像处理等诸多影响图像视觉感知的因素的差异,即使通过无缝的alpha融合或者泊松融合,都难以达到合成后的图像与目标图像在图像风格上的一致,受1995年发表于siggraph的论文《Pyramid-Based Texture Analysis/Synthesis》的影响,试图通过建立图像金字塔来进一步对齐源图像与目标图像的图像风格。
分别建立源图像、目标图像、均匀噪声图像的金字塔,然后通过匹配源图像和噪声图像与目标图像间金字塔对应层级间的直方图,这一步的目的就是协调源图像与目标图像风格,最后从直方图匹配过后的金字塔子带中重建完成图像风格协调的源图像,并用Alpha Matting或者泊松融合,完成对源图像和目标图像的融合。
首先是图像金字塔的分解,本文采用Harr小波分解来构造源图像、目标图像、噪声图像的金字塔,记对应的Harr滤波器为f1、f2、f3、f4f_{1}、f_{2}、f_{3}、f_{4}f1?、f2?、f3?、f4?,源图像、目标图像的子带系数为:
Bis=fi?ISBit=fi?It(1)\begin{aligned} B_{i}^{s} &=f_{i} \star I^{S} \\ B_{i}^{t} &=f_{i} \star I^{t} \end{aligned}\tag{1} Bis?Bit??=fi??IS=fi??It?(1)
金字塔层数为nnn的话,每个金字塔共有3n+13n+13n+1幅子带图像,有3n3n3n层高频层,1层低频层,在《Pyramid-Based Texture Analysis/Synthesis》一文中已经重点讨论了金字塔内每层子带图像的统计信息与图像外观件的密切关系,因此参照此纹理合成的方法,通过将源图像金字塔子带图像与目标图像做直方图匹配来协调源图像与目标图像存在的风格差异,协调后源图像的子带系数做如下表示:
Bih=histmatch(Bis,Bit)(2)B^h_i = histmatch(B^s_i,B^t_i)\tag{2} Bih?=histmatch(Bis?,Bit?)(2)
上图所示的协调算法框架,输入图像不仅有源图像和目标图像,还有一个噪声图像也需要与目标图像做直方图匹配,这是因为目标图像与源图像之间可能还存在噪声、纹理等细节信息的差异,需要通过匹配噪声图像与目标图像间的直方图来进一步模拟目标图像的噪声、纹理信息,即协调后的子带图像为:
Tih=Bih+Nih(3)T^h_i=B^h_i + N^h_i\tag{3} Tih?=Bih?+Nih?(3)
其中NihN^h_iNih?为直方图匹配后的噪声子带,用于表示目标图像的噪声、纹理信息,最终有TihT^h_iTih?重建协调后的图像:
FIh=Th?c(4)\mathbf F I^h=T^h-c\tag{4} FIh=Th?c(4)
其中F\mathbf FF为构造金字塔使用到的Harr滤波器,ccc为边界约束
Smooth Histogram Matching
如上图所示,原始的直方图匹配容易造成Halo、对比度过度拉伸等问题,为了避免此问题对图像合成的影响,用增益控制的方式对直方图匹配算法进行优化,先用原始的直方图匹配的方式计算匹配后的子带图像BisB^s_iBis?,为确保使用增益进一步修正子带系数的大小而不是改变子带系数的正负,用直方图匹配后子带系数的绝对值计算增益系数:
gi(∣BiS∣)=log?(∣Bihist∣)?log?(∣BiS∣)(5)g_{i}\left(\left|B_{i}^{S}\right|\right)=\log \left(\left|B_{i}^{h i s t}\right|\right)-\log \left(\left|B_{i}^{S}\right|\right)\tag{5} gi?(∣∣?BiS?∣∣?)=log(∣∣?Bihist?∣∣?)?log(∣∣?BiS?∣∣?)(5)
当ggg大于0时,说明直方图匹配增强源图像的子带系数,当ggg小于0时,说明直方图匹配降低源图像的子带系数,基于此,将源图像的子带系数乘以此增益系数的指数次方来实现更平滑的直方图匹配。以上方式相对简单,但未免会带来梯度信息的符号反转,也未能保证增益在空间上的平滑性,因此将各子带内部分别计算增益系数的方式转换为用各尺度下局部领域内总的高频系数计算Activity Map:
Aks=N(σ)?∑i∈lev?(k)∣Bis∣Akt=N(σ)?∑i∈lev?(k)∣Bit∣(10)\begin{aligned} A_{k}^{s} &=N(\sigma) \star \sum_{i \in \operatorname{lev}(k)}\left|B_{i}^{s}\right| \\ A_{k}^{t} &=N(\sigma) \star \sum_{i \in \operatorname{lev}(k)}\left|B_{i}^{t}\right| \end{aligned}\tag{10} Aks?Akt??=N(σ)?i∈lev(k)∑?∣Bis?∣=N(σ)?i∈lev(k)∑?∣∣?Bit?∣∣??(10)
其中Aks、SktA^s_k、S^t_kAks?、Skt?分别表示被尺度为σ\sigmaσ的高斯核模糊后的Activity Map,这时再用式(6)计算增益系数,得到较为平滑的直方图匹配结果:
Bih=miG^(Aks)×BiS(11)B_{i}^{h}=m_{i} \hat{G}\left(A_{k}^{s}\right) \times B_{i}^{S}\tag{11} Bih?=mi?G^(Aks?)×BiS?(11)
其中mim_imi?为与金字塔尺度相关的尺度因子,与尺度数nnn相关,线性的从最小尺度到最大尺度由1至0.45递减。为进一步保证直方图匹配后的结果不出现伪影,再统计全部尺度下的Activity Map:
Aags=∑k=1nAks(12)A^s_{ag} = \sum_{k=1}^{n}A^s_k\tag{12} Aags?=k=1∑n?Aks?(12)
将AagsA^s_{ag}Aags?中前85%85\%85%较小的值置0,后5%5\%5%的较大值置1,位于85%95%85\%~95\%85% 95%之间的值线性缩放至0-1之间,并以此作为权重图对协调后的图像BhB^hBh和源图像进行加权融合,用于消除强边缘处可能存在的伪影,效果如下图所示:
Structure and Noise Matching
如果源图像与目标图像将的纹理形态、噪声形态、噪声强度、模糊程度、局部对比度等影响图像视觉外观的细节信息不匹配,合成的图像看上去依旧是不真实的,我将以上几种细节信息统称为图像的风格信息,为了更好的协调源图像与目标图像间的风格信息,如上图的算法框架所示,在源图像与目标图像的多尺度协调之外,还需要加入噪声图像与目标图像间的协调,用于模拟目标图像的风格信息,首先需要从目标图像中提取处图像的噪声信息:
Ω=Aagt<percentile (Aagt,β)(13)\Omega=A_{a g}^{t}<\text { percentile }\left(A_{a g}^{t}, \beta\right)\tag{13} Ω=Aagt?< percentile (Aagt?,β)(13)
其中AagtA^t_{ag}Aagt?同AagsA^s_{ag}Aags?的计算方式相同,β\betaβ为用于区分图像结构信息和噪声信息的超参数,记Ω\OmegaΩ为Low Activity Region,将目标图像Ω\OmegaΩ区域的高频信息当中所示目标图像的噪声信息,统计其在各个尺度下的直方图,用对噪声图像在对应子带上做直方图匹配,与式(8)相同,也需要计算噪声图像等价于与Ω\OmegaΩ区域做直方图匹配的增益G^n\hat G_nG^n?,最后分别得到源图像与目标图像的子带直方图匹配结果BihB^h_iBih?,噪声图像与目标图像的子带直方图匹配结果NihN^h_iNih?:
Bih=G^b(AiS)BiSNih=G^n(∣Nis∣)Nis(14)\begin{aligned} B_{i}^{h} &=\hat{G}_{b}\left(A_{i}^{S}\right) B_{i}^{S} \\ N_{i}^{h} &=\hat{G}_{n}\left(\left|N_{i}^{s}\right|\right) N_{i}^{s} \end{aligned}\tag{14} Bih?Nih??=G^b?(AiS?)BiS?=G^n?(∣Nis?∣)Nis??(14)
最后如式(3),最终的协调图像为协调后的源图像与协调后的噪声图像之和:
Tih=Bih+Nih(3)T^h_i=B^h_i + N^h_i\tag{3} Tih?=Bih?+Nih?(3)
其中NihN^h_iNih?表示图像的风格信息,BihB^h_iBih?表示图像的结构信息。最后需要注意的是以上协调过程往往需要迭代循环几次。
Pyramid compositing
在每一其他约束条件的情况下,由金字塔重建图像的过程可以做如下表示:
[f1f2?fn]Ih=[T1hT2h?Tnh]\left[\begin{array}{c} f_{1} \\ f_{2} \\ \vdots \\ f_{n} \end{array}\right] I^{h}=\left[\begin{array}{c} T_{1}^{h} \\ T_{2}^{h} \\ \vdots \\ T_{n}^{h} \end{array}\right] ??????f1?f2??fn????????Ih=??????T1h?T2h??Tnh????????
其他fff为重建金字塔的Harr滤波器,IhI^hIh为最终的合成图像,ThT^hTh为协调后的各子带图像,此时我们还需要将目标图像ItI^tIt与协调后的合成图像IhI^hIh进行无缝融合,常用的融合方式用Alpha Matting和泊松融合,绝大部分情况下我们的融合需求都是将用户给定的物体融合进进目标图像的指定区域,如下图所示: