数字水印 | 图像标准化论文:Digital Watermarking Robust to Geometric Distortions(一)



🤖原文: Digital Watermarking Robust to Geometric Distortions

🤖前言: 这是一篇 2005 年的 SCI 一区 + CCF-A,但是网上关于它的讲解貌似挺少的。文中提出了两种数字水印方案,但是我只关注第一种方案中的图像标准化技术。由于本人很菜,因此可能存在翻译或者理解的错误,请各位指正!



II Watermark Based on Image Normalization

该水印机制的核心思想是使用一个经过标准化的图像来嵌入和提取水印。

标准化图像 是通过一个几何变换过程得到的,该过程对于任何的图像 仿射变换 都具有不变性。也就是说,即使图像受到了仿射几何攻击,它也会保证水印在标准化图像中的完整性。

这篇博客介绍了仿射变换的基本知识:数字水印 | 仿射变换的原理入门

该水印机制的功能示意图如下图所示:

在这里插入图片描述
如上图所示,提取水印时并不需要原始图像,这使得该方案非常适合于公共水印应用。我们将首先介绍图像的矩和几何仿射变换的一些背景知识,它们是图像标准化的必要工具。



A 图像的矩和仿射变换

f ( x , y ) f(x,y) f(x,y) 表示一个尺寸为 M × N M × N M×N 的数字图像,它的原点矩 m p q m_{pq} mpq 和中心矩 μ p q μ_{pq} μpq 分别被定义为:

m p q = ∑ x = 0 M − 1 ∑ y = 0 N − 1 x p y q f ( x , y ) μ p q = ∑ x = 0 M − 1 ∑ y = 0 N − 1 ( x − x ‾ ) p ( y − y ‾ ) q f ( x , y ) \begin{alignat}{2} m_{pq} =& \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}x^py^qf(x,y) \\ \mu_{pq} =& \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}(x-\overline{x})^p(y-\overline{y})^qf(x,y) \end{alignat}{} mpq=μpq=x=0M1y=0N1xpyqf(x,y)x=0M1y=0N1(xx)p(yy)qf(x,y)

个人理解:这里应该用的是 H U \mathsf{HU} HU 矩。

其中 p , q = 0 , 1 , 2 , . . . p,q=0,1,2,... p,q=0,1,2,... 以及
x ‾ = m 10 m 00 ,   y ‾ = m 01 m 00 \overline{x}=\frac{m_{10}}{m_{00}},\ \overline{y}=\frac{m_{01}}{m_{00}} x=m00m10, y=m00m01

个人理解: ( x ‾ , y ‾ ) (\overline{x},\overline{y}) (x,y) 是图像重心的坐标。

如果存在矩阵 A = ( a 11 a 12 a 21 a 22 ) \mathbf{A}=\begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} A=(a11a21a12a22) 和向量 d = ( d 1 d 2 ) \mathbf{d}=\begin{pmatrix} d_{1} \\ d_{2} \end{pmatrix} d=(d1d2) 使得 g ( x , y ) = f ( x a , y a ) g(x,y)=f(x_a,y_a) g(x,y)=f(xa,ya),那么我们认为图像 g ( x , y ) g(x,y) g(x,y) 是图像 f ( x , y ) f(x,y) f(x,y) 的一个仿射变换结果,其中:

( x a y a ) = A ⋅ ( x y ) − d \begin{pmatrix} x_{a} \\ y_{a} \end{pmatrix}=\mathbf{A}\cdot \begin{pmatrix} x \\ y \end{pmatrix} -\mathbf{d} (xaya)=A(xy)d

个人理解:这是仿射变换的一般表达式。不过貌似现在把变换矩阵统一为了一个三维矩阵,而非一个矩阵和一个向量。

具体的仿射变换包括:

  • x x x 方向上的剪切,与之对应的是 A = ( 1 β 0 1 ) = △ A x \mathbf{A}=\begin{pmatrix} 1 & \beta \\ 0 & 1 \end{pmatrix}\overset{\triangle}{=}\mathbf{A}_x A=(10β1)=Ax
  • y y y 方向上的剪切,与之对应的是 A = ( 1 0 γ 1 ) = △ A y \mathbf{A}=\begin{pmatrix} 1 & 0 \\ \gamma & 1 \end{pmatrix}\overset{\triangle}{=}\mathbf{A}_y A=(1γ01)=Ay
  • 同时在 x x x 方向和 y y y 方向上的剪切,与之对应的是 A = ( α 0 0 δ ) = △ A s \mathbf{A}=\begin{pmatrix} \alpha & 0 \\ 0 & \delta \end{pmatrix}\overset{\triangle}{=}\mathbf{A}_s A=(α00δ)=As

GPT 说:符号 = △ \overset{\triangle}{=} = 是 “等价于” 的意思,后文中的 A x , A y , A s \mathbf{A}_x,\mathbf{A}_y,\mathbf{A}_s Ax,Ay,As 也确实分别等于上述三个矩阵。

