Aim:使用修补技术去除老照片中小的噪音和划痕。
使用OpenCV中与修补技术有关的函数。
基础
- 如何修复退化的老照片?用坏点周围的像素取代坏点,使其和周围像素比较像。OpenCV中有两种算法:
**算法一:**基于快速行进算法。 - 算法从要修补的区域的边界开始,向区域内部慢慢前进。
- 首先填充区域边界像素。
- 选取待修补像素周围的一个小邻域,使用邻域内的归一化加权和更新待修复的像素值。
- 权重选择:靠近带修复点的像素点、靠近正常边界像素点和在轮廓上的像素点给与更高的权重。
- 当像素被修复后,使用快速行进算法移动到下一个最近像素。
- FMM保证靠近已知像素点的坏点先被修复。标签参数:cv2.INPAINT_TELEA.
**算法二:**基于流体动力学并使用偏微分方程。 - 基本原理:启发式。
- 先沿着正常区域的边界向退化区域的边界前进。
- 通过匹配待修复区域中的梯度向量来延伸等光强线(isophotes,由灰度值相等的点连成的线)。使用流体动力学中的方法实现此目的,然后通过填充颜色来使这个区域内的灰度值变化最小。标签参数:cv2.INPAINT_NS.
代码演示
#coding=utf-8
import cv2
import numpy as np
img=cv2.imread('./image2/1234.jpg')
mask=cv2.imread('./image2/123.jpg',0)
dst=cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()