1. 引言
近几年,随着计算机网络技术和通信技术的快速发展,数字信息广泛传播,对图像版权信息的保护尤为重要,数字水印是一种较为有效的保护数字安全的方法之一,已经成为国内外学者研究的热点。数字水印算法从隐藏位置来看可以分为两类:空间域算法和变换域算法,由于在变换域算法中图像水印的鲁棒性强 [1],已经被广泛应用于数字水印技术领域中。常见的变换域算法包括离散傅里叶变换 [2]、离散余弦变换 [3]、离散小波变换 [4]、主成分分析 [5] 等。当前,混合水印算法的研究非常活跃,文献 [6] 和文献 [7] 提出了在离散余弦变换和离散小波变换基础上,结合分数阶傅里叶变换的时频特性,将水印信息嵌入到载体图像,提高算法的鲁棒性。文献 [8] 设计了一种基于DCT-DWT-SVD视频水印算法,利用视频作为存储载体,选取原始视频关键帧,采用离散小波变换和离散余弦变换对关键帧分量进行多次变换,为彩色图像安全存储提供了良好的方案。针对水印算法的鲁棒性和不可见性,本文提出在YCbCr色彩空间下,研究离散小波变换和离散余弦变换相结合的图像水印算法。算法包括水印置乱、水印嵌入、水印提取。通过Matlab仿真实验表明,与传统的水印算法相比,此算法体现了较好的不可见性和鲁棒性。
2. 水印图像的置乱与加密
针对彩色水印图像,便于直观观察图像信息,将其转换为二值图像。在嵌入水印前进行预处理,极大的提高了信息安全性。本文采用Arnold变换,也称为猫脸变换(cat映射),将图像各像素点的位置进行置乱,使其达到置乱目的。
Arnold变换定义如下:
(1)
式中,a、b、N为正整数,mod是求余数的函数。Arnold变换具有周期性,即多次应用Cat映射迭代以后,又会回到原始的状态。图像的大小不同,重复出现原始图像的迭代次数就不一样。因此可以把图像大小作为密钥。例如,将大小为512 × 512的图1(a)彩色水印图像转换为图1(b)二值图像进行Arnold置乱变换后的图像如图1(c)和图1(d)所示,迭代次数T为1和52次。

Figure 1. Comparison before and after Arnold scrambling of watermark image
图1. 水印图像Arnold置乱前后对比图
3. 彩色图像水印算法
3.1. YCbCr色彩空间
色彩空间也称为色彩系统或色彩模型,它的用途是在坐标系统和子空间的标准下用通常可接受的方式对彩色加以描述。目前,最为常见的色彩空间是RGB和YCbCr。RGB色彩空间由红(R)、绿(G)、蓝(B)构成,其细节难以进行数字化的调整,YCbCr是通过有序的三元组来表示的,三元由Y (Luminance)、Cb (Chrominance-Blue)和Cr (Chrominance-Red)组成,其中Y表示颜色的明亮度和浓度,而Cb和Cr则分别表示颜色的蓝色浓度偏移量和红色浓度偏移量。所以在本文中,将RGB彩色图像转换为YCbCr色彩空间。其相互转换公式如下:
(2)
(3)
3.2. 水印的嵌入与提取
为了使水印图像嵌入载体图像具有较好的鲁棒性,本文选择将RGB色彩空间转换为YCbCr色彩空间,并将水印信息嵌入到分离出的Y通道。整个算法实现流程如图2所示。

