使用OpenCV进行图像修复-项目示例

图像修复是去除图像上的噪声, 笔触或文本等损坏的过程。在恢复可能有刮擦边缘或墨水斑点的旧照片时, 此功能特别有用。这些可以通过这种方法以数字方式删除。
图像修复的工作原理是将损坏的像素替换为与相邻像素相似的像素, 从而使其不显眼并帮助它们与背景完美融合。考虑下图。

使用OpenCV进行图像修复-项目示例

文章图片
图像右侧有一些标记。要绘制此图像,我们需要一个蒙版,它本质上是一个带有白色标记的黑色图像,以指示需要校正的区域。在本例中,掩码是在GIMP上手动创建的。
使用OpenCV进行图像修复-项目示例

文章图片
修复算法–
OpenCV实现了两种修复算法:
  1. “ 基于快速行进方法的图像修复技术” , Alexandru Telea, 2004年:
    这基于快速行进方法(FMM)。观察要修复的区域, 该算法首先从边界像素开始, 然后转到边界内的像素。它用背景中像素的加权总和替换要修复的每个像素, 而较重的像素分配给较近的像素和边界像素。
  2. ” 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 np import 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)

【使用OpenCV进行图像修复-项目示例】输出如下:
使用OpenCV进行图像修复-项目示例

文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读