1. 引言
随着科技的快速发展,我们可以快速处理和接收电子信息,并进行各种数字媒体的编辑、修改、存储和传播。然而,这也引起了各种版权侵犯问题。因此,越来越多的人开始重视个人隐私和版权保护,并将保护版权作为数字水印工作者的核心目标。
数字水印的概念由Tirkel等人 [1] 于1993年提出,对该项技术的研究一直延续至今。Tirkel等人 [1] 提出的最低有效位(Least Significant Bit, LSB)算法尽管实现方式简单,但在面对恶意攻击时的稳健性很差,容易造成水印提取不出来。Cox [2] 等人提出了一种扩频通信的水印技术,把水印信息直接插入到数据的频谱分量中,提高了水印对恶意攻击的抵抗能力。Zhao [3] 等提出对载体图像进行8 × 8大小分块,对子块进行DCT变换,每块嵌入一位水印,利用合适的步长对各子块的直流系数根据当前水印信息位进行量化,之后进行DCT反变换得到含水印图像。刘志军 [4] 等提出对图像进行8 × 8分块后进行DCT变换,将水印嵌入到人视觉上的最重要的地方,即图像的低频和中频区域。
基于中频系数替换的DCT域水印算法是一种常见的数字水印算法。该算法通过选择合适的DCT系数作为水印信息的嵌入位置,将水印信息嵌入到DCT系数中。其中,中频系数因为在图像中所占比例较大,因此更加适合嵌入水印信息。该算法的优点是具有较好的鲁棒性和透明性。同时,由于该算法的实现比较简单,因此在实际应用中得到了广泛的应用。然而,该算法也存在一些缺点,例如水印容量较小,且对于某些攻击(如低通滤波)容易受到破坏。因此我们需要对水印信息进行相应的处理,如加密、置乱等。
针对现有一些误码率高且不抗剪切的鲁棒水印算法,本文提出了一种基于加密且抗剪切的数字水印算法。首先对水印图像进行Arnold置乱,并通过DCT变换进行第一次水印嵌入,但初步的实验发现,这种单次嵌入不抗剪切攻击,所以我们进行了二次嵌入。第二遍水印的嵌入规则与之前一样,但是对水印图像进行了上下左右的变换。水印提取阶段,通过对两个水印图像进行重构即可得到完整的原始水印信息。
2. 数字水印特征及评价标准
数字水印算法的性能评价标准包括透明性、鲁棒性、不可伪造性和水印容量四个方面,我们在设计和评估水印方案时必须考虑以上四方面的重要因素,其中水印容量和鲁棒性是相互矛盾的一对评价指标。一般来说,提高水印容量,往往会降低水印鲁棒性;而提高水印的鲁棒性,则往往会减少水印容量。因此,在设计和选择数字水印算法时,必须在两者之间进行权衡和取舍,以达到最优的性能表现 [5] 。
2.1. 透明性
透明性指含水印图像和载体图像相比,不能有肉眼可见的视觉质量的下降,且不影响载体的正常使用。一般用峰值信噪比(Peak Signal to Noise Ratio, PSNR)进行判定。其计算公式如(1)所示:
(1)
其中,
为载体图像在
处的像素值,
为含水印图像同一位置像素值,M和N分别为图像的长和宽。
2.2. 鲁棒性
鲁棒性指水印在遭受各种有意或无意攻击后而不易被破坏,水印仍能保持部分完整性并被准确提取出来,可能的攻击形式包括剪切、信道噪声、滤波、JPEG压缩、几何攻击等。水印鲁棒性的评价指标是误码率(Bit Error Rate, BER),计算公式如(2)所示:
(2)
其中
为原始二值水印,
为经过检测得到的二值水印信息,M和N分别为水印图像的长和宽,abs( )为求绝对值函数。
2.3. 不可伪造性
不可伪造性是指数字水印应该是难以被伪造和删除的,以避免恶意攻击和盗版。具有不可伪造性的水印可以帮助保护数字媒体内容的版权和安全,从而保护数字媒体内容的创作者和所有者的利益。它能够唯一地标识原始图像的相关信息,任何第三方都不能伪造他人的水印信息。
2.4. 水印容量
水印容量是指在PSNR和BER允许范围内,水印信息所占用的数据比例,一般用水印嵌入率表示。对于图像水印而言,用嵌入的水印信息比特数与载体信息比特数的比值来表示嵌入率。视频水印则用每一帧图像中或者每几帧图像中可以嵌入的水印信息比特数来衡量 [6] 。
3. 算法概述
本文实验中将原始图像和水印图像都分为8 × 8的图像块,分别对每个图像块进行DCT变换,每个DCT变换后的图像块包含64个DCT系数,找出要嵌入水印的点的坐标和该坐标周围上下左右四个点的系数值,对这四个DCT系数求均值。因为实验发现,只嵌入一次水印时对剪切攻击无抵抗性,因此我们选择二次嵌入水印。
3.1. 水印预处理
置乱算法是一种相对简单的加密算法,但是由于是初始条件的改变,使得变换后的图像与原始图像找不到任何关联,因此当应用到水印系统时,可以起到安全性的作用 [7] 。置乱的算法有许多种类型,如利用Arnold变换、Baker变换等算法 [8] ,本文对图像信息的预处理主要采用Arnold变换进行预处理。
Arnold置乱又称猫脸变换(Cat Mapping),是一种常见的数字图像加密技术。它通过多次应用一个特定的置换矩阵来改变图像像素的位置。该过程可以使图像的像素在空间上分散,从而增加了图像的随机性和复杂性。Arnold置乱逻辑简单,可有效的降低系统的复杂度。其定义式如(3)所示:
(3)
其中
,
是原图像像素中的坐标,
为经过变换后在新图像中的坐标位置,N为图像矩阵的阶数。Arnold置乱具有周期性,对于不同阶数的图像,置乱的周期不同,本实验中水印图像的置乱周期为48。
3.2. 基于DCT域的盲水印嵌入
水印嵌入流程如图1所示。设原始图像
,将I分为互不重叠的8 × 8的图像块,每个图像块用Block表示。对于
的图像I来说,一共分为
个图像块,同时,水印图像W也要被分割。本实验将I分为64 × 64个8 × 8的图像块,W也是8 × 8的图像块。对每个Block分别进行DCT变换,每一个DCT变换后的Block包含64个DCT系数,水印嵌入完成后得到的含水印图像记为
。
在嵌入水印阶段,首先要选择Block中的某个位置作为要嵌入水印的坐标点,以Block(5,5)为例,找出该坐标周围上下左右四个点的系数值,对这四个DCT系数求均值,将均值记为Emb_mean。值得注意的是,为保证水印信息的安全性,在嵌入水印之前,我们可以对水印进行加密操作,将含密水印嵌入载体图像中,具体的加密方式可以按需选择。如此,即使水印信息能被提取出来,也需要进一步的解密操作才能看到真实的水印内容。嵌入规则如式(4)所示,其中Q为嵌入强度 [9] 。将嵌入水印后的DCT系数做二维IDCT变换,所有
个子块都处理完成后,即生成含水印的图像。
(4)
![](//html.hanspub.org/file/1-1542948x24_hanspub.png?20230808101735589)
Figure 1. Flow chart with embedded blind watermark
图1. 盲水印嵌入流程图
3.3. 基于DCT域的盲水印提取
水印提取流程如图2所示。预处理阶段,我们要对含水印图像进行分块处理,依旧分为互不重叠的8 × 8的块(记为Block′),对每个Block'进行二维DCT变换。
提取水印阶段,首先找出各个块坐标位置为(5,4)、(5,6)、(4,5)、(6,5)四个点的DCT系数值,并对其做均值,记均值为Ext_mean,按以下规则提取水印:当Block′(5,5) > Ext_mean时,提取水印信息为0;当Block′(5,5) < Ext_mean时,提取水印信息为1。对提取的水印信息逆置乱即可得到恢复后的水印图像。
![](//html.hanspub.org/file/1-1542948x25_hanspub.png?20230808101735589)
Figure 2. Flow chart with extracting blind watermark
图2. 盲水印提取流程图
3.4. 水印二次嵌入
本实验首先尝试了对载体图像进行一次水印嵌入,但局限性表现在不抗剪切攻击,即在对图像进行剪切后,提取出的水印信息也会相应的缺失一块。这主要是和基于分块的DCT变换思想有关。经过分块以后,水印信息分别嵌入各个子块,最终使得水印在整个载体图像中的分布是均匀的。图3展示了不抗剪切的水印嵌入算法,如我们对含水印图像进行如图3(a)所示的剪切攻击,水印信息就会不可避免地缺失对应位置的水印内容如图3(b)。我们需要考虑如何改进才能使含水印图像抗剪切攻击?
![](//html.hanspub.org/file/1-1542948x27_hanspub.png?20230808101735589)
Figure 4. Watermark transformation before and after comparison
图4. 水印变换前后对比图
如图4所示,我们需要对水印图像(记为水印1)进行上下左右对换,即可得到水印2 [10] 。将得到的水印1和水印2按图5的流程图依次进行水印嵌入,即可得到抗剪切攻击的含水印图像。由于嵌入水印1时,选择Block(5,5)作为坐标点,因此我们选择Block(3,3)进行水印2的嵌入。在水印提取阶段,我们要对提取出的两个水印图像进行重构,即可组成完整的水印信息,重构规则如公式(5)所示,其中
和
分别表示提取的水印1和水印2,
表示重组水印。图6展示了在嵌入水印的图像遭受剪切攻击后水印信息的提取样例。
(5)
![](//html.hanspub.org/file/1-1542948x32_hanspub.png?20230808101735589)
Figure 5. Flowchart with two watermarks embedded
图5. 两次水印嵌入流程图
![](//html.hanspub.org/file/1-1542948x33_hanspub.png?20230808101735589)
Figure 6. Reconstruction of watermark after clipping attack
图6. 剪切攻击后水印的重构
4. 算法的统计与分析
在通过实验验证算法的过程中,采用512 × 512的灰度图像Lena作为载体图像,并分为8 × 8的子块,共4096块;采用图6中所示的64 × 64的二值图像BIGC作为水印图像,共64块,实验平台为MatlabR2017a。
4.1. 透明性测试
透明性测试可以反应水印信息的不可见程度。图7所示共有4组图片,我们设置嵌入强度为30时,分别采用DCT算法进行水印嵌入,其中,(a) (b) (c) (d)为原始图像,(e) (f) (g) (h)为含水印图像。可以观察到,人眼几乎看不出差别。另外,我们还统计了该算法在不同嵌入强度下的PSNR值,选择的4个嵌入水印强度分别是10、20、50、100,从图8可看出,在不加任何攻击,嵌入水印相同的情况下,随着嵌入强度的增加,PSNR逐步降低。
当水印嵌入强度为20时,对嵌入水印后的图像与原始图像进行峰值信噪比PSNR的计算,发现四幅图像的PSNR值为40.6275,40.3765,39.8056,38.2305。而当两幅图像的PSNR值大于25时,人眼就不能很明显的识别出两幅图像的差别。因此可以说明,本水印透明性比较好。
![](//html.hanspub.org/file/1-1542948x34_hanspub.png?20230808101735589)
Figure 7. Image comparison before and after embedding watermark
图7. 嵌入水印图像前后对比
![](//html.hanspub.org/file/1-1542948x35_hanspub.png?20230808101735589)
Figure 8. Statistical line plots of PSNR values at different embedding intensities
图8. 不同嵌入强度下PSNR值的统计折线图
4.2. 鲁棒性测试
为了说明算法的鲁棒性,我们在嵌入水印强度为10、20、50、100、200的情况下,针对嵌入水印后的Lena图像分别进行剪切攻击、高斯噪声攻击、均值滤波攻击,然后再提取攻击后的水印图像,并计算与原始水印信息的误码率BER,结果见表1。可以看出在均值滤波攻击下,误码率逐渐降低,一直低于0.5;在高斯噪声攻击下,误码率先缓慢增加,自嵌入强度为100后开始骤降,误码率低于0.5;在剪切攻击下,误码率缓慢降低最后保持不变。由此可见,该算法在经过二次嵌水印后,鲁棒性较强。
在嵌入水印强度为20时,如图9~11所示,我们分别展示了剪切、高斯、均值滤波攻击方式下提取的各个水印,其中子图(a)表示攻击图,子图(b)表示提取的含密水印1,子图(c)表示提取的含密水印2,子图(d)表示解密的重构水印。从图中可以看出,该水印的鲁棒性较好,在各种攻击下均能较大程度的还原水印信息。
![](Images/Table_Tmp.jpg)
Table 1. BER values for various attacks
表1. 各种攻击下的误码率数值
![](//html.hanspub.org/file/1-1542948x36_hanspub.png?20230808101735589)
Figure 9. Extract watermark under shear attack
图9. 剪切攻击提取水印
![](//html.hanspub.org/file/1-1542948x37_hanspub.png?20230808101735589)
Figure 10. Extract watermark under Gaussian noise attack
图10. 高斯噪声攻击提取水印
![](//html.hanspub.org/file/1-1542948x38_hanspub.png?20230808101735589)
Figure 11. Extract watermark under mean filtering attack
图11. 均值滤波攻击提取水印
5. 结论
本文在基于DCT水印嵌入算法的基础上,采用二次水印嵌入和Arnold水印置乱算法,实现了水印的抗剪切攻击特性,实现的核心关键就在于二次水印的变换过程以及盲水印的嵌入过程。实验结果表明,只要剪切面积不超过图像大小的1/2,该算法对剪切攻击就有一定的抵抗力。而对于常见的高斯噪声攻击、均值滤波攻击等鲁棒性还是很强的,并且透明性也能得到很好的保证。