引言
这两天看了Learn OpenCV 上关于图像修复(Image Inpainting)的相关文章,图像修复可能听起来是一项很难的技术,实际上确实如此。
有时相片上出现了划痕,我们第一时间可能想到的修复方式可能就是PS,然而利用Opencv写几十行代码就可以轻松的修复简单的划痕。
图像修复是什么
图像修复时计算机视觉中一种利用某种算法填充图像或者视频内的区域的方法,我们用二进制mask标识要修复的区域,并用其周边区域的信息完成修复。
修复的算法
文章中介绍了两种算法
cv2.INPAINT_NS: 基于Navier-Stokes的修复
如果你学过流体力学,NS方程一定是你绕不开的一个方程。

它极难寻找解析解,因此我们通常要进行一些假设消去某些项。
例如我们会做出流体不可压的假设,有时会忽略流体的黏性等等。
具体如何把牛顿流体与图像降噪进行类比,可以参考论文:
NS
我们来看图像与牛顿流体的类比

论文中提到了该类比表,其中将图像灰度类比为流函数,图像的等照度线(等灰度线?)类比为流体的流速(流函数的梯度),光滑度类比为流体旋涡,各向异性的散射类比为流体黏性。
论文在最后证明了利用NS方程进行图像降噪方法的解的存在与唯一性。
cv.INPAINT_TELEA: 基于快速行进方法
该算法利用图像邻域的加权平均修补去计算平滑度,理论上比上述NS方法利用拉普拉斯算子的方法更快速。
然而实际上NS效果稍好,速度也稍好。
OpenCV-Python 实现图像修复技术

本文介绍了使用OpenCV-Python进行图像修复的方法,包括基于Navier-Stokes的cv2.INPAINT_NS算法和基于快速行进方法的cv.INPAINT_TELEA算法。通过实例展示了如何利用这两种算法修复图像中的划痕,以及如何设置修复区域和修复半径。
最低0.47元/天 解锁文章
3685

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



