image inpainting 图像修改
这篇博客将介绍如何通过OpenCV中图像修复的技术——cv2.inpaint() 去除旧照片中的小噪音、笔划等。并提供一个可交互式的程序,利用OpenCV的快速行进和流体力学俩种修复算法对自己的图片进行修复。
大多数人家里都会有一些旧的老化照片,上面有一些黑点、笔划等。如何复原呢?
在绘制工具中擦除:将简单地用无用的白色结构替换黑色结构,效果并不理想。OpenCV中图像修复的技术——基本思想很简单:用相邻像素替换这些坏标记,使其看起来像邻居。
-
cv2.INPAINT_TELEA(Fast Marching Method 快速行进算法)
-
cv2.INPAINT_NS(Fluid Dynamics Method 流体力学算法)
-
OpenCV未实现的:Content-Aware Fill 内容感知填充算法,这是Adobe Photoshop中使用的一种高级修复技术。
cv2.inpaint() 优点:修复效果更加自然;
缺点:修复时需要提供原图以及mask图(与原图一致只有被污染的像素区域有值);
1. 效果图
官方原始图 VS mask图 VS 快速行进算法修复效果 VS 流体力学修复效果 如下: