去水印--《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 条评论
登录 后参与评论

相关文章

来自专栏SIGAI学习与实践平台

DenseNet详解

作为CVPR2017年的Best Paper, DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,...

975
来自专栏智能算法

分类回归树算法---CART

一、算法介绍 分类回归树算法:CART(Classification And Regression Tree)算法也属于一种决策树,和之前介绍了C4.5算法相...

5338
来自专栏小樱的经验随笔

【机器学习笔记之三】CART 分类与回归树

本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 ---- CART - Classification and Regression Trees...

3086
来自专栏统计学习方法

《统计学习方法》第八章-提升方法

在《统计学习方法》中第八章提升方法,包括四节,第一节介绍AdaBoost、第二节介绍AdaBoost的误差、第三节介绍从前向分布算法来实现AdaBoost、第四...

1836
来自专栏张俊红

决策树-CART算法

总第80篇 01|前言: 本篇接着上一篇决策树详解,CART是英文“classification and regression tree”的缩写,翻译过来是分...

3155
来自专栏磐创AI技术团队的专栏

基于word2vec训练词向量(一)

1.回顾DNN训练词向量 上次说到了通过DNN模型训练词获得词向量,这次来讲解下如何用word2vec训练词获取词向量。 回顾下之前所说的DNN训练词向量的模...

4005
来自专栏机器学习算法全栈工程师

DenseNet:比ResNet更优的CNN模型

本篇文章首先介绍DenseNet的原理以及网路架构,然后讲解DenseNet在Pytorch上的实现。

2595
来自专栏智能算法

分类回归树算法---CART

一、算法介绍 分类回归树算法:CART(Classification And Regression Tree)算法也属于一种决策树,和之前介绍了C4.5算法相...

3409
来自专栏个人分享

C4.5决策树算法概念学习

•分类(Classification)就是按照某种标准给对象贴标签,再根据标签来区分归类,类别数不变。

772
来自专栏专知

网络节点表示学习论文笔记02—CIKM2015GraRep: 基于全局结构信息的图结点表示学习

【导读】这次论文笔记介绍了介绍一种具有代表性的网络节点表示学习(NRL)方法:GraRep。以LINE为代表的一系列NRL算法一些网络上具有很好地学习效果,但它...

5077

扫码关注云+社区