任何仿射变换 A \mathbf{A} A 都可以被分解为上述三个变换的组合:
A = A s ⋅ A y ⋅ A x \mathbf{A}=\mathbf{A}_s\cdot\mathbf{A}_y\cdot\mathbf{A}_x A=AsAyAx
其中要求 a 11 ≠ 0 a_{11}≠0 a11=0 d e t ( A ) ≠ 0 det(\mathbf{A})≠0 det(A)=0。此外,可以根据给定的结果推导出以下结论。

引理 1: 假设图像 g ( x , y ) g(x,y) g(x,y) 是图像 f ( x , y ) f(x,y) f(x,y) 的一个仿射变换结果,其中矩阵 A = ( a 11 a 12 a 21 a 22 ) \mathbf{A}=\begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} A=(a11a21a12a22) 和向量 d = 0 \mathbf{d}=\mathbf{0} d=0,那么以下等式成立:

m p , q ′ = ∑ i = 0 p ∑ j = 0 q ( p i ) T ( q j ) a 11 i ⋅ a 12 p − i ⋅ a 21 j ⋅ a 22 q − j ⋅ m i + j , p + q − i − j μ p , q ′ = ∑ i = 0 p ∑ j = 0 q ( p i ) T ( q j ) a 11 i ⋅ a 12 p − i ⋅ a 21 j ⋅ a 22 q − j ⋅ μ i + j , p + q − i − j \begin{alignat}{2} m'_{p,q} =& \sum_{i=0}^{p}\sum_{j=0}^{q} \begin{pmatrix} p \\ i \end{pmatrix}^T \begin{pmatrix} q \\ j \end{pmatrix} a^i_{11}\cdot a^{p-i}_{12}\cdot a^{j}_{21}\cdot a^{q-j}_{22}\cdot m_{i+j,p+q-i-j}\\ \mu'_{p,q} =& \sum_{i=0}^{p}\sum_{j=0}^{q} \begin{pmatrix} p \\ i \end{pmatrix}^T \begin{pmatrix} q \\ j \end{pmatrix} a^i_{11}\cdot a^{p-i}_{12}\cdot a^{j}_{21}\cdot a^{q-j}_{22}\cdot \mu_{i+j,p+q-i-j} \end{alignat}{} mp,q=μp,q=i=0pj=0q(pi)T(qj)a11ia12pia21ja22qjmi+j,p+qiji=0pj=0q(pi)T(qj)a11ia12pia21ja22qjμi+j,p+qij

其中, m p q ′ , μ p , q ′ m'_{pq},\mu'_{p,q} mpq,μp,q g ( x , y ) g(x,y) g(x,y) 的矩, m p q , μ p , q m_{pq},\mu_{p,q} mpq,μp,q f ( x , y ) f(x,y) f(x,y) 的矩。

原文的最后一句话是不是写错了符号?我也不认为两个竖着的向量能够相乘,因此擅自加上了转置。



B 图像的标准化

在本节中,我们描述了一个对仿射几何变换具有不变性的标准化过程。在模式识别问题(提取对仿射变换保持不变的图像特征)中,利用矩进行图像标准化的概念是众所周知的。因此我们也对图像应用一个标准化过程,使其满足一组预定义的矩准则。

给定图像 f ( x , y ) f(x,y) f(x,y),标准化过程由以下步骤组成。




步骤一: 对图像 f ( x , y ) f(x,y) f(x,y) 进行中心定位;这是通过设置矩阵 A = ( 1 0 0 1 ) \mathbf{A}=\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} A=(1001) 和向量 d = ( d 1 d 2 ) \mathbf{d}=\begin{pmatrix} d_1 \\ d_2 \end{pmatrix} d=(d1d2) 来实现的,其中:
d 1 = m 10 m 00 ,   d 2 = m 01 m 00 d_1=\frac{m_{10}}{m_{00}},\ d_2=\frac{m_{01}}{m_{00}} d1=m00m10, d2=m00m01
m 10 , m 01 , m 00 m_{10},m_{01},m_{00} m10,m01,m00 是图像 f ( x , y ) f(x,y) f(x,y) 原点矩,令 f 1 ( x , y ) f_1(x,y) f1(x,y) 表示由此得到的中心图像。该步骤是为了实现平移的不变性。

个人理解:平移一个重心的位置。



步骤二: x x x 方向上对图像 f 1 ( x , y ) f_1(x,y) f1(x,y) 进行一个剪切变换,其中矩阵 A x = ( 1 β 0 1 ) \mathbf{A}_x=\begin{pmatrix} 1 & \beta \\ 0 & 1 \end{pmatrix} Ax=(10β1),得到结果图像 f 2 ( x , y ) = △ A x [ f 1 ( x , y ) ] f_2(x,y)\overset{\triangle}{=}\mathbf{A}_x[f_1(x,y)] f2(x,y)=Ax[f1(x,y)],达到: μ 30 ( 2 ) = 0 \mu^{(2)}_{30}=0 μ30(2)=0

注意:上标 ( 2 ) (2) (2) 是用于指明这是 f 2 ( x , y ) f_2(x,y) f2(x,y) 的中心矩。



