摘要
对图像修复专题学习情况的一个总结,学习内容包括:
(1)综述文献的阅读及对图像修复的理解。
(2)criminis算法的仿真情况。
(3)criminis算法的改进算法的仿真
一、 前言
1)什么是图像修复
数字图像修复技术是指针对图像中遗失或者损毁的部分,利用未被损坏的图像信息,按照一定的规则填补,使修复后的图像接近或者达到原图的视觉效果。数字图像修复主要是针对原图中损坏的部分,如划痕、污点等,将其从原图中擦除,并对该区域进行修复,使其具有良好的观赏效果。
图像修复和图像恢复一字之差,但本质上区别巨大。、在图像获取时,由于噪声、抖动、对焦等问题导致图像质量下降,针对这些问题,建立退化模型,通过逆退化来改善图像质量。在退化图像中,多少都包含着关于图像真值的信息,在某些条件下,甚至可能完全恢复图像真值。但在图像修复问题中,待修复区域的信息全部丢失,只能根据邻域信息对这部分进行填充,无法获得一个真值。图像修复没有唯一解的存在,解的合理性取决于视觉系统的接受程度。
从数学的角度看,图像修复没有足够的信息保证被恢复的图像是唯一正确的。因此,图像修复技术的本质是对视觉认知过程的学习、理解、再现,对促进机器视觉的发展有着重要的影响。
2)图像修复方法的分类
(1)PDE模型、变分泛函
这两种方法都是通过变分原理相互推出,统称为PDE/变分泛函图像修复方法,也就是基于方程求解的方法。是模拟手工修复破损图像的过程,根据建立的模型将已知信息逐渐地向破损区域内扩散,直至修复完成。该方法主要是用于小区域破损的修复。该方法具有较好的图像平滑能力,可以使断开的图像连接起来,对于图像拐角问题也可以修复,符合人眼连通原则。
(2)基于样本的图像修复方法
根据每次修复匹配合成像素多少,可以分为基于样本点的修复和基于样本块的修复,基于样本块的修复每次合成都可以修复一块区域,因此效率较高。基于样本的图像修复技术关键包括样本块的采样方式,修复顺序,样本块采样范围和最佳匹配块。
(3)基于邻域模板及插值的图像修复方法
该方法主要基于插值公式或套用模板,通过已知的邻域点带入,计算缺损区域点的像素值,包括优先权选取方法和直接插值方法。
(4)基于纹理合成的修复方法
常用纹理合成方法修复纹理图像,基本思想是从已知的图像中选取合适的块采样,合成或者复制到缺损区域里,要同时保证纹理区域的结构相似性和连续性。
二、criminis算法的仿真及分析
在上一阶段的学习中,我已经了解了图像修复的算法过程,并对程序进行了学习,本次学习中,基于前面的了解,我对criminis算法(文献1)进行了独立的仿真,下面是我在仿真过程中遇到的一些问题以及解决的过程,最终得到了正确的仿真结果。
1)criminis算法的仿真
图1. 原始图像
图2. 破损图像 左(a),复现修复结果 中 (b) , 原文结果右(c)
得到结果后,发现与原程序得到的结果图2(c)不同。选择其他的破损区域进行修复,仿真结果如下:
图3. 破损图像 左(a),复现修复结果 中 (b) , 原文结果右(c)
因此,仿真过程中应该是出现了一些错误,通过设置断点进行检查,发现置信度C的值总是为1,图4为其中两次C的取值。可见置信度的计算出现了错误,检查发现,仿真的程序中,对C的初始化定义为:C为logical型,也就是逻辑矩阵,其中不为0的值全部置为1,导致置信度计算错误,优先权错误,所以结果是错误的。将这一句改为 C为double型,即可得到正确的置信度结果,且得到的修复结果与原程序相同。进行其他破损块的实验发现,在一些情况下,修复效果比较差。如下图:
在仿真进行到最后一步时,遇到了一些问题,就是将待修复块用最佳匹配块代替时,本来的思路是用最佳匹配块整体将待修复块代替,但是思考后发现这种方法会导致待修复块中的已知区域也被更改,引起错误。因此正确的思路如下图:
程序如下:
ind(Hp(tofill))=ind(Hq(tofill)); %把一个块中全部待修复点的坐标索引用最佳匹配块的坐标索引代替
damageImage(rows,cols) = damageImage(ind(rows,cols)); %用最佳匹配块填补破损的块,将整个9*9 用 坐标索引修改后的这个块代替
三、改进算法的仿真
对文献2 提出的改进算法的仿真:
(1)改进优先权
当等照度线方向与单位法向量垂直时,D§=0,此时即使C§较大,生成块包含的信息较多但其优先权为0,不能被及早填补,导致填充顺序错误,导致误差累计。
改进后的算法 : P§=0.4*C§+0.6R§;其中R§=D§+0.1,修复图像的结果如下图:
(2)自适应选择样本块模板窗口大小
在纹理丰富区域,如果较大的样本块模板窗口,会使结果产生错误衍生现象,而在平滑区域如果采用比较小的样本块模板窗口,会产生块效应。因此模板窗口应该是变化的。如果只用中心像素点的梯度模值,具有局限性,利用生成块中已知区域的平均梯度模值的变化来决定模板窗口的大小。
这是按照取中心像素点的梯度模值得到的运行结果。
发现中心像素值的大小在大于0.1的区间分布较多,导致修复样本块模板的窗口半径较小,修复次数多,用时长,且效果并不好。
当改为文献[1]中运用生成块中的平均梯度模值时,运行结果如下:
可以看出,修复结果的PSNR和并没有明显的优化,可能是由于该图像的特殊性导致的。并且由于样本块的半径较小时,填补次数增加,导致用时较长。
(3)自适应选择搜索空间
C§较大时,说明p点周围的已知信息越多,可靠性越高。反之,说明已知信息越少。随着修复的进行,C§在逐渐下降,p点距离最初的破损边界越来远,因此就要在较大的搜索空间内寻找匹配块。
需要注意的是,此处的R不一定是整数,这就会导致取到的矩形区域坐标不为整数出错误。下图为改进后的效果:
可以看出,运用这种方法,由于搜索的区域变小,所用时间大大减少,并且修复结果的PSNR值也大幅增加,随后尝试了令S取其他值,结果与文献中的结果相同,当S=50时,结果是最优的。 与criminis算法比较发现,改进后的算法得到的修复结果的质量(PSNR值)有所提高,而所需的时间大大减少。
参考文献
[1]A. Criminisi, P. Perez, K. Toyama. Object removal by exemplar-based inpainting[C]. In: IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2003, 721-728.
[2]范冠鹏,和红杰,陈帆,翟东海,仁青诺布. 基于局部特性的图像修复算法[J]. 光电子.激光,2012,(12):2410-2417.