基于DCT‐OFDM的抗裁剪、旋转和缩放攻击的水印方案
摘要
数字水印用于版权保护,其方法应具备对JPEG压缩、裁剪、旋转和缩放攻击等各种攻击的鲁棒性。基于在IWIHC2014上提出的DCT‐OFDM水印方法,本文提出了一种性能增强的方法。该提出的方法包含两个思路:一是降低同步恢复所需的计算成本;二是使用纠错码对水印信息进行编码,并通过最大似然算法进行解码。结果表明,我们的方法在IHC评估标准下具有高鲁棒性,同时质量下降较少且计算成本较低。
关键词 : JPEG压缩 · Clipping攻击 · Synchronization信号 · Rotation攻击 · Scaling攻击 · Convolutional code
1 引言
由于数字技术的近期发展,图像、视频和音频等多媒体内容已变得十分普遍,并通过多种网络服务在互联网上传播。然而,数字内容的未经授权复制和未经授权分发等版权侵权问题也随之而来。数字水印是保护数字内容版权的手段之一,它能够在不严重降低多媒体内容感知质量的前提下嵌入附加信息。为了实现多媒体内容的版权保护,数字水印方法需要具备抵抗各种攻击(如JPEG压缩、裁剪、旋转和缩放攻击)的鲁棒性。尽管已有StirMark等著名的基准测试工具[1,2],但仍需从质量、鲁棒性和容量方面对水印方法进行评估。IHC(信息隐藏标准)委员会制定了标准评估标准[3]。
Hakka等人[4]提出了一种基于OFDM(正交频分复用)技术的数字水印方法,以满足IHC评估标准,同时减少对图像质量的劣化。客家方法在IWIHC2014举办的水印竞赛中获得了第二高的图像质量。在客家方法中,通过将QIM方法应用于DCT‐OFDM调制信号,将水印嵌入到低频分量中,以提高对JPEG压缩的鲁棒性。考虑到对裁剪攻击的鲁棒性,水印被重复嵌入到图像的分块中。然而,在检测时,需要恢复同步以找到正确的块位置。因此,在每个块中嵌入了设计上不干扰水印的同步信号。遗憾的是,客家方法中的同步过程需要通过在特定块大小内检测同步信号来检查所有可能的位置。由于块大小非常大,并且必须对多个该大小的块进行DCT变换,因此同步过程非常耗时。此外,为了提高对JPEG压缩的鲁棒性,QIM中的量化步长也需要较大。
本文中,我们首先提出一种高效的同步方法,以降低同步恢复过程中的计算复杂度。由于嵌入方法的特性,同步信号不仅能在精确位置被检测到,也能在其邻域位置被检测到。基于这一特性,客家方法会检查所有候选位置并计算它们的中心。我们关注的是将同步过程中的误检率控制在足够小的范围内,并提出了一种分层检测流程。首先,按照光栅扫描顺序检查同步位置;一旦检测到某个位置,则仅对其邻域进行检查。此外,通过分层次执行与原始同步序列的模式匹配,以减少全域离散余弦变换等高开销计算的次数。接着,我们对水印信息采用纠错码进行编码,以提高鲁棒性。由于在同步恢复过程中允许少量错误的存在,纠错码仅应用于水印信息。实验结果表明,提出的方法满足IHC委员会组织的水印竞赛的要求。
2 传统方法
2.1 基于DCT‐OFDM水印方案的QIM变体
在传统的扩频水印方案中,统计上准正交的序列被用作秘密载波,以扩展形式嵌入水印信息。然而,扩频序列之间的相互干扰以及宿主信号会降低性能。尽管ISS(改进的扩频)操作[6]可以消除宿主干扰,但扩频序列之间的干扰难以控制,因为它们基本上由随机变量组成。
Hakka等人提出了在水印信息调制中引入正交频分复用以完全消除相互干扰[4]。该方法有效利用离散余弦变换基向量作为正交序列,并结合M序列等伪随机数序列[7]。它根据密钥从宿主图像的频率分量中选择宿主信号x,并由此计算序列d={d₀, d₁,…, dₗ₋₁}。
$$
d = \text{DCT}(\rho \otimes x)
$$
其中 $\rho = {\rho_0, \rho_1, …, \rho_{L-1}}, \rho_t \in {\pm1}$ 是由密钥生成的伪随机数序列,$\otimes$ 是该序列各元素的乘积,DCT() 是离散余弦变换函数。水印信息 $\omega = {\omega_0, \omega_1, …, \omega_{k-1}}, \omega_t \in {0, 1}$ 按如下方式嵌入到序列 $d’$ 中:
$$
D_t = \left\lfloor \frac{d_t + \delta_\omega}{2\delta_\omega} \right\rfloor \quad (0 \leq t < k),
$$
$$
d’
t =
\begin{cases}
\delta
\omega D_t & \text{if } D_t \mod 2 = w_t \
\delta_\omega D_t - \frac{\delta_\omega}{2} & \text{if } D_t \geq 0 \cap D_t \mod 2 \neq w_t \
\delta_\omega D_t + \frac{\delta_\omega}{2} & \text{otherwise}
\end{cases}
$$
其中 $\delta_\omega$ 是用于嵌入水印 $\omega$ 的量化步长。可以从含水印的宿主数据中恢复出原始序列,即该操作是可逆的。通过执行以下逆向操作,可得到含水印的数据 $x’$:
$$
x’ = \text{IDCT}(\rho \otimes d’)
$$
含水印图像可以通过将宿主信号 $x$ 替换为含水印信号 $x’$ 来计算。水印通过量化索引调制(QIM)进行嵌入。注意到上述量化操作会根据宿主信号的值是正还是负对其进行分类。由于该方法中的宿主信号预期为零均值的高斯分布,其概率密度函数关于0对称。考虑到这一特性,嵌入操作与原始的QIM方法略有不同。
在检测时,从含水印图像 $\tilde{}$ 中提取宿主数据 $\tilde{x}$,然后按如下方式计算 $d$。
$$
\tilde{d} = \text{DCT}(\rho \otimes \tilde{x})
$$
$\tilde{D} t$ 元素通过使用嵌入强度 $\delta \omega$,由 $\tilde{d}_t$ 生成,如下所示:
$$
\tilde{D}
t = \left\lfloor \frac{\tilde{d}_t + \delta
\omega}{2\delta_\omega} + 0.5 \right\rfloor, \quad (0 \leq t < k),
$$
从元素 $\tilde{D}_t$ 中,可以检测水印位 $\tilde{w}_t$:
$$
\tilde{w}_t = \tilde{D}_t \mod 2
$$
2.2 同步恢复
同步序列 $s = {s_0, s_1, …, s_{k-1}}, s_t \in {0, 1}$ 被嵌入以从裁剪图像中恢复同步丢失。
假设从裁剪图像中使用某个坐标通过以下操作提取序列 $\tilde{s}$。从该坐标开始,将裁剪图像划分为 $N \times N$ 像素大小的块。类似于水印信息的检测过程,使用量化步长 $\delta_s$ 从每个块中提取同步序列的每一段。如果汉明距离 $d_H(\tilde{s}, s)$ 小于阈值 $e$,则该点为正确同步位置。否则,必须返回生成块的过程,并从起始点偏移后重新进行。需在水平和垂直方向上重复此过程,直到确定正确同步点 $(X, Y)$。
随后,正确同步点 $(X, Y)$ 可定位在范围 $0 \leq X, Y < N$ 内。此处,由于同步信号主要以扩展形式嵌入到低频和中频分量中,因此在正确同步点周围可能会检测到一些同步点。若检测到多个同步点,则通过计算这些点的平均值得到正确同步点 $(X, Y)$。
$$
(X, Y) = \left( \frac{X_{\text{min}} + X_{\text{max}}}{2}, \frac{Y_{\text{min}} + Y_{\text{max}}}{2} \right)
$$
其中 $X_{\text{min}}$ 和 $Y_{\text{min}}$ 分别表示在检测到的 $X$ 和 $Y$ 中的最小坐标,$X_{\text{max}}$ 和 $Y_{\text{max}}$ 表示最大坐标。这些坐标中的中心点被确定为正确同步点。
2.3 嵌入
原始图像($W \times H$ 像素,YUV422格式)的亮度分量被划分为 $n$ 个大小为 $N \times N$ 像素的块。如果 $H$ 和 $W$ 不能被 $N$ 整除,则必须在图像帧边缘留出一定的边缘空白。设 $W_m = W \mod N$ 为水平方向的边缘空白,$H_m = H \mod N$ 为垂直方向的边缘空白,这两个边缘空白的一半分别位于图像帧的两侧。水印信息 $\omega$ 被分割成 $r$ 段,每一段 $\tilde{w}_i$ 与一个同步序列一起嵌入到每个块中。总共在一幅图像中嵌入 $\hat{n}(k/r + k)$ 比特的信息。检测水印信息 $\omega$ 至少需要 $r$ 个大小为 $N \times N$ 像素的块。为了适应IHC评估标准ver.4[3],所规定的图像要求,图像在外边缘保留一定边缘空白后进行分块。图1显示了分块的详细参数。我们准备了 $r$ 个长度为 $k$ 的子序列 $\hat{s}_i$($0 \leq i \leq r - 1$),每个子序列 $s_i$ 与分块后的每一段水印信息一一对应。类似于使用公式(2)和(3)嵌入的水印信息 $\omega$,同步序列 $s_i$ 也通过这些公式和量化步长 $\delta_s$ 进行嵌入。因此,子序列 $s$ 由 $r$ 个子序列 $s_i$ 组成:
$$
s = s_0 || s_1 || \cdots || s_{r-1},
$$
其中 $||$ 表示一个连接。
2.4 检测
假设含水印图像被攻击者裁剪,其尺寸为 $W_c \times H_c$ 像素。在检测时,将图像的亮度分量划分为 $N \times N$ 像素的块。使用第2.2节中所述的方法从这些块中提取同步序列。需要注意的是,所提取的序列并不总是原始的同步序列。此外,由于分块序列的顺序有 $r$ 种可能,检测端无法确定具体的分块位置。因此,我们必须从图1所示位置的相邻 $r$ 个块中提取 $r$ 段子序列,并检查由这些子序列拼接而成的 $r$ 种类型。误检概率似乎较大。在[4]中,通过数学计算给定参数 $r$、$N$ 和 $\hat{k}$ 的概率,将该概率控制得足够小。例如,当 $\hat{r}= 18$、$N= 256$ 和 $k= 3$ 时,该概率小于 $1.72 \times 10^{-6}$。在完成同步恢复后,还提取每一段 $\tilde{w}_i$ 水印信息。水印 $\tilde{\omega}$ 由序列 $\tilde{\omega}_i$、$(0 \leq i \leq r - 1)$ 构成,如下所示。
$$
\tilde{\omega} = \tilde{\omega}
0 || \tilde{\omega}_1 || \cdots || \tilde{\omega}
{r-1}
$$
3 提出的方法
3.1 分层同步恢复
在客家方法中,我们必须通过检查提取的同步信号来搜索所有可能的坐标。该信号被划分为 $r$ 个段,以调整 $r$ 种分块。由于采用穷举搜索,该方法计算成本极高。
文献[4]还报道了同步序列不仅可以在实际位置检测到,还可以在其邻域内检测到。在提出的方法中,我们首先尝试按照光栅扫描顺序检查可能的坐标。一旦在某个位置检测到同步序列,就仅对该位置的邻域进行密集搜索。图2显示了搜索区域以及可以检测到同步信号的可能位置。由于同步恢复过程是从左上位置开始按光栅扫描顺序检查各个位置,因此首次检测到同步信号的位置必定是图2中所示的坐标 $(X_f, Y_f)$。因此,一旦我们找到一个同步点,在提出的方法中就会对边长为 $v \times v$ 像素的正方形范围内的邻域进行密集检查。具体步骤总结如下:
步骤1. 我们将裁剪图像($W_c \times H_c$ 像素)的左上角点设为起点(0,0),并将其划分为 $N \times N$ 像素的块。
步骤2. 对于每个块,亮度分量通过大小为 $N \times N$ 的二维离散余弦变换进行转换,并根据密钥从低频和中频分量中提取宿主信号 $\tilde{x}_i$。
步骤3. 按如下方式从块中提取序列 $\tilde{d}_i$。
$$
\tilde{d} = \text{DCT}(\rho \otimes \tilde{x})
$$
步骤4. 元素 $\tilde{D} {i,t}$ ($0 \leq i \leq r - 1, 0 \leq t \leq L - 1$) 由 $\tilde{d} {i,t}$ 和嵌入强度 $\delta_s$ 按如下方式生成。
$$
\tilde{D}
{i,t} = \left\lfloor \frac{\tilde{d}
{i,t} + \delta_s}{2\delta_s} + 0.5 \right\rfloor
$$
从元素 $\tilde{D} {i,t}$ 中,我们检测同步信号 $\tilde{s} {i,t}$。
$$
\tilde{s}
{i,t} = \tilde{D}
{i,t} \mod 2
$$
步骤5. 对所有 $r$ 个块执行上述过程,并比较 $r$ 序列 $\tilde{s}_i$ 和同步信号 $s$。如果 $r$ 汉明距离 $d_H(\tilde{s}_i, s)$ 对于 $r$ 个序列 $\tilde{s}_i$ 的总和小于阈值 $e$,则认为该点为正确的同步位置。
步骤6. 如果汉明距离的总和大于阈值 $e$,则返回步骤1并将当前位置向下一个位置移动一个像素。
步骤7. 一旦我们在某个位置 $(X_f, Y_f)$ 检测到同步信号,我们仅检查其邻域,搜索区域如图2所示。
步骤8. 如果检测到 $m$ 个同步点,则通过计算确定正确的同步点 $(\bar{X}, \bar{Y})$
$$
(\bar{X}, \bar{Y}) = \left( \frac{\sum X_p}{m}, \frac{\sum Y_p}{m} \right)
$$
其中 $X_p$ 和 $Y_p$ 分别表示同步点的 $m$ 垂直和水平坐标。
开始搜索 v × v像素范围的示意图。菱形阴影区域是正确检测到同步信号的坐标。)
必须提到的是,对于所有提取的序列片段,考虑 $r$ 分块序列顺序的候选情况,计算汉明距离 $d_H(\tilde{s}, s)$。此处注意到,在上述过程中,为从每个坐标提取 $r$ 段序列,必须对大小为 $N \times N$ 的全域执行 $r$ 次计算量大的全域DCT操作。为了尽可能减少计算量,我们提出了一种用于匹配同步序列的分层方法。为简化起见,假设分块参数如图1所示,适用于IHC标准图像。即,$r= 18$ 且 $6 \times 3$ 块是提取水印信息以及同步序列的最小单元。通过引入三个阈值 $e_1$、$e_2$ 和 $e_3$,我们通过三步检查同步序列,这些阈值满足 $e_1 \leq e_2 \leq e_3$。在第一步中,提取 $r/3$ 个子序列,并检查其拼接序列是否与同步序列的一部分一致。在此步骤中,使用较低的阈值 $e_1$ 进行判决,以减少计算量。只有当第一步通过后,才执行第二步。类似于第一步的策略,此步骤的判决也使用较低的阈值 $e_2$。在最后一步中,使用最终阈值 $e_3$。所提出的分层方法执行以下操作,以替代上述步骤5和步骤6。
步骤 I. 从 $r/3$ 块的第一行中提取6段子序列,并使用可能的组合候选检查汉明距离。如果汉明距离小于第一阈值 $e_1$,则进入步骤 II;否则,退出并从当前位置向下一个位置移动一个像素后返回步骤 I。
步骤 II. 从第二行开始,提取出 $r/3$ 个额外的子序列片段,并检查它们的汉明距离之和。如果该距离小于第二个阈值 $e_2$,则进入步骤 III;否则,相应地返回步骤 I。
步骤 III. 最后,检查 $r= 18$ 个子序列片段,如果总汉明距离未超过第三个阈值 $e_3$,则将该位置视为同步点。
在大多数情况下,步骤 I 中的汉明距离会超过阈值 $e_1$。与客家方法相比,执行二维DCT所需的计算量减少为原来的 $1/3$。即使步骤 I 被意外通过,步骤 II 也能限制计算成本的增加。通过自适应地设置三个阈值,可以在不显著降低同步能力的情况下控制计算成本。根据光栅扫描顺序对坐标进行搜索,待检查坐标的期望数量为 $N^2/2$,因为候选位置有 $N \times N$ 个。在大多数块中,所提出的方法所需的计算量减少为原始方法的 $1/3$。因此,所提出方法的计算成本估计大约降低为原来的 $1/6$。在所提出的方法中,同步信号通过三个步骤进行检查。在每个步骤中,同时检查 $r/3$ 个块。也可以逐块检查,以进一步减少同步过程中需要检查的块数。然而,这可能会带来条件分支数量增加的副作用。考虑到简化性,我们在所提出的方法中采用了三步流程。
3.2 增强鲁棒性
提高对攻击鲁棒性的一种简单方法是增大QIM步长,但这会牺牲图像质量。由于原始图像尺寸较大,旋转攻击在裁剪位置造成的影响各不相同。此外,某些局部区域对缩放攻击较为敏感,从这些区域检测出的水印信息会出现少量错误。
根据我们基于IHC评估标准第4版的初步实验观察,某些位置比其他位置更易受到攻击影响。这意味着我们应仅针对这些敏感位置增大QIM步长,以尽可能保持较高的图像质量。然而,自适应地确定合适的QIM步长以考虑局部敏感性似乎非常复杂。我们尝试不通过增加步长,而是通过采用纠错码来提高鲁棒性。
维特比解码[8]可应用于卷积码[9],即使编码速率为1/2且码长约为400,从计算量角度来看也是可行的。LDPC码[10]也是可行的选择,并已在[11]中采用,其假设条件是将噪声信道视为具有特定估计错误概率的二进制对称信道。本文中,我们采用最大似然解码,同样重要的是,我们的方法中采用了卷积码。结合卷积码的详细嵌入和检测过程总结如下:
嵌入
Step1. 水印 $\omega$ 被编码为卷积码 $\Omega$。
Step2. 将原始图像划分为 $N \times N$ 像素的块。
步骤3. 通过将从第 $i$ 个块中提取的序列 $x_i$ 与伪随机数序列 $\rho$ 相乘后进行离散余弦变换,计算得到序列 $d_i$,如公式(1)所示。
步骤4. 每个分段的卷积码 $\Omega$ 以及每个分段的同步信号 $s_i$ 均通过公式(2)和(3)嵌入到每个序列中。
Step5. 序列 $x’_i$ 通过将伪随机数序列 $\rho$ 与从 $d’_i$ 计算得到的序列进行如下计算。
$$
x’_i = \text{IDCT}(\rho \otimes d’_i)
$$
Step6. 我们可以通过将替换为序列 $d$ 来获得含水印图像。
检测
Step1. 使用第3.1节中的方法检测同步点。
步骤2. 通过 $\tilde{D} {i,t}$ 根据 $\tilde{d} {i,t}$ 和嵌入强度 $\delta_w$ 按如下方式计算。
$$
\tilde{D}
{i,t} = \left\lfloor \frac{\tilde{d}
{i,t} + \delta_w}{2\delta_\omega} + 0.5 \right\rfloor, \quad (0 \leq t < k/r).
$$
然后,通过以下方式提取分组码字 $\tilde{\Omega}_{i,t}$:
$$
\tilde{\Omega}
{i,t} = \tilde{D}
{i,t} \mod 2
$$
步骤3. 序列 $\tilde{\Omega}$ 由序列 $\tilde{\Omega}_i$,($0 \leq i \leq r - 1$) 按照公式(10)生成。
步骤4. 通过执行维特比算法,从 $\tilde{\Omega}$ 中解码出水印 $\tilde{w}$。
4 仿真
4.1 仿真条件
我们使用六幅IHC标准图像[3],通过计算机仿真来评估提出的方法的性能。在此仿真中,我们采用约束长度7、码率为1/2的卷积码。IHC委员会确定的评估标准ver.4[3]如下。
表1. 裁剪位置。
| 位置 | (x₁, y₁) | (x₂, y₂) | (x₃, y₃) | (x₄, y₄) |
|---|---|---|---|---|
| 1 | (16, 16) | (1935, 16) | (3419, 1095) | (1500, 1095) |
| 2 | (1500, 16) | (3419, 16) | (4536, 1095) | (2617, 1095) |
| 3 | (2617, 16) | (4536, 16) | (1935, 1849) | (16, 1849) |
| 4 | (16, 770) | (1935, 770) | (3419, 1849) | (1500, 1849) |
| 5 | (1500, 770) | (3419, 770) | (4536, 1849) | (2617, 1849) |
| 6 | (2617, 770) | (4536, 770) | (3263, 1847) | (1344, 1847) |
| 7 | (1344, 768) | (3263, 768) | (1935, 1520) | (1935, 2599) |
| 8 | (16, 1520) | (1500, 1520) | (3419, 1520) | (3419, 2599) |
| 9 | (2617, 1520) | (4536, 1520) | (4536, 2599) | (2617, 2599) |
| 10 |
- JPEG Compression. 压缩‐解压过程应执行两次。第一次压缩后,文件大小应小于原始大小的1/15,并且解压后的图像需进行第二次压缩。第二次压缩后,文件大小应小于原始大小的1/25。
- 裁剪攻击。 应从每个解压缩的 1920 × 1080 图像中裁剪出十个高清电视尺寸(4608× 3456)图像。这些裁剪图像的顶点列于表1中。每个裁剪图像中嵌入的水印应可被检测。
- 缩放和旋转攻击。 缩放 $s = {70, 90, 110, 130\%}$,旋转 $\theta = {3, 6, 9, 12^\circ}$,以及它们的组合 $(s, \theta) = {(90, 3), (90, 9), (110, 3), (110, 9)}$ 应在评估中进行检验。
- 水印信息。 要嵌入的水印信息量为200比特。该信息应通过使用八个有序的最大长度序列(M序列)生成。每个多项式应以形式 $x^8 + x^4 + x^5 + x^2 + 1$ 生成。初始值应如下给出:
$$
a_7x^7 + a_6x^6 + a_5x^5 + a_4x^4 + a_3x^3 + a_2x^2 + a_1x + a_0 \rightarrow (a_7, a_6, a_5, a_4, a_3, a_2, a_1, a_0)
$$
- (1,0,1,0,1,0,1,0)
- (1,0,1,0,1,0,1,1)
- (1,0,1,1,1,0,1,0)
- (1,1,1,0,1,0,1,0)
- (1,0,1,0,1,0,0,0)
- (1,0,1,0,0,0,1,0)
- (1,0,0,0,1,0,1,0)
- (0,0,1,0,1,0,1,0)
- (1,1,1,1,1,0,1,0)
- (1,0,1,0,1,1,1,0)
- 仿真的参数。 表2显示了仿真中的参数。我们选择从低频和中频分量中提取的样本,以增强对JPEG压缩的鲁棒性。水印信息根据IHC委员会确定的评估标准生成。$k= 200$ 比特的水印信息被编码在长度为 $K= 400$ 的卷积码中。
表2. 实验中的参数。
| 参数 | 值 |
|---|---|
| 原始图像 $(W \times H)$ | (4608× 3456) |
| 裁剪图像 $(W_c \times H_c)$ | (1920× 1080) |
| 块大小 $N$ | $N= 256$ |
| 序列长度 $L$ | $L= 512$ |
| 水印信息位 $k$ | $k= 200$ |
| 码字长度 $K$ | $K= 400$ |
| 同步信号位 $\hat{k}$ | $\hat{k}= 3$ |
| 同步数 $r$ | $r= 18$ |
| 阈值 $(e_1, e_2, e_3)$ | (2, 2, 3) |
| 搜索区域大小 $v$ | $v= 9$ |
表3. 最高容差下的平均压缩比、PSNR值和MSSIM值。
| 图像 | 压缩比 第一级编码 | 第二级编码 | PSNR [dB] 一次编码 | 第二级编码 | MSSIM 一次编码 | 第二级编码 |
|---|---|---|---|---|---|---|
| img1 | 0.06467 | 0.00917 | 41.1443 | 30.5158 | 0.96749 | 0.92801 |
| img2 | 0.06657 | 0.00894 | 42.0431 | 30.7011 | 0.96010 | 0.92969 |
| img3 | 0.06611 | 0.00956 | 42.7092 | 32.1111 | 0.95255 | 0.92011 |
| img4 | 0.06420 | 0.00857 | 43.0889 | 33.8732 | 0.90213 | 0.87120 |
| img5 | 0.06548 | 0.00891 | 42.6435 | 30.5903 | 0.95909 | 0.93982 |
| img6 | 0.06515 | 0.00939 | 41.5366 | 31.5816 | 0.97182 | 0.94309 |
| 平均 | 0.06536 | 0.00909 | 42.1949 | 31.5622 | 0.95220 | 0.92199 |
4.2 仿真结果
表3显示了在PSNR值大于 30[dB]的失真约束下的最大压缩比。如表4所示,从 10个裁剪图像中均能正确检测到嵌入的水印信息。结果表明,提出的方法能够容忍压缩比平均小于0.00909(<1/110)的双重JPEG压缩,并且同时抵抗旋转攻击、缩放攻击和裁剪攻击。与客家方法(0.0163<1/60)相比,该方法得到了改进。
表4. 在最高容差下,十个高清电视尺寸区域在附加攻击下的平均错误率。
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 平均 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 无攻击 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 缩放 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 旋转 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 组合 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表5. 最高图像质量的平均压缩比、PSNR值和MSSIM值。
| 图像 | 压缩比 第一次编码 | 第二级编码 | PSNR [dB] 一次编码 | 第二级编码 | MSSIM 一次编码 | 第二级编码 |
|---|---|---|---|---|---|---|
| img1 | 0.06467 | 0.03455 | 40.7956 | 39.3712 | 0.99659 | 0.99426 |
| img2 | 0.06716 | 0.03647 | 42.0553 | 40.9162 | 0.99638 | 0.99531 |
| img3 | 0.06608 | 0.03456 | 42.7318 | 41.1635 | 0.99592 | 0.99333 |
| img4 | 0.06419 | 0.03174 | 43.0546 | 41.6658 | 0.99399 | 0.98939 |
| img5 | 0.06546 | 0.03327 | 42.6493 | 41.2025 | 0.99686 | 0.99520 |
| img6 | 0.06513 | 0.03569 | 41.5265 | 39.5678 | 0.99681 | 0.99552 |
| 平均 | 0.06545 | 0.03438 | 42.1949 | 40.6478 | 0.99609 | 0.99384 |
表6. 在最高图像质量下,十个高清电视尺寸区域在附加攻击下的平均错误率。
| 位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 平均 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 无攻击 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 缩放 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 旋转 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 组合 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
4.3 考虑
为了控制失真‐鲁棒性行为,使用纠错码实际上提高了某些局部薄弱区域的敏感性。即使采用较大的QIM步长来替代使用纠错码,提取出的水印信息的某些比特位上仍会检测到错误。因此,我们可以说,通过卷积码进行编码能够有效提升了基于DCT‐OFDM的水印方法的性能。我们还观察到以下有趣的特征:在选择满足IHC评估标准所规定压缩率的JPEG算法质量因子时,在某些情况下,使用较低的质量因子获得了更好的PSNR值,且能实现更高的压缩率。这可能主要源于嵌入算法中分块的大小与JPEG算法的分块大小不一致。即,我们的方法使用 $256 \times 256$ 像素,而JPEG算法使用 $8 \times 8$ 像素。这种分块尺寸的不匹配可能导致了这一有趣现象。详细分析将留待后续工作进行。
表7. 同步恢复的平均计算开销(秒)。
| 图像 | 客家方法 | 所提出的方法 |
|---|---|---|
| 图像1 | 11914.33 | 1212.51 |
| 图像2 | 11606.38 | 1189.25 |
| 图像3 | 12098.92 | 1251.23 |
| 图像4 | 12281.60 | 1192.32 |
| 图像5 | 11871.03 | 1165.97 |
| 图像6 | 13788.68 | 1472.90 |
| 平均 | 12260.15 | 1247.33 |
5 结论
我们采用纠错码来增强对JPEG压缩、裁剪、旋转和缩放攻击等组合攻击的鲁棒性。为了降低同步恢复时的计算成本,我们提出了一种分层搜索方法,该方法仅检查已检测位置周围的邻近区域。通过计算机仿真发现,我们方法的性能满足IHC委员会确定的评估标准。我们还发现了一个关于对JPEG压缩鲁棒性的有趣特征:块的划分不匹配可能会改变由峰值信噪比(PSNR)评估的质量测量结果。质量因子与PSNR值之间关系的详细分析将留作后续工作。

被折叠的 条评论
为什么被折叠?



