去水印--《On the Effectiveness of Visible Watermarks》

On the Effectiveness of Visible Watermarks CVPR2017

大牛 William T. Freeman 去了 Google Research 本文没有使用深度学习,使用传统的优化算法来解决水印去除。

首先看图有个感性认识吧

基于单张图像去除水印的难度还是很大的。这里我们在网上搜集使用同一个水印的大量图像,基于这些图像,我们估计出 Watermark (W) 和 alpha matte (α),再得到没有水印的原始图像。结果还是很不错的,最后本文也研究了一下怎么让这个水印不那么容易去除。

3 An Attack on Watermarked Collections 这里首先来看看问题的数学描述,假定含有水印的图像为 J,水印为 W,原始图为 I,那么这三者间的关系如下:

其中 p=(x,y) 是像素的位置,α(p) 是一个随着位置而变化的opacity,也叫 alpha matte,类似一种调和因子吧。大部分使用的水印在图像中都是半透明的,所以对所有像素,α(p) < 1,或者 α=c·α_n, c是一个常量值 constant blending factor,α_n 是一个在0-1 之间的 normalized alpha matte 。和 image matting 类似,图像中大部分像素的 α_n 要么是 0 (background)要么是1(foreground)

一旦得到了 W 和 α,那么原始图像就很容易得到

对于单张图像的情况,给定J 去得到 I 是很难的,因为 这个问题是 under-determined, 变量个数大于方程的个数(there are fewer equations than unknowns)

但是同一个水印通常以同一种方式被加到许多图像上去。对于一组使用了相同的 W 和α 的图像,可以用下面的公式表示

给定一组水印图像 J, 我们希望估计出 W 、α、原始图像 I, 这个 multi-image matting 问题仍然是一个 under-determined,对于 K个彩色图像,每个像素有 3K 个方程 和 3(K + 1) + 1 变量。 但是因为 图像集中的 W 和α 的一致性,以及自然图像的先验知识,可以全自动的求解上述问题,得到很高精度的解。

我们去除水印的算法包括几个步骤,如下图所示:

我们首先来解决使用相同的 W 和 α 加水印的问题,然后再考虑 使用不同的 W 和 α 加水印的问题

3.1. Initial Watermark Estimation & Detection 第一个任务就是在一组图像中怎么讲所有图像中属于水印的图像结构检测出来。这是一个先有鸡还是先有蛋的问题。水印估计和水印在图像什么位置是相互依赖的关系。这里我们对所有图像进行联合 水印估计和检测。也就是通过迭代下面的估计和检测步骤。

I. Estimating the Matted Watermark 给定所有图像中的水印当前估计的区域,我们通过观察这些区域图像梯度的一致性来检测出水印梯度,也就是我们通过计算这些区域的图像梯度的中间值 median,对每个像素的 x 和 y 方向分别计算

随着 K 的增加,上述公式会收敛于 水印的梯度,会有一个位移偏差,后面我们会修正这个偏差

我们通过Canny得到的 edge map 来定位出水印的外接矩形框,这样就修正了上面的位移偏差

II. Watermark Detection 给定估计到的水印梯度 ,我们使用边缘模板匹配算法 Chamfer Distance 检测出所有图像中的水印位置。

水印梯度的初始化可以通过人为框出水印区域来,也可以利用水印位置的先验知识(如果有的话)

3.2. Multi-Image Matting and Reconstruction 有了所有图像中水印的检测位置信息,我们的目标就是解决 multi image matting problem,有 J 得到 W 、α、原始图像 I,我们定义如下的目标函数

随后对公式中的每一项进行了解释

Optimization 最后我们改写了一下目标函数的形式如下

我们使用下面的三个迭代步骤来求解上面的目标函数 I. Image–Watermark Decomposition 这一步 通过固定 α 和 W 来最小化目标函数

II. Watermark Update 这一步 由所有图像的各自 水印梯度得到 全局水印梯度,也就是去中值

III. Matte Update 这一步是通过固定其他参数,求解 α

Matte and Blend Factor Initialization: 探讨了一些初始化问题

3.3. Removing the Watermark in a New Image 有了 W and α 就可以将任意新图像中的水印去除(前提是使用了相同的 W and α)

4 A Generalized Watermarking Model 怎么让水印不那么容易被去除了? 考虑到水印的特殊性,我们只关注对水印进行 subtle variations opacity changes do not affect the results much, and that geometric perturbations have the most significant impact on the quality of the reconstructions.

Watermark removal comparison with baselines

Datasets and running tim

Results on stock imagery

Reconstruction quality and comparison

Example limitation

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

禅与奶罩识别艺术(下)

编者按:本文接上期禅与奶罩识别艺术(上),作者 Kaiser,景略集智总经理,原文载于集智网专栏,雷锋网 AI 研习社已获授权。 过拟合/欠拟合 之前介绍了...

4047
来自专栏技术随笔

[译] End-to-end people detection in crowded scenes

2746
来自专栏深度学习自然语言处理

word2vec理论与实践

导读 本文简单的介绍了Google 于 2013 年开源推出的一个用于获取 word vector 的工具包(word2vec),并且简单的介绍了其中的两个训练...

2666
来自专栏python开发者

神经网络反向传播梯度计算数学原理

[神经网络]反向传播梯度计算数学原理 1 文章概述 本文通过一段来自于Pytorch官方的warm-up的例子:使用numpy来实现一个简单的神经网络。使用基本...

33713
来自专栏深度学习自然语言处理

近期有哪些值得读的QA论文?

■ 论文 | Making Neural QA as Simple as Possible but not Simpler

903
来自专栏应兆康的专栏

贝叶斯分类器及Python实现

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文由本人学习贝叶斯分类器过程中的笔记,再加上使用Python进行文本分类实战...

57922
来自专栏大数据文摘

【干货】用朴素贝叶斯进行文本分类

2049
来自专栏机器学习算法原理与实践

谱聚类(spectral clustering)原理总结

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时...

493
来自专栏应兆康的专栏

贝叶斯分类器及Python实现

由于某些不可抗拒的原因,LaTeX公式无法正常显示. 点击这里查看PDF版本 Github: https://github.com/yingzk/MyML 博 ...

3347
来自专栏机器学习、深度学习

人群密度估计--Learning a perspective-embedded deconvolution network for crowd counting

Learning a perspective-embedded deconvolution network for crowd counting 没有找到代...

2106

扫码关注云+社区