徐 伟,刘 颖,2,3,朱婷鸽,2,3
(1.西安邮电大学 通信与信息工程学院,陕西 西安710121;2.西安邮电大学 电子信息现场勘验应用技术公安部重点实验室,陕西 西安 710121;3.陕西省无线通信与信息处理技术国合基地,陕西 西安 710121)
常见的水印嵌入方法[1-3]有两种:基于空间域和基于变换域[4,5]。基于空间域的方法通过改变载体图像的像素值对水印进行嵌入,该方法实现简单,计算快且嵌入信息量大,但抗攻击能力较弱。最低有效位(least significant bit,LSB)算法[6]是最早且具代表性的空域算法。文献[7]通过图像压缩技术对传统LSB算法改进,具有更好的抗JPEG压缩的效果。基于变换域的方法通过各种变换将原始图像变换到不同域,然后改变变换域的系数值嵌入水印。常用变换域系数有离散余变换(discrete cosine transform,DCT)、离散小波变换(discrete wavelet transform,DWT)和奇异值分解(singular value decomposition,SVD)系数[8]。DCT被广泛用于MPEG图像压缩[9],通过DCT变换对低频分量嵌入水印[10]具有较好的鲁棒性,但抗几何攻击性能较弱。文献[11]提出一种DWT-DCT混合水印方案,先对载体图像8×8分块DWT变换,再对每块HL子带和LH子带做DCT变换,水印嵌入到对应子带DCT系数上,该方法鲁棒性强,但不可感知性差。文献[12]提出一种DWT-SVD混合嵌入水印的方法,该方法能够平衡水印图像不可感知性和鲁棒性,但效果不佳。
针对水印算法不可感知性和鲁棒性不易平衡问题。根据图像哈希不可篡改的特点,提出一种基于DCT和SVD的图像哈希水印算法,在离散小波变换域提取载体图像的低频系数矩阵构造哈希序列,再将哈希序列以水印的方式嵌入载体图像中。
1.1.1 特征提取
对载体图像进行3级小波分解,如图1所示。LL3是直流子带,HL3、LH3和HH3是低频子带,HL2、LH2和HH2是中频子带,HL1、LH1和HH1是高频子带。为了使生成的哈希鲁棒性更强,我们选取低频子带生成哈希。
图1 三级小波分解
1.1.2 构造图像水印
通过低频子带提取特征构造图像哈希水印,其过程如下:
(1)令X1,X2,X3分别表示中频子带HL3、LH3和HH3的系数集合,让n表示每个中频子带系数的个数,则Xi={xi,1,xi,2,…,xi,n},i=1,2,3。X′1,X′2,X′3分别表示由X1,X2,X3生成的哈希序列集合;
(2)将每个中频系数值的绝对值与阈值T相比较生成哈希值,可描述为
(1)
其中,X′i={x′i,1,x′i,2,…,x′i,n},i=1,2,3
T=k×std(Xi),k>0
(2)
式中:std(·) 表示Xi的标准差,k是标准差系数。根据不同标准差,设置不同的k值,若k足够大,则会丢失更多细节,反之,则会保留更多细节。
(3)将哈希序列集合X′i存放于大小为m×m的矩阵中,其中m×m=n。 分别得到X′1,X′2,X′3构成的矩阵h1、h2和h3;
(4)将h1、h2和h3进行逻辑或操作得到哈希水印h,即h=h1|h2|h3。
1.2.1 算法整体框架
既要考虑水印嵌入的鲁棒性,又要考虑载体图像的保真性,为了达到两者之间的平衡,我们选取哈希值作为水印信息在频域中进行嵌入。嵌入过程需要载体图像和水印图像的输入,载体图像经过DCT和SVD变换,水印图像只需要进行SVD变换,提取过程则是嵌入的逆过程,具体实现过程如图2所示。
1.2.2 水印的嵌入算法
图像水印的嵌入过程如下所述。
(1)将载体图像进行8×8分块,对每个子块进行DCT变换;
(2)提取每个DCT子块的DC系数,得到矩阵DC_block;
(3)对DC系数矩阵DC_block进行SVD变换,得到奇异值矩阵S_img,即
[U_img,S_img,V_img]=svd(DC_block)
(3)
(4)进行水印嵌入,嵌入方式如下
new_S_img=S_img+f×wm
(4)
其中,wm是水印图像,f是水印嵌入强度。
(5)对new_S_img进行奇异值分解,即
[U,S,V]=svd(new_S_img)
(5)
(6)取矩阵U_img、V_img与矩阵S做SVD逆变换得到新的DC系数矩阵,即
new_DC_block=U_img*S*V_img′
(6)
(7)将new_DC_block和DCT子块进行重构,再进行DCT逆变换得到含水印的图像。
图2 水印的嵌入与提取过程
1.2.3 水印的提取算法
图像水印的提取过程如下所述。
(1)将含水印的图像进行8×8分块,对每个子块进行DCT变换;
(2)从每个DCT子块中收集DC系数,得到矩阵watermarked_block;
(3)对watermarked_block进行SVD变换,得到对角阵,记为S_watermarked;
(4)提取水印嵌入算法中的U和V与S_watermarked做SVD逆变换,即
new_block=U*S_watermarked*V′
(7)
(5)提取水印嵌入算法中的S_img,根据下述公式提取水印信息,即
extracted_watermark=(new_block-S_img)/f
(8)
其中,f是水印嵌入强度。
实验采用PC端的matlab 2016完成。使用www.imageprocessingplace.com的图像库中提供的5幅灰度图像进行实验,测试建议算法性能,载体图像尺寸均为512×512,水印图像是大小为64×64的二值图像,如图3所示,其中图3(a)~ 图3(e)为载体图像,而图3(f)~图3(j)分别是载体图像生成的二值水印图像。
图3 载体图像与水印图像
为了将实验结果与其它文献中的结果进行比较,采用峰值信噪比(peak signal to noise ratio,PSNR)和结构相似性(structural similarity,SSIM)评价水印的不可感知性性能,用归一化相关系数(normalized correlation coef-ficient,NC)评价水印的鲁棒性性能。
其中,PSNR和SSIM的计算公式分别如下
(9)
(10)
式中:μx、μy分别表示图像X和Y的均值,σx、σy分别表示图像X和Y的方差,σxy图像X和Y的协方差,即
(11)
(12)
(13)
式中:X和Y分别表示载体图像和嵌入水印后的图像,M和N分别为图像的高度和宽度。
其中,NC的计算公式如下
(14)
式中:W和W*分别表示原始水印和提取的水印图像,M和N分别为图像的高度和宽度。
对嵌入水印后的图像未攻击的情况下,计算水印嵌入前后载体图像的PSNR和SSIM以及提取水印NC值,衡量水印算法性能,结果见表1。
表1 未攻击的性能指标测试
从表1的数据可以看出,在未受攻击时,载体图像和嵌入水印的图像之间PSNR达到54 dB以上,而SSIM达到0.99以上,说明嵌入水印后的图像具有较好的保真性,人眼无法察觉是否有水印嵌入,所以满足水印的不可感知性;并且提取的水印和原始水印几乎无差异,NC值均为1,所以也满足水印的鲁棒性。
几种常见的攻击测试,如剪切攻击、高斯噪声攻击、椒盐噪声攻击、中值滤波攻击和旋转攻击,计算水印嵌入前后载体图像的PSNR和SSIM以及提取水印的NC值,如图4(a)~图4(e)显示不同攻击下的性能评价指标测试值。
图4 经不同攻击的性能指标测试
从图4中的数据可以看出,在受到不同类型的攻击时,载体图像和嵌入水印的图像之间的PSNR值大部分都可以大于28 dB,SSIM也具有较高的值,尤其对剪切攻击PSNR值达到55 dB以上,而SSIM值也可高达0.98以上,表明该算法具有良好的水印不可感知性。在所有攻击下的NC值均在0.98以上,表明算法满足水印的鲁棒性。
为了进一步说明提出的水印算法性能,选取所提出算法的Lena图像与文献[13]中Lena图像进行比较,选用原因是载体图像都为灰度图像,水印图像都是二值图像,在水印嵌入过程都使用了SVD变换,最后通过PSNR和NC值来衡量水印的不可感知性和鲁棒性性能,见表2。
表2 Lena图像不同攻击下的算法性能比较
(1)不可感知性方面:从表2的数据可知,在未受攻击时嵌入水印的PSNR值略高于文献[13],但是当遭受不同类型的攻击时PSNR值都高于文献[13]的算法,表明提出的算法具有较好的不可感知性;
(2)鲁棒性方面:由表2的数据可知,不论有没有受到攻击,提取水印的NC都会高于文献[13]中的数值,说明算法具有较好的鲁棒性。
通过各种攻击对该方案的鲁棒性和安全性进行研究,并比较分析。结果表明,所提出的图像哈希水印算法在抵抗各种常规攻击的能力上具有更好的鲁棒性。主要因为在于,该算法将载体图像进行分块DCT变换,然后将低频系数的组合进行SVD变换,最后将二值水印嵌入到奇异值所对应的矩阵上,这使得当嵌入较高强度的水印时也能具有较好的视觉不可感知性,并且算法的总体性能表现优于文献[13]。因此,所提出的算法可以有效地应用于数字图像的版权保护。