本文摘录 OpenCV 中的图像变换相关操作内容,重点介绍 Opencv 中的图像修复操作。
图像经常因噪声造成破损。镜头上可能有灰尘或水渍,旧图像可能有划痕,或者图像的一部分被损坏。图像修复是消除这种损坏的一种方式,它通过摄取被损坏区域边缘的色彩和纹理,然后传播混合至损坏区域的内部。
OpenCV 图像修复函数 官方文档
cv2.inpaint(
src, # 源图像
inpaintMask, # 需要修复的图像区域mask,uint8 格式单通道图像,非零部分表示需要修复
inpaintRadius, # 算法所考虑的每个点的圆形邻域的半径
flags[, # 修复算法 cv2.INPAINT_NS 或 cv2.INPAINT_TELEA
dst] ) -> dst
img = mt.cv_rgb_imread('img1_inpaint.png')
mask = (img[:,:, 0] > 254).astype('uint8')
res_1 = cv2.inpaint(img, mask, 12, cv2.INPAINT_NS)
res_2 = cv2.inpaint(img, mask, 12, cv2.INPAINT_TELEA)
PIS(img, mask, [res_1, 'cv2.INPAINT_NS'], [res_2, 'cv2.INPAINT_TELEA'])
另一个重要的问题是图像中的噪声。在许多应用中,噪声的主要来源于低光条件的影响。在低光下,数字成像器的增益必须增加,结果呢,噪声也被放大。这种噪声的特征是随机孤立的像素,看起来太亮或太暗,但在彩色图像中也可能发生变色。
Antoni Buades, Bartomeu Coll, Jean-Michel Morel
的工作成果。虽然简单的去噪算法基本上依赖于对其周边的各个像素进行平均,但是 FNLMD 的中心概念是在图像中的其他地方寻找类似的像素,再对其取平均值。在这种情况下,像素被认为是相似的像素,不是因为它的颜色或强度相似,而是因为它在环境中是相似的。这里的关键是,许多图像包含重复的结构,因此即使像素被噪声破坏,也会有许多其他类似的像素。