版权声明:不得随意转载 https://blog.csdn.net/qq_35789421/article/details/88992020
图像通常伴随干扰噪声的存在,在某些场景下会出现局部区域图像污染的情形,因此需要对其进行修复。数字修复可用来解决图像中小区域污染以重构原始图像,近年来被广泛应用在去除文本和Logo图标等场景中,利用重构去除图像中的划痕和污点。常用的图像修复基于快速行进的修复算法(FMM)的原理思想是先处理待修复区域边缘上的像素点,然后扩大区域进行遍历,直到修复完所有待修复的图像像素。
Opencv中提供的inpaint函数可以实现图像修复操作,具体参数详细介绍如下:
void inpaint(src,inpaintMask,dst,inpaitRadius,flags,inpaitRadius,flags);
其中参数src表示源图像,inpaintMask为输入掩码图像,dst为输出图像,inpaintRadius用于设定像素点修复邻域半径;flag为修复算法类型选择,可选择INPAINT_NS或者INPAINT_TELEA。
图像污点修复的实现过程如下:
<1>计算边界内部区域上p点一阶导数,以p点为中心选取一个小邻域,根据给定的q点像素及其在该点的梯度值,可以计算出p点一阶导数:
<2>计算p点新像素值,根据邻域作用差别性,引入权重函数,权重函数的计算通过距离参数与水平集参数获得,然后通过下式来计算新的p点像素值:
<3>对上述图像进行新像素值生成操作,先完成待修复区域边缘上的像素点,逐步收缩待修复区域的边界,直至完成整个区域的修复。