前言
使用OpenCV进行图像修复,在ps里面有现成的功能,但是今天使用代码尝试了下,感觉效果还不错。
这个代码对比较细长的划痕、破损修复的效果比较好,但是对于一个区域类似于圆、矩形等形状修复效果并不是很好。下面会有例子展示。
作为一名工程师,不需要打开ps,只需要编写十几代码就可以进行图像修复!!!
环境:ubuntu、anaconda、python、vscode
什么是图像修复?
图像修复是计算机视觉中的一类算法,其目标是填充图像或视频内的区域。
该区域使用二值掩码来识别,填充通常是通过从需要填充的区域的边界传播信息来完成的。
图像修复最常见的应用是旧扫描照片的修复。它还用于删除图像中不需要的小对象。
修复算法
一共有两种修复算法,
INPAINT_NS : 基于 Navier-Stokes 的修复
大致的思路是这样的,如果你有兴趣可以去读一下源论文:
- 保留梯度(即边缘特征)
- 继续在平滑边缘传播颜色信息
INPAINT_TELEA : 基于快速行进方法
在已知的邻域像素和梯度和用于估计要修复的像素的颜色的情况下。使用像素的已知图像邻域的加权平均来修补。一旦像素被修复,边界需要更新
利弊
根据理论和论文,基于 Navier-Stokes 的修复应该更慢,并且倾向于产生比基于 Fast Marching 的方法更模糊的结果

最低0.47元/天 解锁文章
830

被折叠的 条评论
为什么被折叠?



