基于改进的纹理合成图像修复算法

2017-01-20 09:46胡云康姜苏吴志荣杨晨霞朱龙飞
软件 2016年4期

胡云康 姜苏 吴志荣 杨晨霞 朱龙飞 戴磊

摘要:本文首先介绍了图像修复领域中的Criminisi算法,针对这种算法的不足,从优先级的运算、最优匹配块的搜索和置信值的更新三个方面进行改进。实验结果表明,改进算法的修复效果比原算法有了进一步的提高,更符合人类视觉系统的特征。

关键词:图像修复;优先级;最优匹配块;置信值

中图分类号:TP391.41 文献标识码:A DOI:10.3969/j.issn.1003-6970.2016.04.016

0 引言

数字图像虚拟修复是指对那些局部数据信息完全丢失的图像进行修补,以恢复其完整性和原有的视觉效果,并使观察者无法觉察到图像曾经缺损或己被修复。由于该技术不需要直接处理原作,可以根据需求反复调整,最终再确定采用何种修复方法,因此安全可靠,具有很高的实用价值。近年来研究表明,计算机辅助的数字化保护和修复古代艺术作品取得了一定进展,这种方法在排除损坏文物的危险性的基础上,还具有效率高、可重复性等传统方法所没有的优点。计算机的操作不仅提高了工作效率,甚至可以完成以前某些无法完成的工作。随着计算机技术的发展,数字图像修复技术可以应用到很多方面。首先,文物在保存时,不可避免会受到环境、人为等因素的影响,进而产生霉斑、划痕、破损等,为了保持作品完好的视觉效果,要对这些文物和艺术作品进行修复,以往主要通过专业人士进行手工修复,这对人们的技术性要求非常高,同时它也是一项具有高风险的任务,因为文物和艺术作品极其珍贵,如果修复失误,将造成难以弥补的损失。加之修复大量有损伤的文物需要耗费大量的时间和人力财力,传统修复方法的特殊性和局限性,使得文物的保护修复工作进展缓慢。我们可以借助于数字图像修复技术对这些文物数字照片先进行虚拟修复,为文物的实物修复提供参考。另外,在一些档案老照片的保护上,老照片存放时间过长会存在一些折痕或乌迹,也可以借助数字图像修复技术进行修复,当然还有一些计算机特效处理以及一些富含玟理特征的照片的生成,都可以利用数字图像修复技术得到很好的修复效果。所以将数字图像修复技术应用到文物修复领域中,成为传统文物修复算法的一个新趋势。

在当前图像修复技术中,比较经典的两大类是:图像润饰(inpainting)的方法和基于纹理合成的图像修复方法。图像润饰方法首先由Bertalmio等人引入到数字图像,使用基于偏微方程(PDE)的修复模型。基于此思想的方法还有Chan提出的整体变分(YV)模型以及基于曲率驱动扩散(CCD)模型等。图像润饰适合修复有小瑕疵的图像,但修复较大区域效果模糊,且对纹理较强的破损区域修复效果差。本文所使用的是基于纹理合成的图像修复算法。基于纹理合成的图像修复方法中最经典的算法是由Criminisi等人提出,该算法在基于样本的纹理合成算法基础上再融合图像润饰结构扩散的特点,修复效果较好,适用于修复大面积的破损。在此基础上的改进主要有小波变换的图像修复,利用邻域特性的图像修复和基于匹配块的图像修复算法等。本文在分析了图像修复技术中的Criminisi算法后,针对它的不足,提出一种新的改进算法。

1.1.3 更新置信值

第一优先级的计算,随着填充过程的进行,模板数据值会迅速下降零,这样使得计算出的优先级不可靠。

第二采用全局搜索算法来寻找最优匹配块,这样不但会产生错误匹配,而且还会使填充速度变慢。

第三置信值的计算,对破损区域内原有的像素点和填充上去的像素点进行相同处理,算法容易导致修复效果越来越差,从而形成它的贪婪性。

1.2 算法存在的问题

Criminisi算法的缺陷主要表现在三个方面:第一优先级的计算,随着填充过程的进行,模板数据值会迅速下降到零,这样计算出的优先级不可靠。因此,会出现错误的填充顺序,并且会影响修复效果。第二采用全局搜索算法来寻找最优匹配块,这样不但会产生错误匹配,而且还会使其填充速度变慢。第三置信值的计算,对破损区域内原有的像素点和填充上去的像素点进行相同处理,也就是说破损区域原有的像素点和填充上去的像素点可靠性一样高,没有考虑到本次修复的效果,该算法容易导致修复效果越来越差。

1 Criminisi算法简介及存在问题

1.1 Criminisi算法简介

Criminisi算法核心是基于样本的纹理合成,该算法主要包含以下4个步骤:1.1.1 计算优先级

优先级的大小取决于两部分因素:一部分是该模板的数据值,它反映了模板的结构信息强弱,从而保证线性结构部分的优先合成;另一部分是模板的置信度值,要求优先填充那些含已填充像素较多部分的模板,因为填充这样的模板可以依赖更多的已知像素。公式如下:

P(p)=C(p)D(p) (1)

