美文网首页
图像去水印

图像去水印

作者: 顽皮的石头7788121 | 来源:发表于2019-02-22 15:45 被阅读0次

(1)相关代码
import cv2

src = cv2.imread('1.jpg')

mask = cv2.imread('2.jpg', cv2.IMREAD_GRAYSCALE)  # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像

dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_TELEA)

cv2.imwrite('result.jpg', dst)

(2)对应算法

    INPAINT_TELEA算法是由TELEA在2004年提出的基于快速行进的修复算法(FMM算法),先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点。具体实现时,首先制作出黑底白色水印且相同位置的水印蒙版图(必须单通道灰度图),然后使用inpaint方法处理原始图像,具体使用时可把水印区放粗,以达到最好的处理效果。

原始图像,水印蒙版图和去除效果

    该算法(又名FMM算法)的去除原理为,先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点。对于单个像素来说,其修复过程如下:

算法原理图

        如图Ω区域是待修复的区域;要修复Ω中的像素,就需要计算出新的像素值来代替原值。现在假设p点是我们要修复的像素。以p为中心选取一个小邻域B(ε),该邻域中的点像素值都是已知的(只要已知的)(如图中虚线部分)。

        我们需要的是用邻域Bε(p)中的所有点计算p点的新灰度值。显然,各个像素点所起的作用应该是不同的,也就引入了权值函数来决定哪些像素的值对新像素值影响更大,哪些比较小。

    

计算公式

        这里的w(p, q)就是权值函数,q为邻域Bε(p)中的某一点是用来限定邻域中各像素的贡献大小的。

        其中,d_{0} T_{0} 分别为距离参数和水平集参数,一般都取为 1。方向因子 dir(p,q)保证了越靠近法线方向 N的像素点对 p 点的贡献最大;几何距离因子 dst(p,q)保证了离 p 点越近的像素点对p 点贡献越大;水平集距离因子lev(p,q)保证了离经过点 p 的待修复区域的轮廓线越近的已知像素点对点 p 的贡献越大。

相关文章

网友评论

      本文标题:图像去水印

      本文链接:https://www.haomeiwen.com/subject/lcgsyqtx.html