步骤三: y y y 方向上对图像 f 2 ( x , y ) f_2(x,y) f2(x,y) 进行一个剪切变换,其中矩阵 A y = ( 1 0 γ 1 ) \mathbf{A}_y=\begin{pmatrix} 1 & 0 \\ \gamma & 1 \end{pmatrix} Ay=(1γ01),得到结果图像 f 3 ( x , y ) = △ A y [ f 2 ( x , y ) ] f_3(x,y)\overset{\triangle}{=}\mathbf{A}_y[f_2(x,y)] f3(x,y)=Ay[f2(x,y)],达到: μ 11 ( 3 ) = 0 \mu^{(3)}_{11}=0 μ11(3)=0

我也不知道为什么要让中心矩达到这些标准?



步骤四: 同时在 x x x 方向和 y y y 方向上对图像 f 3 ( x , y ) f_3(x,y) f3(x,y) 进行一个剪切变换,其中矩阵 A s = ( α 0 0 δ ) \mathbf{A}_s=\begin{pmatrix} \alpha & 0 \\ 0 & \delta \end{pmatrix} As=(α00δ),得到结果图像 f 4 ( x , y ) = △ A s [ f 2 ( x , y ) ] f_4(x,y)\overset{\triangle}{=}\mathbf{A}_s[f_2(x,y)] f4(x,y)=As[f2(x,y)],达到:① 规定的标准尺寸;② μ 50 ( 4 ) > 0 \mu^{(4)}_{50}>0 μ50(4)>0 μ 05 ( 4 ) > 0 \mu^{(4)}_{05}>0 μ05(4)>0

最终得到标准化后的图像 f 4 ( x , y ) f_4(x,y) f4(x,y),在此基础上进行后续的水印嵌入和提取。




由前文的介绍可知,一般的仿射变换攻击可以分解为平移、双向剪切、双向缩放的组合,而标准化过程中的 4 4 4 个步骤分别用于消除这些失真成分。

具体来说: 步骤一将标准化图像的中心设置在被仿射变换攻击的图像的密度中心,以消除仿射攻击的平移。步骤二和步骤三消除 x x x y y y 方向上的剪切。步骤四通过将标准化图像强制到标准大小来消除缩放失真。

需要注意的是,标准化过程中的每一步都是可逆的。这允许我们在嵌入水印后,将标准化后的图像还原为原始的大小和方向。当然,我们还需要确定上述过程中变换矩阵 A x , A y , A s \mathbf{A}_x,\mathbf{A}_y,\mathbf{A}_s Ax,Ay,As 中的参数。我们将在下一节中讨论这个问题。在下面的定理中,我们给出了标准化图像对仿射变换的不变性质。

定理 1: 原始图像和它的仿射变换结果具有相同的标准化图像。演示过程如下图所示:

在这里插入图片描述

在上图 (a) 中,我们展示了一幅原始图像 L e n a \mathsf{Lena} Lena。在上图 (b) 中,我们展示了经过仿射变换后的图像。在上图 (c) 中,通过上述标准化过程后,这两幅图像都产生了相同的标准化图像。

原文说该定理的证明过程在附录中,可是我不打算看了😇



  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个 GitHub 仓库包含了一个基于深度学习的数字水印技术的实现代码,主要分为两部分:水印嵌入和水印提取。 1. 水印嵌入 在水印嵌入方面,作者使用了 ResNet18 作为基础模型,从 ImageNet 数据集上进行预训练,然后使用一个全连接层将其输出转化为水印的编码,再将编码嵌入到目标图像的 DCT 系数中。具体实现流程如下: 1.1. 加载模型 调用 `models.py` 中的 `ResNet18()` 函数构建 ResNet18 模型,然后使用 PyTorch 自带的 `torch.load()` 函数加载预训练的权重文件。 1.2. 加载水印 使用 `watermark.py` 中的 `load_watermark()` 函数加载水印,这个函数会将水印转化为二进制格式,并且在最后加上一个结束标志。 1.3. 将水印编码嵌入到图像中 使用 `embed.py` 中的 `embed()` 函数,将预训练的 ResNet18 模型的输出作为水印的编码,然后将编码嵌入到目标图像的 DCT 系数中。 2. 水印提取 在水印提取方面,作者同样使用了 ResNet18 作为基础模型,但是这次不需要对其进行训练,只需要使用预训练的权重文件进行推理,得到目标图像中嵌入的水印编码,然后解码得到原始的水印。具体实现流程如下: 2.1. 加载模型 同样是调用 `models.py` 中的 `ResNet18()` 函数构建 ResNet18 模型,然后使用 PyTorch 自带的 `torch.load()` 函数加载预训练的权重文件。 2.2. 从图像中提取水印编码 使用 `extract.py` 中的 `extract()` 函数,将目标图像的 DCT 系数作为输入,经过模型推理得到水印编码。 2.3. 解码水印 使用 `watermark.py` 中的 `decode_watermark()` 函数,将水印编码解码得到原始的水印。 总体来说,这个仓库的实现使用了深度学习的方法,将水印编码嵌入到图像中,然后通过模型进行水印提取,可以有效地保护数字内容的版权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值