Figure 2. Watermark embedding and extraction process
图2. 水印嵌入与提取过程
3.2.1. 水印图像的嵌入
本文算法实现步骤:
1) 读取尺寸为512 × 512的彩色载体图像J;将J由RGB色彩空间转换为YCbCr色彩空间,对该色彩空间模型中的分量Y、Cb、Cr通道进行分离,选择Y通道;
2) 对Y通道进行一级DWT,即:
(4)
式(4)中:ca为低频系数矩阵,ch为水平系数矩阵,cv为垂直系数矩阵,cd为高频系数矩阵。
3) 将一级DWT后的LL子带进行8 × 8分块,对每个子块进行DCT。
4) 获得二值水印图像,具体过程是先输入原始彩色水印图像,转换为灰度图像,将其大小调整为32 × 32,进行操作得到二值水印图像M。
5) 提取每个子块的系数矩阵block_dct,对每个系数矩阵嵌入水印,得到新的系数矩阵new_block_dct规则如下:
(5)
式(5)中,考虑水印的鲁棒性和不可见性之间的平衡,取T = 10。
6) 用新的系数矩阵new_block_dct替代DCT子块的系数矩阵。对每个新的DCT子块系数矩阵进行逆DCT,得到新的低频系数子带new_LL,用new_LL替换原始的LL子带进行逆DWT,得到嵌入水印的图像。
3.2.2. 水印图像的提取
本文算法实现步骤:
1) 输入嵌入水印的图像,对其执行水印算法嵌入的(1)~(3)步骤,记得到的系数矩阵为watermarked_block_dct。
2) 根据watermarked_block_dct和水印嵌入算法的block_dct,构造矩阵Image,规则如下:
(6)
3) 通过矩阵Image提取二值水印图像信息,构造二值矩阵OutImage,规则如下:
(7)
4) 对二值矩阵OutImage,用Arnold逆变换,得到提取的二值水印图像,在对其进行灰度处理。
4. 实验结果及讨论
4.1. 图像的评价标准
4.1.1. 峰值信噪比
峰值信噪比(Peak Singal to Noise Ratio, PSNR)是一种评价图像的客观标准。PSNR的计算公式如下:
(8)
(9)
其中,式(8)中PSNR的单位为dB,数值越大表示失真越小。式(9)中的MSE表示嵌入水印图像X和载体图像Y的均方误差(Mean Square Error),H、W分别为图像的高度和宽度;n为每像素的比特数,一般取8。
4.1.2. 归一化相关系数
归一化相关系数(Normalization Correlation, NC)是计算个体间的相似程度。即NC越大,说明个体间相似程度越大,差异越小。NC的计算公式如下:
(10)
其中,式(10)中
是原始水印信息;
代表提取的水印信息;L代表水印长度。
4.1.3. 结构相似度指数
结构相似度指数(Structural Similarity ,SSIM)是衡量水印不可见性能的指标之一。其计算公式如下:
(11)
其中,式(11)中
分别代表载体图像和嵌入水印图像的均值,
分别表示它们的方差,
表示两者的协方差。
是防止分母为0的变量。
4.2. 实验结果分析
为验证算法的性能,采用MATLAB 2016完成仿真,载体图像采用Baboon,尺寸为512 × 512的24位彩色PPM图像,水印采用陕西师范大学校徽图案,尺寸为32 × 32的彩色BMP图像进行实验,实验用图如图3所示,其中左图3(a)为原始图像,右图3(b)为水印图像。

Figure 3. Original image and watermark image
图3. 载体图像与水印图像
采用本文算法,将彩色水印图像嵌入载体图像,结果如图4(a)所示,从嵌入水印的图像提取出的水印图像如图4(b)所示。
从图3(a)和图4(a)可看出,水印具有较好的不可见性,在没有任何攻击的条件下,根据本文算法,对原始载体图像Y通道的图像与嵌入水印图像计算,二者的PSNR值约为48.1313,SSIM值约为0.9994,提取出的水印与原始水印的NC值为1.0000,证明了该算法的有效性。
5. 抗攻击性能
为了检测算法的性能,本文采用常用的攻击方式,如高斯噪声、椒盐噪声、泊松噪声、乘性噪声、均值滤波等攻击。表1为嵌入水印图像经各种攻击后的测试结果。
从表1可以看出,嵌入水印图像遭受各种攻击后。提取出的水印与原始水印图的归一化相关系数值较高,且结构相似指数也较高,说明该算法具有良好的鲁棒性和不可见性。
与其他算法比较
为了更好的验证该算法的性能,将本文结果与文献 [9] 和文献 [10] 算法进行比较。文献 [9] 和文献 [10] 均选取彩色图像作为载体图像,且文献 [9] 算法在YCbCr色彩空间实现的,为了提高水印安全性,对水印图像采取了Arnold变换。水印嵌入与提取耗时对比见表2。

Table 2. Time comparison between watermark embedding and extraction
表2. 水印嵌入与提取耗时对比
从表2可以看出,本文算法水印嵌入与提取所用时间相比于文献 [10] 明显减少,说明该算法的简洁性与有效性。从表1可以看出,与文献 [8] 算法相比,嵌入水印遭受各种攻击后提取出的水印图像与原始水印图像相比,其NC值略大于文献 [9],说明该算法具有较好的鲁棒性和不可见性。
6. 结束语
提出一种基于离散小波变换和离散余弦变换的彩色图像水印算法。实验结果表明,该算法在分块DCT上嵌入水印,具有良好的不可见性;对抵抗各种噪声攻击具有较强的鲁棒性;在水印嵌入和提取消耗时间更少。