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

On the Effectiveness of Visible Watermarks
CVPR2017

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

首先看图有个感性认识吧
去水印--《On the Effectiveness of Visible Watermarks》_第1张图片

基于单张图像去除水印的难度还是很大的。这里我们在网上搜集使用同一个水印的大量图像,基于这些图像,我们估计出 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 和α 的一致性,以及自然图像的先验知识,可以全自动的求解上述问题,得到很高精度的解。

我们去除水印的算法包括几个步骤,如下图所示:
去水印--《On the Effectiveness of Visible Watermarks》_第2张图片

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

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

I. Estimating the Matted Watermark
给定所有图像中的水印当前估计的区域,我们通过观察这些区域图像梯度的一致性来检测出水印梯度,也就是我们通过计算这些区域的图像梯度的中间值 median,对每个像素的 x 和 y 方向分别计算
这里写图片描述
随着 K 的增加,上述公式会收敛于 水印的梯度,会有一个位移偏差,后面我们会修正这个偏差
去水印--《On the Effectiveness of Visible Watermarks》_第3张图片
我们通过Canny得到的 edge map 来定位出水印的外接矩形框,这样就修正了上面的位移偏差

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

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

3.2. Multi-Image Matting and Reconstruction
有了所有图像中水印的检测位置信息,我们的目标就是解决 multi image matting problem,有 J 得到 W 、α、原始图像 I,我们定义如下的目标函数
去水印--《On the Effectiveness of Visible Watermarks》_第4张图片
随后对公式中的每一项进行了解释

Optimization
最后我们改写了一下目标函数的形式如下
去水印--《On the Effectiveness of Visible Watermarks》_第5张图片

我们使用下面的三个迭代步骤来求解上面的目标函数
I. Image–Watermark Decomposition
这一步 通过固定 α 和 W 来最小化目标函数
去水印--《On the Effectiveness of Visible Watermarks》_第6张图片

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.

去水印--《On the Effectiveness of Visible Watermarks》_第7张图片

去水印--《On the Effectiveness of Visible Watermarks》_第8张图片

Watermark removal comparison with baselines
去水印--《On the Effectiveness of Visible Watermarks》_第9张图片

Datasets and running tim
去水印--《On the Effectiveness of Visible Watermarks》_第10张图片

Results on stock imagery

去水印--《On the Effectiveness of Visible Watermarks》_第11张图片

Reconstruction quality and comparison
去水印--《On the Effectiveness of Visible Watermarks》_第12张图片

Example limitation
去水印--《On the Effectiveness of Visible Watermarks》_第13张图片

你可能感兴趣的:(CVPR2017)