使用OpenCV进行图像修复-项目示例
图像修复是去除图像上的噪声, 笔触或文本等损坏的过程。在恢复可能有刮擦边缘或墨水斑点的旧照片时, 此功能特别有用。这些可以通过这种方法以数字方式删除。
图像修复的工作原理是将损坏的像素替换为与相邻像素相似的像素, 从而使其不显眼并帮助它们与背景完美融合。考虑下图。
图像右侧有一些标记。要绘制此图像,我们需要一个蒙版,它本质上是一个带有白色标记的黑色图像,以指示需要校正的区域。在本例中,掩码是在GIMP上手动创建的。
修复算法–
OpenCV实现了两种修复算法:
- “基于快速行进方法的图像修复技术”, Alexandru Telea, 2004年:
这基于快速行进方法(FMM)。观察要修复的区域, 该算法首先从边界像素开始, 然后转到边界内的像素。它用背景中像素的加权总和替换要修复的每个像素, 而较重的像素分配给较近的像素和边界像素。 - ” Navier-Stokes, 流体动力学以及图像和视频修补”, Berttalio, Marcelo, Andrea L. Bertozzi和Guillermo Sapiro, 2001年:
该算法受偏微分方程启发。从边缘(已知区域)向未知区域开始, 它传播等张线(连接相同强度点的线)。最后, 将区域的差异最小化以填充颜色。
可以通过使用FMM来调用cv2.INPAINT_TELEA, 而Navier-Stokes可以使用cv2.INPAINT_NS。下面的Python代码使用Navier-Stokes修补了猫的图像。
import numpy as npimport cv2
# Open the image.
img = cv2.imread( 'cat_damaged.png' )
# Load the mask.
mask = cv2.imread( 'cat_mask.png' , 0 )
# Inpaint.
dst = cv2.inpaint(img, mask, 3 , cv2.INPAINT_NS)
# Write the output.
cv2.imwrite( 'cat_inpainted.png' , dst)
输出如下:
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
以上是 使用OpenCV进行图像修复-项目示例 的全部内容, 来源链接: utcz.com/p/204315.html