(2)C(p)表示模板的置信度值,D(p)表示模板的数据值,C(q)表示模板内像素点的置信值

1.1.2 扩散纹理和结构信息

从源区域取样,寻找和该模板最匹配的模板,搜索整幅图像的已知信息区域后,找到SSD(颜色平方差的和)最小的模板即为最优匹配模板,将相应的像素点复制填充到目标区域的模板中

2 算法改进

2.1 优先级计算的改进

原算法用乘积的形式决定优先权,在修复的过程中,如果数据为0,那么置信值信度项很高由于优先级为零也不能得到优先修复。并且在修补过程中如果多个范本块的D(p)同时为零,会使它们的优先级也都为零,从而使C(p)值失去了意义。

综上所述,使用原算法计算优先值并不准确,所以将优先级的计算改为如下公式:

(3)

公式中α和β为调节参数(实验中,取α=0.382,β=0.618),不考虑c(p)为零的情况(实际p点位于填充轮廓在线,待修复模版置信度值不会为零)。这样能保证当数据项为零时,只要置信度项足够高,也可以得到优先修复。

2.2 匹配区域及最优匹配块的改进

对于根据优先权值确定的当前待修复点p,它在上述确定的匹配区域中搜索匹配点的方式为,以点p为中心,顺序搜索与p的棋盘距离为n(1≤n≤max,n∈N)的各点作为匹配点,并依次以这些点为中心生成候选块与待修复块做SSD计算,直至搜索完匹配区域。这样的搜索方式使得匹配块搜索是由近及远,对于最优匹配块的选择也是优先考虑距离p点最近的颜色差距值最小的匹配块。搜索中,直接对第一次搜索到的颜色差距值最小的候选块作记录,并将其作为最优匹配块,复制其信息到待修复块相应位置,得到的修复结果与其邻域的相关性较大,也更加符合视觉上的效果。

2.3 置信值的改进

Criminisi算法在对破损图像的模板更新时,只要是已经修复的区域,就将修复好的像素置信值置为1。这也意味着在下次计算模版的C(p)时,不论是原图像上的非破损像素点还是经过修补之后的像素点的C(q)都是1,这样也就相当于修补之后的像素点和原图的非破损区域的像素点同样可靠。算法修补一个模板后更新边界,极有可能导致新边界上优先级最大的点就处于刚填充的范本中,然后继续向内部延伸。算法循环中如果某个模板被填充了不符合视觉效果的颜色信息,会导致不合理的颜色信息继续延伸下去,最终导致修复的视觉效果不佳。

为了克服以上不足,本算法特设定一颜色阈值T。阈值T的确定,根据计算具体图像修复模板对应的SSD的值来确定。

(5)

上述公式中,如果最优匹配范本对应的SSD值小于阈值T,说明其可信度高,则待修补像素的置信值,用源图像模板对应像素点的置信值直接更新。如果SSD的值大于T,说明其相对于源区域中的信息来说可信度值进行更新。如匹配前某优先级最大的范本置信度值为0.68,则匹配后其剩余待修补像素点的置信值都置为0.68。这样保证在不断修补的过程中越是深入待修补区域的内部,可信度就越低,这符合一般规律。可信度越低,最后得到的优先级P(p)就越低,填充时应该尽量寻找整体置信度比较高的匹配模块对待修复区域进行填充,这就保证了图像修复的顺序基本上是从外围向中间修复。

3 实验结果分析

本文算法采用Visual C++6.0开发平台,算法中取α=0.382,B=0.618,颜色阈值T取为11,以下是效果图对比:

图1(a)这幅照片因年代久远,有明显的白色折痕,以照片中中间那位女士为修复对象,将折痕部分标记出来,如图41(b),图1(c)则是应用Criminisi算法修复后的图片,图1(d)是本文算法修复后的效果图。经过对比,可以明显看出本文算法修复效果比较完整,无明显折痕。

图2(a)是一个破损文物的图像,我们将其裂痕标记出来如图2(b),采用两种算法进行修复,图2胡云康等:基于改进的纹理合成图像修复算法(c)是Criminisi算法修复后的效果图,可以明显看出有一处裂缝没有修复好,本文算法修复效果如图2(d),修复效果比较自然,无明显瑕疵。

实验中分别统计了图1、图2中图像缺失像素的个数和两种箅法修复需要的时间,如表l所示。

4 结论

数字图像修复技术是当下较新的研究课题,本文主要研究了基于纹理合成的数字图像修复,通过实验结果的数据列出以下几点总结:(1)系统采用基于Criminisi的图像修复算法进行改进,算法先进,修复效果好;(2)算法从优先级的运算、匹配区域及最优匹配块的搜索和置信值更新三个方面进行改进;改进算法的修复效果会比原算法有进一步的提高,更符合人类视觉系统的特征;(3)算法采用Visual C++6.0开发平台,便于图像处理,同时改进算法由于只是在局部进行修复运算,大大减少了修复时间;对于缺损区域在10000像素以内的真彩图像,修复时间基本控制在10秒内;(4)系统接口直观,交互性好,能实时显示图像修复过程,突破了以往图像修复软件只显示图像最终修复结果的局限性。