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

相关文章

来自专栏有趣的Python

4- OpenCV+TensorFlow 入门人工智能图像处理-灰度化处理

图片特效及线段文字的绘制 特效1: 灰度处理 ? mark 完成彩色图片灰度化。彩色图片有三个颜色通道RGB 灰度图片也是三通道的话,RGB值相等。 单通...

4479
来自专栏计算机视觉life

自识别标记(self-identifying marker) -(4) 用于相机标定的CALTag源码剖析(下)

接上篇内容,继续对CALTag源码进行详细剖析~ 3、 角点检测 为了方便说明,在此将一个自识别标记,也就是上一步骤保留的连通区域,称为一个quad。下面分...

2269
来自专栏有趣的Python

5- 深度学习之神经网络核心原理与算法-正则化

1332
来自专栏书山有路勤为径

特征类型和图像分割

我们最想检测的就是角点,因为角点是可重复性最高的特征,也就是说因为角点是可重复性最高的特征,给出关于同一景象的两张或以上图像 我们就能很轻易地识别出这类特征。 ...

1053
来自专栏机器学习算法工程师

机器学习实战——LBP特征提取

作者:张旭 编辑:栾志勇 零 全篇概述: LBP(Local Binary Pattern)算法 是一种描述图像特征像素点与各个像素点之间的灰度关系的局部特征的...

6158
来自专栏应兆康的专栏

OpenCV+TensorFlow 人工智能图像处理 (2)

[[1, 0, 100], [0, 1, 200]] 转变为2个矩阵: [[1, 0], [0, 1]] 和 [[100], [200]] 分别对...

952
来自专栏人工智能LeadAI

卷积神经网络中PET/CT图像的纹理特征提取

Author: Zongwei Zhou 周纵苇 Weibo: @MrGiovanni Email: zongweiz@asu.edu Please cit...

3973
来自专栏有趣的Python

9- OpenCV+TensorFlow 入门人工智能图像处理-8- OpenCV+TensorFlow 入门人工智能图像处理-图像修复

3364
来自专栏天天P图攻城狮

终端图像处理系列 - OpenGL ES 2.0 - 3D基础(矩阵投影)

Overview 移动设备的屏幕是二维平面,要想把一个三维场景渲染在手机二维屏幕上,需要利用OpenGL中的矩阵投射,将三维空间中的点映射到二维平面上。三维矩阵...

50910
来自专栏人工智能LeadAI

iOS 图片风格转换(CoreML)

前言 图片风格转换最早进入人们的视野,估计就是Prisma这款来自俄罗斯的网红App。他利用神经网络(多层卷积神经网络)将图片转换成为特定风格艺术照片。利用图片...

4408

扫码关注云+社区