zoukankan      html  css  js  c++  java
  • 批量去水印技术原理(以我的衣橱为例,给老赵找找麻烦)

    批量去水印是个邪恶的技术,以老赵的衣橱为例子就更邪恶了。之所以以衣橱为例子而不以时尚网为例子,是标题需要。实际上,时尚网的水印批量去除效果更佳。闲话少说,摆原理,上图片(代码就不上了)。

    ======================================

    通过观察可以发现,如果以图片的右下角为基准,很多网站图片的水印位置是固定的,因此,可以通过以下步骤去除:

    第一步:制定一张mask图片,这张图片标记了水印的位置。

    mask图片可以用photoshop或其它工具做。我最初的想法是让程序智能提取,输入两张带有水印的图片,根据水印区域相似性来找到水印区。这个思路实现起来比较难,试了几个方法,都不理想。还是用photoshop扣掉非水印区域省心。

    下面是我做的“衣橱”的mask图片,其中非白色的像素便是水印区:

    mask2

    第二步:对于要去水印的图片,根据mask图片,通过程序抠掉其中的水印区域。这一步可以省略,抠不抠都不影响最终结果。放在这里是为了把原理讲的更清晰些。经过第二步,我们得到了一张局部残缺的图片。

    第三步:图片复原。图片复原是一种图像处理技术,英文叫Image Inpainting。原理很复杂,网上的论文大把抓,有兴趣的可以去看看。

    我用的是OpenCV的图像复原函数。先看看OpenCV图像复原的演示,对这个技术有个直观认识。这是一张残缺的照片:

    image

    复原后的照片:

    image

    效果很棒。:P

    我按上面思路写了一个 demo,拿老赵的衣橱做实验,结果如下:

    image

    换张图片试试:

    image

    再换张:

    image

    水印去掉了,复原后的图片,仔细看,还能看出痕迹。mask模板再制作精良点,选择更好的算法估计效果会好一些。

    版权所有,欢迎转载
  • 相关阅读:
    How can i use iptables on centos 7?
    Running Jenkins behind Nginx
    GPG入门教程
    HTML5 canvas标签-4 灰度直方图的实现
    [转载]手把手用C++解密Chrome80版本数据库
    Delphi
    7-zip Delphi API
    cef对本地web资源打包加密
    CEF3资源重定向、读取加密资源、读取zip资源
    axios设置withCredentials导致“跨域”的解决方案
  • 原文地址:https://www.cnblogs.com/xiaotie/p/1627669.html
Copyright © 2011-2022 走看看