基于MDS码的自嵌入水印方案
1 引言
自嵌入水印方案已被提出用于检测被篡改的图像区域并恢复被篡改的内容。在大多数自嵌入水印方案中,原始图像将被划分为块。除了用于检测被篡改图像块的认证位外,用于恢复被篡改图像块的参考位也被嵌入到图像[2]中。参考位通常是宿主图像块的代表性信息,例如主要DCT系数、图像块中所有像素的最高有效位以及矢量量化值。在一些方案中,例如在[1, 3–6],中,一个图像块的参考位通常被嵌入到另一个不同的图像块中。通常需要一个块映射来确定嵌入位置。这种方法不可避免地会导致篡改重合和参考浪费[7]的问题。在一些方案[8–11],中,参考位会被复制并在图像中多次嵌入以减少篡改重合的概率,而参考浪费的成本将相应增加。
在[12, 13],中提出了一种参考共享机制,以避免篡改重合和参考浪费问题。在这些方案中,嵌入到图像块中的参考位是通过编码不同块的主要内容生成的,并由这些块共享用于内容恢复,即使在较高的篡改率下也能实现良好的恢复性能。这一思想也在其他方案[14–16]中有所体现。在[17],中,将内容重建问题建模为擦除信道上的通信。参考信息块是通过对所有图像块的参考符号块进行编码,基于随机线性喷泉码(RLF码)生成的。因此,嵌入到一个图像块中的参考信息块将被所有图像块共享,这使得在相同每图像块参考信息率的情况下,能够应对比其他自嵌入方案更高的篡改率。为了解决篡改重合和参考浪费问题,[13, 17]均采用了基于不同扩散机制的参考共享方法。然而,使用[13, 17]中的方法只能以较大概率完美地恢复被篡改的图像块。本文提出了一种基于MDS码的确定性自嵌入水印方案。只要篡改率不超过最大篡改率,恢复将是绝对完美的。
2 水印嵌入过程
与常见的自嵌入方案类似,所提方案的水印数据由两部分组成:参考位和认证位。在水印嵌入过程中,我们首先选择一个合适的MDS码,然后利用该MDS码对图像块中所有像素的5个最高有效位(MSB)进行编码,以生成参考位。认证位是由图像块的MSB和参考位共同决定的哈希位。参考位和哈希位将替换图像块中所有像素的3个最低有效位(LSB)。
2.1 参考位生成
假设原始图像被划分为大小为8 × 8像素的块。块的数量记为K。对于每个图像块,我们收集块内所有像素的5个MSB,形成一个列向量。总共会有K个向量。我们将它们表示为(D₁, D₂,…, Dₖ)。每个向量的长度为320。参考比特向量将通过基于MDS码对这些向量进行编码而生成,并作为水印的一部分嵌入到图像块的3个最低有效位平面中。我们使用160位来存储参考位。因此,参考位向量的长度为160。参考位向量长度与MSB向量长度之比记为R。R的值将决定使用哪种MDS码。
这里 R = 1/2,我们将基于有限域上的系统性 (3K, 2K)‐MDS码计算参考比特向量。首先,我们将 Dᵢ (i = 1, 2,…, K) 分成较短向量 Dᵢ₁,Dᵢ₂。总共将有 2K 个较短向量。然后,我们基于 (3K, 2K)‐MDS码对这 2K 个较短向量进行编码,方式如下:
$$
(C₁, C₂,…, Cₖ) = (D₁₁, D₁₂, D₂₁, D₂₂,…, Dₖ₁, Dₖ₂)A_{2K×K}, \tag{1}
$$
其中A是2K行和K列的矩阵,(I|A)是有限域上系统(3K, 2K)‐MDS码的生成矩阵。计算将在有限域上进行。为此,Dᵢⱼ(i = 1,…, K, j = 1, 2)将被转换为有限域中的n维列向量。例如,D₁₁被转换为(d₁₁,d₂₁,…,dₙ₁)ᵀ。因此,我们可以将(1)重写为,
$$
(C₁, C₂,…, Cₖ) =
\begin{bmatrix}
d_{11} & d_{12} & \cdots & d_{1,2K} \
d_{21} & d_{22} & \cdots & d_{2,2K} \
\vdots & \vdots & \ddots & \vdots \
d_{n1} & d_{n2} & \cdots & d_{n,2K}
\end{bmatrix}
A_{2K×K}. \tag{2}
$$
由(2)可知,Cᵢ(i = 1,…,K) 是有限域中的一个n维列向量。最后,我们将Cᵢ(i = 1,…, K) 转换为二进制向量。转换后的二进制向量记为(R₁,R₂,…,Rₖ),即参考位向量。
由(1)可以看出,Cᵢ(i = 1,…,K) 是所有MSB向量的线性组合。这意味着Cᵢ (i = 1,…,K) 或参考比特向量Rᵢ(i = 1,…,K) 携带了所有图像块的信息。参考位向量Rᵢ将作为恢复信息由所有图像块共享。因此,基于MDS码实现了一种新的参考共享机制。
2.2 认证位生成
对于第i个(i = 1,…,K)图像块,将MSB向量Dᵢ和参考位Rᵢ连接后输入哈希函数,生成32位哈希向量Hᵢ。向量{H₁,H₂,…,Hₖ}即为认证位,将作为水印的一部分嵌入到该图像块所有像素的3个最低有效位中。在我们的实验中,使用 MD5函数,并通过对相邻比特对进行异或操作来缩短输出,以生成所需长度的哈希位。
2.3 水印位嵌入
对于第i个(i = 1,…,K)图像块,160个参考位Rᵢ和32个认证位Hᵢ将基于密钥进行连接和置换,以生成192个水印位Wᵢ,这些水印位将用于替换第i个图像块中所有像素的3个最低有效位。处理完所有图像块后,生成带水印图像。整个水印嵌入过程如图1所示。
3 篡改检测和内容恢复流程
在接收端,接收到的图像将被划分为与原始图像相同大小的块。通过认证数据可以识别图像块是否被篡改,并定位被篡改的图像块。被篡改的图像块数量与所有块数量之比称为篡改率,最大篡改率是篡改率的上限。只要篡改率不超过最大篡改率,就可以完全恢复被篡改图像块的代表性数据。在本文工作中,基于MDS码优异的纠错特性,最大篡改率可以很容易地推导得出,这将在第3.3节中详细讨论。
3.1 篡改块检测
对于第i个图像块,从冗余空间中提取水印比特,使用相同的密钥进行反向置乱,并分解为两部分:参考位向量Rᵢ和哈希位向量Hᵢ。如果5MSB向量Dᵢ和提取的参考位重新计算的哈希值与提取的哈希值不一致,则判定第i个图像块为“被篡改”,即该图像块中的某些内容已被修改。否则,称其为“保留”[13]。只要篡改率不超过最大篡改率,我们就可以通过系统MDS码的解码方法完美恢复被篡改图像块中失效的5MSB。该解码过程可说明如下。
3.2 内容恢复
识别出被篡改的图像块后,我们从保留图像区块中提取参考位向量块。假设保留图像区块的数量为 r。因此,我们可以提取 r 个参考比特向量,记为 (Cₑ₍₁₎, Cₑ₍₂₎, …, Cₑ₍ᵣ₎)。然后我们可以将 (1) 重写为:
$$
(C_{e(1)}, C_{e(2)},…, C_{e(r)}) = (D_{11}, D_{12}, D_{21}, D_{22},…, D_{K1}, D_{K2})A^{(E)}_{2K×K}, \tag{3}
$$
其中 $ A^{(E)} {2K×K} $ 是由 $ A {2K×K} $ 中对应可提取引用位向量的列构成的矩阵。注意,保留图像区块的5MSB向量是可以获得的,而被篡改的图像块的5MSB向量是未知的。
将被篡改块和保留块的5MSB向量分别记为 Dₜ 和 Dᵣ,我们可以将 (3) 重新表述如下:
$$
(C_{e(1)}, C_{e(2)},…, C_{e(r)}) - D_R A^{(E,R)}
{2K×K} = D_T A^{(E,T)}
{2K×K}, \tag{4}
$$
其中,$ A^{(E,R)} {2K×K} $ 和 $ A^{(E,T)} {2K×K} $ 是矩阵,其行对应于 Dᵣ 和 Dₜ 中 5MSB 向量在 $ A^{(E)} {2K×K} $ 中的行。(4) 的左边和矩阵 $ A^{(E,T)} {2K×K} $ 是已知的,我们的目标是求出 Dₜ。
记 Dₜ 的长度为 nₜ,使得 $ A^{(E,T)}_{2K×K} $ 的大小为 nₜ × r。我们将根据有限域上的 r 个方程求解 nₜ 个未知数。实际上可以证明,如果篡改率不超过最大篡改率,则会有 nₜ ≤ r。这意味着方程的数量多于未知数的数目。我们可以将 (4) 重写为,
$$
(C_{e(1)}, C_{e(2)},…, C_{e(n_T)}) - D_R A^{(E,R,n_T)}
{2K×K} = D_T A^{(E,T,n_T)}
{2K×K} \tag{5}
$$
其中,$ A^{(E,T,n_T)} {2K×K} $ 是一个 nₜ × nₜ 矩阵,其列向量为矩阵 $ A^{(E,T)} {2K×K} $ 的前 nₜ 列,$ A^{(E,R,n_T)} {2K×K} $ 是矩阵 $ A^{(E,R)} {2K×K} $ 的前 nₜ 列。在公式(5)的左边,(Cₑ₍₁₎, Cₑ₍₂₎, …, Cₑ₍ₙₜ₎) 是 (Cₑ₍₁₎, Cₑ₍₂₎, …, Cₑ₍ᵣ₎) 的第一个 nₜ 数据块。值得注意的是,矩阵 $ A^{(E,T,n_T)} {2K×K} $ 是 A 的一个正方子矩阵。因此,由于 (I|A) 是系统性 MDS 的生成矩阵,$ A^{(E,T,n_T)} {2K×K} $ 将是非奇异的。因此,公式(5)有唯一解。我们可以在有限域上求解公式(5),以恢复 Dₜ 的原始值。这意味着我们可以恢复 (D₁₁, D₁₂, D₂₁, D₂₂, …, Dₖ₁, Dₖ₂) 的原始值。因此,我们可以恢复 k 位最高有效位向量 (D₁, D₂, …, Dₖ)。
恢复的最高有效位向量可用于重构被篡改的图像块。只要篡改率不超过最大篡改率,重构图像区域的质量将保持恒定。也就是说,重构内容的质量不会随着篡改区域的增加而下降。
3.3 最大篡改率分析
根据之前的分析,我们通过对2K个较短向量进行编码,基于系统性(3K, 2K)‐MDS码生成K个参考比特向量。我们知道,(3K, 2K)‐MDS码能够容忍任意 K 个失效。也就是说,系统可以恢复发生在 K 个参考比特向量和 2K 个较短向量中的任意 K 个失效。但需要注意的是,如果一个图像块被识别为篡改块,则会有 2 个较短向量和 1 个参考比特向量被识别为失效数据块。这意味着将发生3次故障。因此,所提方案只能恢复任意 K/3 个图像块的故障。总共有 K 个图像块。因此,本方案的最大篡改率为 1/3。
4 实验结果与比较
8位灰度图像 Lake 尺寸为 512 × 512 用作宿主图像。图像块的数量 K = 2¹²。为了生成参考数据块,我们需要一个系统化的 (3 × 2¹², 2 × 2¹² | 2¹³ × 2¹²)‐ MDS码。假设其生成矩阵为 (I|A),其中 A 是一个矩阵。这里我们通过在有限域 G(2¹⁶) 上构造 2¹³ × 2¹² 柯西矩阵来生成矩阵 A。每个图像块的 5MSB 向量被划分为两个长度为 160 位的较短向量。因此总共有 2¹³ 个较短向量。每个向量将表示为有限域 G(2¹⁶) 中的一个 10 元素列向量。然后我们根据公式 (2) 计算 2¹² 参考比特向量。每个参考数据块将是有限域 G(2¹⁶) 中的一个 10 元素列向量,并可转换为长度 160 比特的二进制向量。
图 2(a) 给出了 Lake 图像。图 2(b) 给出了实验中嵌入水印的 Lake 图像。由于水印嵌入导致的 PSNR 值为 37.9 dB。图 3 展示了带有不同篡改率的三个被篡改的水印 Lake 图像版本,以及第一次实验中对应的识别与恢复结果。我们可以看到当篡改率为 α = 9.8%、21.83% 和 32.69% 时,所有篡改块均被准确定位。篡改块以纯白色表示。被篡改块的原始 MSB 被无误恢复。在这三种情况下,以原始图像为参考时,恢复区域的 PSNR 值均为 40.7 dB。恢复内容的质量不随篡改率的增加而下降。此处,如同在 [13] 中所采用的方法,将第一和第二 LSB 强制设为 0,第三 LSB 强制设为 1。实验表明,若比例 R = 1/2,则只要篡改率不超过 1/3,所提方案即可完美恢复被篡改图像块的代表性数据。
的篡改块识别结果)
的恢复版本)
的篡改块识别结果)
的恢复版本)
的篡改块识别结果)
的恢复版本)
最后,我们在实验中将所提方案的恢复能力与 [13, 17] 中的方法进行了比较。三种方法的实验参数相同。通过三个主要评价指标进行性能比较:水印图像质量、最大篡改率和恢复图像质量。这三种方法均采用 3 LSB 水印嵌入,因此由于水印嵌入导致的峰值信噪比相同,均为 37.9 dB。参考比特向量均为 160 位,并通过对 8 × 8 图像中所有像素的 5MSB 编码生成。
当篡改率不超过最大篡改率时,这三种方法都能够恢复被篡改的图像块的 5MSB 向量。以原始图像为参考时,恢复区域的峰值信噪比值相同,均为 40.7 dB。但所提出的方法的最大篡改率为 33%,优于 [13] 方法的 24%,且与 [17] 方法的最大篡改率相等。然而,所提出方法的最大优势在于我们的编码矩阵源自系统 MDS 码的生成矩阵。MDS 码的性质能够保证恢复过程绝对成功,而 [13, 17] 方法中使用的编码矩阵是随机矩阵,随机矩阵只能保证恢复有很高的概率成功。因此,所提出的方法提供了一种确定性自嵌入方案,与 [17] 方法相比性能相当,同时相较于 [13] 方法提高了最大篡改率。
5 结论
本文提出了一种基于 MDS 码的自嵌入水印方案。该方案实现了新的参考信息共享机制,以抵抗篡改重合和参考浪费。根据我们的模型,最大篡改率可由 MDS 码的纠错能力推导得出。只要篡改率不超过最大篡改率,被篡改的图像块的代表性数据就能够被完全恢复。恢复内容的质量保持恒定。我们的理论分析和实验结果表明,所提出的方法优于近期最先进的工作。
1544

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



