一种物体主体结构大面积破损的图像修复算法
2021-12-03唐向宏任玉升
肖 涛,唐向宏,任玉升
(1.杭州电子科技大学通信工程学院,浙江 杭州 310018;2.浙江水利水电学院电气工程学院,浙江 杭州 310018)
0 引 言
图像修复的目的在于填充破损图像中缺失部分的像素点,使修复结果对人眼视觉具有一定的欺骗性。针对大面积破损情况,Criminisi等[1]提出的样本块纹理合成方法取得了较好修复效果,但当样本匹配发生错误或原图中无法找到合适的样本块时,导致修复错误。在此基础上,人们进行了大量改进。Xu等[2]改进了优先权计算填充法则,以稀疏表示代替单一样本块的方法修复较大破损面积的图像,但当大面积破损区域中包含物体显著结构和复杂的纹理信息时,仍难以获得良好的修复效果。Sun等[3]提出一种人工交互的图像修复算法,首先根据先验知识,用一组简单的曲线来补全破损物体缺失的轮廓;然后用结构传达(Structure Propagation,SP)方法,将破损物体的已知轮廓结构沿着人工交互曲线传达进入破损区域,实现破损轮廓的重建;最后采用样本块合成方法修复纹理部分。对于物体轮廓结构较简单且只有部分破损的图像来说,具有较好的修复效果,但当物体结构轮廓复杂且完全缺失时,修复效果较差。Chen等[4]提出一种全自动图像修复算法,通过提取图像的主要结构,以张量投票的方式,自动将破损区域边界的结构线在破损区域内部连接起来。但破损轮廓复杂时,难以获得较好的修复效果。近年来,深度学习和数据驱动技术已用于图像修复领域[5-8]。Pathak等[5]通过学习全图的上下文图像特征,采用破损区域周边信息的约束来修复图像,但在破损区域轮廓结构复杂情况下,出现前背景融合、纹理错误等现象。Gao等[8]结合人工交互和数据驱动的方式提出一种借助数据库匹配图像的图像修复算法。先由用户交互曲线补全物体缺失的轮廓,再通过匹配样本图像,用结构传达方式将匹配图像中的物体轮廓传达到破损物体上,重建物体轮廓,最后用样本块纹理合成方法修复纹理部分,取得了较好的修复效果,但是,在结构传达时,有时会将匹配图像的背景信息误传达给破损图像,在纹理修复时出现前背景融合、纹理合成错误等现象。本文在研究如何有效还原大面积破损物体结构信息的基础上,提出一种基于匹配图像和像素点纹理合成的图像修复算法。采用人工交互和数据驱动的方式来提升对复杂轮廓结构的修复效果,采用前背景分离像素点纹理合成方式来改善纹理修复效果,进一步提升了破损图像的修复质量。
1 本文算法原理及实现
针对大面积破损导致物体结构完全缺失的情况,本文提出一种基于匹配图像和像素点纹理合成的图像修复算法。首先,结合先验知识,由人工交互指导曲线补全物体缺失的主体结构并提取物体轮廓;然后,与图像数据库中的物体依次进行轮廓和纹理匹配,找到含有与破损物体结构和纹理最相近的匹配样本图像,采集匹配样本图像中的物体轮廓样本区块,构造不含背景信息的轮廓样本区块字典;接着,采用结构传达方法将轮廓样本字典传达到破损物体,完成物体轮廓结构的修复;最后,采用基于像素点的纹理合成方法,分别修复背景和前景破损区域的纹理,实现对破损图像的整体修复。实现流程如图1所示。
图1 本文算法实现流程
1.1 匹配样本图的选取
为了构建图像数据库,本文采用Grabcut方法对图像进行前背景分离,用基于拓扑逻辑结构的二值边界追踪法来提取物体的轮廓。由于图像中的物体包含轮廓结构和纹理色彩信息,因此在图像数据库中寻找最佳匹配图像时要同时考虑到这2种信息。本文采用文献[8]中定义的匹配消耗(Matching Cost,MC)来度量,即:
C=αCs+βCt
(1)
式中,Cs为物体轮廓匹配时的消耗,Ct为物体纹理色彩匹配时的消耗;参数α与β的大小选取决定了结构和纹理在匹配时候所占的权重,α+β=1。由于本文侧重物体的轮廓结构,所以取α=0.8,β=0.2。轮廓匹配属于物体识别和物体分类的范畴,其中一类是将物体轮廓进行采样,使其整体轮廓变为N个离散的点,然后通过分布计算这N个点的空间分布情况,即通过形状上下文来描述物体轮廓[9]。本文算法主要考虑物体外部轮廓的匹配,因此选用形状上下文来计算轮廓匹配消耗Cs,即2个取样点间的形状上下文的匹配消耗为:
(2)
式中,Ci,j为第1个物体轮廓上的采样点pi和第2个物体轮廓上的采样点qj的形状上下文匹配消耗;hi(k)为采样点pi的形状上下文,hj(k)为采样点qj的形状上下文。
将pi放置在极坐标的圆心位置,将极坐标均等分为5×12共计60个小格,统计其余采样点落于这些小格子的数目就可以获得该点的形状上下文hi(k)。当hi(k)与hj(k)越接近时,说明这2点的周围采样点在空间上的分布越相近,Ci,j就越小;K代表采样点个数,本文取K=100。对于2个轮廓上的所有点对(pi,qπ(i)),总的形状上下文的匹配消耗为:
Cs=∑iC(pi,qπ(i))
(3)
式中,C(pi,qπ(i))为2个待匹配的轮廓上第i个点的形状上下文匹配消耗,π(i)为对i点匹配后对应的点。
为了避免因破损图背景纹理与匹配图背景纹理存在较大差异导致匹配出现较大误差,本文将前景与背景分离,只匹配物体内部的纹理信息。采用准确反映图像的局部纹理特征和颜色信息的局部二值模式(Local Binary Pattern,LBP)特征向量来描述物体纹理,2个LBP特征向量匹配方式为:
(4)
(5)
这样,通过式(1)匹配消耗的最小化就可以从图像数据库中找出包含与破损图中最相似物体的样本匹配图像。
图2给出了对同一破损图像采用不同人工交互曲线指导获得的匹配图、结构传达效果以及最终的修复结果。
图2 不同人工交互曲线的修复结果
从图2可以看出,人工交互曲线补全的物体缺失轮廓结构既决定了匹配图的结果,也决定了最后将匹配图结构传达过来的结果。因此,不同的人工轮廓交互曲线将影响不同的匹配结果,造成结构修复的差异。
1.2 基于匹配图的物体轮廓修复
图3 轮廓样本字典块的获取及预处理
图4 结构传达填充修复过程示意图
为了求解1组最佳样本块标签分配方案,本文运用文献[8]的最小化求解Gibbs能量场方程,即寻找1组样本分块PG{xi}使得能量方程式(6)最小化求解。
(6)
E1(xi)=kSES(xi)+kIEI(xi)
(7)
式中,ES(xi)为样本块PG{xi}与位于待填充锚点pi处区块中包含的人工指导交互曲线的结构相似度。假设样本分块PG{xi}中包含轮廓片段cxi,待填充锚点区块中有轮廓片段ci,为了使结构传达更加准确,cxi与ci相似度越高越好,即样本块中的轮廓片段要尽可能与人工指导的轮廓片段更加相似。ES(xi)的大小定义为:
ES(xi)=d(ci,cxi)+d(cxi,ci)
(8)
采用置信度传播(Belief Propagation,BP)算法可以有效提高求解能量最小化方程的效率,得到每个待填充锚点对应候选样本区块的最优解,从而完成结构传达实现轮廓结构修复。
1.3 基于像素点的前背景纹理修复
从图2可以看出,当通过结构传达完成对破损物体轮廓修复后,剩余破损区域将被修复的轮廓分割成背景、前景(物体)两部分。考虑到前景与背景纹理在大多数情况下是迥然不同的,若采用传统样本块全局搜索填充修复,容易导致前背景融合、纹理错误等现象。当基于像素点的纹理合成方式在局部小区域内纹理特征较为接近时,可以保证合成纹理的连续性,同时在纹理样本信息较少的情况下也能有效合成纹理。因此,本文采用无边界式的基于像素点的纹理合成方法,分别填充修复前景和背景纹理。
在修复前景(物体)纹理时,首先,从破损或背景区域的最左、最右、最上、最下方搜索,找到各自方向上第1个破损的像素点,如图5(a)中所示,圆点为水平方向找到的第1个破损像素点,Ω为破损区域,C为修复完的物体轮廓,S为以待修复像素点为中心的区块;然后,以该像素点为中心,取M×M大小的矩形区块S;最后,在图5(b)中该破损待填充像素点周围取L形邻域N1,在S的已知部分中搜寻与N1最相似的L形区域N2,将N2中与破损待修复像素点位于L形区域同样位置的像素点复制填充到破损待修复像素点,完成修复。N1与N2的相似性为[10]:
图5 前/背景纹理合成填充过程
(9)
式中,R,G,B分别为颜色的3个通道。p为L形邻域内的像素点,D为N1与N2总体的颜色差异,定义为利用L2范数计算3个通道的颜色距离并且求和,D越小说明N1与N2越相似。
在背景纹理修复时,为了避免纹理像素来源于物体轮廓产生错误的延伸,因此在搜索第1个破损的像素点时,应排除已修复轮廓方向的搜索,其余修复过程与前景修复一样。因此,纹理合成填充修复过程如下:
(1)确定修复区域(背景、前景);
(2)在确定修复的区域中,从不同方向搜索最先待填充的破损像素点;
(3)以破损像素点为中心取M×M大小的区块S;
(4)在破损像素点周围构建L形领域N1,再在S的已知部分搜索与N1最相似的L形领域N2,将N2中与破损像素点对应位置的已知像素点复制填充到破损像素点;
(5)重复步骤2—步骤4,直到待修复区域填充完成为止。
2 实验结果与分析
实验采用MATLAB和OpenCv开源库在2.6 GHz的PC机上进行仿真,将本文算法与文献[1]、文献[3]及文献[8]算法进行比较分析。将峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似度(Structure Similarity,SSIM)作为破损图像修复效果的评价指标。实验中,结构传达修复轮廓的样本块大小n×n=13×13个像素点,L形领域N1与N2的大小为5×1个像素点,纹理修复的搜索矩形区块S大小为M×M=50×50个像素点。
实验选取具有较强的结构特征且前背景纹理差异较明显的动物图像作为实验对象,如图6(a)所示。对图中结构性强、语义性强的部位进行大面积破损,如动物的嘴巴、尾巴、身体等部位,如图6(b)所示,4种算法的修复结果如图6所示。
图6 破损图、匹配图及修复结果
从图6可以看出,文献[1]算法未引入先验知识,仅依靠破损图像自身已知信息修复填充破损图像,修复结果出现结构断裂、缺失以及纹理错乱等现象;文献[3]算法引入了先验知识并结合破损图像自身已有的结构信息,对物体轮廓破损没有完全缺失且破损轮廓结构可用简单曲线绘制的图像,如鹅和长颈鹿,可获得较好的轮廓修复效果,但当物体轮廓破损完全缺失且轮廓结构复杂时,如斑马、狗和兔子,因破损图无法提供任何结构轮廓信息,物体轮廓结构修复出现延伸、断裂等现象,纹理修复也出现前背景融合、纹理错误等现象;文献[8]算法引入了先验知识和匹配图像,结合结构传达基本实现了物体缺失轮廓的重建,但在轮廓边缘靠近背景部分,明显出现了错误,这是因为未处理的轮廓样本块在结构传达时将匹配图像背景信息引入破损图像,导致纹理修复出现前背景融合、纹理错误等现象;本文算法通过图6(b)中人工交互曲线的引导,将图6(c)所示的最佳匹配图像构造的纯轮廓样本字典用结构传达的方式准确传达到破损物体缺失部分,较好地完成了物体主体结构的修复,还原了缺失的语义信息,同时基于像素点的前背景分开修复纹理的方式,较好地实现了前背景纹理的修复,避免了纹理错误、前背景融合等现象,视觉效果得到提升,修复结果的整体效应优于其他3种算法。
4种算法的峰值信噪比PSNR、结构相似度SSIM及修复耗时如表1和表2所示。从表1可以看出,由于本文算法修复物体轮廓结构依赖于人工指导曲线和匹配图像,修复的物体轮廓结构更接近于匹配图像,所以修复图像的SSIM平均值达到0.972 32,较其他3种算法,平均提升了约1%;本文算法的PSNR平均为28.932 42 dB,较其他3种算法,平均提高了近2 dB;本文算法在修复兔子耳朵时,PSNR比文献[1]算法低了约0.5 dB,在修复鹅羽毛时,PSNR比文献[3]低了约0.6 dB,在修复狗尾巴时,SSIM比文献[1]低了约0.04,但本文算法无论在局部修复还是在整体修复上,都具有更好的整体效应和视觉效果。另外,从表2中可以看出,本文算法的修复用时最少,这是因为在纹理修复时,其他3种算法都采用了耗时较长的样本块匹配搜索法,而本文算法则采用像素点纹理合成方法,在已知纹理样本信息较少时也能保持局部纹理特征的连续性,较好地解决了边缘与纹理之间的过渡,同时,算法平均修复效率提升约20%。
表1 不同算法的PSNR和SSIM
表2 不同算法的运行时间 单位:s
3 结束语
针对图中结构复杂、语义性强的破损物体的修复,传统的图像修复算法仅依靠破损图自身信息,难以还原物体缺失的主体结构和纹理信息。本文提出一种基于匹配图像和像素点纹理合成的图像修复算法,运用先验知识和外部数据库图像信息修复破损物体的主体轮廓,采用像素点纹理合成方法修复破损纹理,在保持较高的PSNR和SSIM的同时,提升了修复图像的视觉效果和修复效率。但是,本文算法对轮廓样本块质量和纹理信息来源要求较高,在轮廓样本块质量较差和纹理信息来源有限时,可以考虑对轮廓样本块进行变形、变色处理,或通过改善像素点间的匹配方式,进一步改善修复结果。