基于伪随机的图像水印算法
2020-06-10唐永军
唐永军
(湖南财经工业职业技术学院,湖南 衡阳 421002)
1 引 言
随着互联网时代的到来,大量的数据都在网络中进行通信,随之引发的安全问题也越来越严重。数字水印作为一种有效的防伪手段,受到了学术界的高度重视,近年来很多学者都对此做出了不少研究,提升了数字水印的实际性能[1-3]。姚军财等[4]提出了一种彩色图像的盲水印算法。算法首先结合人眼对比敏感度视觉特性及其模型,在频域中计算人眼感知原始图像的对比敏感度阈值,保证了水印的透明性。陈善学等[5]利用最低有效位(LSB)方法,提出了一种数字水印在空间域进行信息隐藏的方案,该算法利用QDCT的低频模值系数嵌入空域的最低有效位,在抗JPEG压缩、噪声、对比度调节都取得了较好的效果。王莹等[6]提出了基于QR分解的Contourlet域算法,对各种网络攻击具有较好的鲁棒性,但是在水印隐藏方面则效果较差。总体来说,数字水印性能有两大指标,即数字水印的隐蔽性以及鲁棒性,而两者又具有一定的矛盾,需要平衡。因此需要考虑一种能够将水印信息更加隐蔽地隐藏到宿主图像,同时利用图像本身特征使水印方案对多种类型的攻击具有更强鲁棒性[7]。
本文提出一种基于小波变换的水印方案,在宿主图像的基础上进行水印信息提取,再根据提取出的水印,向覆盖对象添加伪随机噪声序列(PN)。实验基于(512×512)大小的图像和大小为(8×8)的离散小波变换(DWT)块,能更好地抵抗高斯滤波等攻击。
2 PN序列水印算法
2.1 算法简介
本文提出改进的离散小波变换(DWT)的图像伪随机噪声(PN)序列水印算法。在本文算法中,用小波变换对LH和HL子带进行分解[8]。HAAR小波是一种正交归一化小波,具有计算快速、完全可逆、没边缘效应等优势[9]。Haar小波从水平和竖直两个方向进行低通和高通滤波,因此本文的数字水印也从两个方向分别生成。算法中使用的水印以数字签名形式存在,该水印签名采用伪随机码的方式嵌入到输入图像的变换系数中。
对于每个位图信息,都生成两个不同的伪随机噪声(PN)矩阵,与小波系数矩阵的大小相同[10]。将相应的两个PN序列值分别加到对应的第一级LH和HL系数值中,如公式(1)所示:
W=V+kXifb=0,
(1)
其中:V是宿主图像的小波系数,W是水印嵌入后的小波系数,k是增益因子,X是PN值,b是需要嵌入的水印位。此时嵌入每个像素的水印是利用了PN值的的伪随机性,因此增强了水印算法的安全性。
2.2 水印嵌入过程
假设大小为M×N的图像I(M,N)用作输入,整个水印的嵌入流程如下:
步骤1:读取要隐藏的消息并将其转换为二进制序列Dd(Dd= 1~n)。
步骤2:使用Haar小波变换对输入图像进行变换,并获得第一级子带系数cc A,ccH,ccV,ccD。
步骤4:对于Dd= 1~n,当添加位图信息message为0时,PN序列为ccH和ccV。
ccH= ccH +k*PN_h,
(2)
ccV= ccV +k*PN_v,
(3)
其中:k是用于指定嵌入数据强度的增益因子。然后用逆Haar小波变换生成最终的水印图像Iw(M,N)。整个流程如图1所示。
图1 水印嵌入过程
2.3 水印提取工艺
为了检测水印,在水印插入过程中,使用相同的状态密钥生成并使用相同的伪随机值,同时用两个细节子带的DWT系数确定其平均相关性。然后,对于IH和HI子带,得到了对应于每个PN值的N个相关系数的平均值,最后将相关值的均值作为消息提取的阈值t。在检测过程中,如果特定序列的平均相关性超过t,则设置为“0”;否则设置为“1”。然后,恢复过程在整个PN序列中进行迭代,直到恢复水印的位图信息。为了提取水印,对图2所示的水印图像应用以下步骤:
步骤1:读取水印图像Iw(M,N),利用Haar小波变换对水印图像进行变换,得到CCA1、CCH1、CCV1、CCD1系数。
步骤3:利用以上步骤生成的PN序列对,计算其相关系数,并将这些值存储在corr_h(i)和corr_v(i)中。
步骤4:计算相关平均值corr(i)=(corr_uh(i)+corr_v(i))/2。
步骤5.对计算结果进行水印信息的提取。
图2 水印提取过程
3 实验结果及分析
本文采用宿主图像为256×256像素的图片进行实验,水印图像大小为32×32像素。Haar小波滤波器用于小波分解,将宿主图像分解为4个子带LL、LH、HL还有HH。水印图像嵌入在LH和HL子带。嵌入和提取的水印的流程如图1和图2所示。在隐蔽性方面的评价,实验将峰值信噪比输入和水印之间的比率(PSNR)作为隐蔽性性能的主要指标,PSNR以分贝作为单位。PSNR取决于平均值平方误差(MSE),根据公式(4)、(5)计算出,公式中的Iv和Iw代表原始图像和水印图像,M和N为图像大小:
(4)
(5)
在鲁棒性的比较方面,本文用标准化的相关性来进行比较。在提取水印之后,用输入水印和提取水印的归一化相关系数(NCC)来判断水印的存在性。在公式中,h和w分别是水印的高度和宽度,Wo(i,j)和We(i,j)是坐标轴(i,j)的原始值和加入水印后像素值,
(6)
图3中表示PSNR值与高斯滤波不同窗口值大小下(0~10)的结果。本实验采用经典的水印算法进行对比,算法2是Hiratsuka提出的Patchwork算法[11],算法3是Chang等提出的DCT算法[12],算法4是是Maroua等提出的Fourier-Mellin算法[13],算法5是Etemad提出的加性Contourlet算法[14],可以看到本文提出的算法的PSNR值始终保持41 dB以上的值,在不同的窗口大小的表现平稳,明显好于其他算法,平均PSNR有10%以上的改善。
图3 高斯滤波下各算法PSNR值对比
图4中的图形是不同水印算法在SPHIT压缩攻击中不同压缩比例的情况下NC值的比较。可以看到本文算法能保持在0.84以上的NC值,而其他算法的NC值明显较低,其中Contourlet双因子算法的NC值始终处于0.6以下,其他算法在稳定性方面也不如本文算法,波形比较陡峭。
图4 SPIHT压缩下各算法NC值对比
对于几种水印技术,图5显示了在椒盐噪声攻击下,不同噪声密度(0~1)的PSNR值。在从密度为0~1的噪声攻击下,本文算法的PSNR值表现都优于比对的经典算法,以噪声密度为0.6的情况为例,本文提出的算法的PSNR在39 db,同样情况下PatchWork为31 db,传统DCT为28 db,Fourier-Mellin为34.8 db,Contourlet双因子算法为29.8 db。
图5 椒盐噪声攻击下不同算法的PSNR值
通常对水印图像的攻击有叠加噪声,平滑滤波,JPEG压缩等方式。本文对上述攻击的抵抗能力进行测试,将结果用归一化系数来表示,参数和结果如表1所示。
从表1可以看到,本文提出的算法在针对常见的攻击,都能将归一化系数保持在0.95以上,其中对10%随机分布的叠加噪声的抗攻击能力最强为0.987,总体而言本文算法具有较高抗攻击能力,鲁棒性较强。
表1 水印攻击参数和结果
4 结 论
本文提出并实现了一种基于PN序列的离散小波水印算法。该算法采用二进制图像作为水印,即使在原始水印和提取水印之间的相关性较低的情况下,也可以通过恢复水印来增加鲁棒性。在本文实现的算法中,通过对各种尺寸窗口1~10的高斯滤波攻击,峰值信噪比值表现稳定,与PatchWork、DCT等算法相比,隐蔽性和鲁棒性具有较明显的提高。在不同压缩比例下的SPIHT攻击中,本文算法能稳定在0.8以上的NC值,特别在压缩比为10~90的范围内,算法的NC值明显比对比算法更加稳定。在所有噪声密度为0~1的椒盐噪声攻击下,本文算法具有很高的安全性,PSNR的值基本稳定在35 dB以上。通过以上实验证明,本文提出的算法具有很强的鲁棒性,同时具有良好的稳定性,能适用于版权保护、军事、医疗和执法等相关图像处理领域,为企业级数据加密保护提供有益参考。