神奇的图像修复技术-使用opencv图像处理
一、效果展示
1.使用opencv进行图像修复,对一张简单缺损的图片进行修复的效果如下图所示:
修复前 | 修复后 |
---|---|
![]() |
![]() |
2.对一个被模糊的网格线污染了的图片进行修复的效果如下图所示:
修复前 | 修复后 |
---|---|
![]() |
![]() |
原始图片和完整代码在github项目中:
https://github.com/zhmc/inpaint_demo
二、使用的opencv函数inpaint基本介绍
C++中cv::inpaint函数声明如下:
void inpaint( const Mat& src, const Mat& inpaintMask,
Mat& dst, double inpaintRange, int flags );
第一个参数src是要修复的图像,Mat类型的,为8位单通道或者三通道图像的输入图像;
第二个参数inpaintMask为修复掩膜,为8位单通道图像,其中非零像素表示要修补的区域;
第三个参数dst为修复后的结果,它和src图像类型是一样的;
第四个参数inpaintRange是修复参考圆半径,double类型的,修复算法会使用需要修复点邻近的圆形区域,参照这个圆形区域内的像素点进行插值修复;
最后一个参数flags是修复算法类别,int