饶俊慧,吴晓云
(1. 玉林师范学院 物理与电信工程学院,广西 玉林 537000;2. 广东财经大学 信息学院,广东 广州 5 10320)
图像处理技术发展的同时,给数字图像信息安全带来严峻挑战,利用一些软件和技术可以轻易篡改图像内容,其效果逼真甚至很难通过主观视觉进行鉴别。这种现象导致版权、票据和证件的真伪难辨,进而对信息安全构成威胁。水印算法利用在图像上嵌入特殊水印,使原始图像包含非可见特殊信息[1]。这样通过对图像进行水印提取,对比水印信息就可以确定图像是否遭受恶意攻击。由于水印算法具有图像完整性认证功能[2],因此关于图像的水印算法已经成为数字图像安全保密研究领域的重点,现阶段的研究热点是如何增强水印的隐藏性,以及在攻击情况下的鲁棒性[3]。早期水印算法只能应用于灰度图像[4],伴随互联网带宽与数据处理能力的增加,彩色数字图像大幅增加,不断涌现出适用于彩色图像的水印算法。当下较为成熟的算法有Hadamard、DWT、DCT、SVD,以及Contourle等算法,为了获得良好的水印效果,通常采用多种算法融合策略。文献[5]在将原始图像采取SVD处理的基础上,对全部分块采取Hadamard操作,并添加半脆弱水印。该算法仅对JPEG压缩攻击做了分析,缺乏其它攻击的抵抗性能支持。文献[6]在初始化阶段采取亮度小波分解,随后利用SVD添加水印。该算法针对多种攻击进行了客观验证,并且具有较好的水印破译难度。文献[7]通过Contourle和SVD完成双重水印添加,并分别采取Landweber与SIFT对水印进行重构和校正。该算法表现出良好的鲁棒性,但是在提取过程中必须依赖密钥。文献[8]对原始图像做HSV空间变换,并对S分量采取DCT变换,同时把HASH水印添加到S分量,该方法具有良好的半脆弱水印性能。
基于现有研究,为了进一步增强水印算法的隐藏性与鲁棒性,本文提出了融合DCT与SVD的半脆弱图像水印算法。算法有效利用了SVD的非可见性优势,同时优化了灵敏度和嵌入系数,并设计了二值水印篡改识别。此外,有效利用了DCT的感知能力,通过融合DCT来增强SVD嵌入与提取的性能。
对于任何图像而言,它的奇异值能够用于描述其内部特征。由于奇异值表现出良好的稳定性,所以当图像存在一定程度干扰的情况下,奇异值仍然能够保持较好的稳定特征。根据该特点,对图像进行SVD处理,可以将矩阵采取对角化操作,得到图像奇异值,再在其上添加水印,此时即便存在外界攻击,依旧可以较好的恢复水印。另外,奇异值表现的是亮度信息,水印的添加不会影响图像的主观效果与几何性质。假定矩阵A∈Rm×n,则A对应的SVD矩阵分解表示为
A=LSRT
(1)
L与R均是正交矩阵,依次代表左、右奇异值;S代表对角矩阵,描述如下
S=diag(σ1,σ2,…,σm),σ1≥σ2≥…≥σm≥0
(2)
为了提高SVD的灵敏度,这里对图像采取分块奇异值分析。对于一幅M×N图像,按照RGB分离得到图像Ir,Ig和Ib。利用在RGB内分别添加半脆弱水印,就可以实现对任意通道的篡改识别。在分块过程中,块的大小会影响篡改识别精度,但是也不能无限小,随着块的变小误检率也会随之增加,因此需要综合考量,本文采取3×3的分块。传统方法利用单个LSB来保存认证数据,为尽可能完整的得到分块数据,这里在两个LSB上添加水印。嵌入水印时,先将所有分块低频子带采取SVD处理可得
Fcb=LcbScbRcbT,c∈{R,G,B},b∈{blocki}
(3)
其中,i代表分块,即i=1,2,3,…,9。再把水印采取RGB分离得到Wr,Wg和Wb,SVD处理可得
Wc=LcwScwRcwT,c∈{R,G,B}
(4)
根据水印Wr,Wg和Wb的SVD结果修改低频子带的SVD结果,从而完成水印嵌入,于是嵌入过程描述如下
S′cb=Scb+λScw,c∈{R,G,B},b∈{blocki}
(5)
其中,0<λ<1表示嵌入系数。为了选取合适的嵌入系数λ,基于隐藏与鲁棒效果的考虑,这里设计如下方式确定λ
(6)
PSNR表示嵌入后的峰值信噪比,且PSNR>0;NC表示相关系数,且0 Scrz(i,j)=Scrb(i,j)-(Scrb(i,j)mod 4) (7) 其中,Scrb表示置乱图像;Scrz表示对Scrb内两个LSB像素清零。采用八位二进制数描述分块数据,其中五位用于记录矩阵S的迹,其余三位用于记录局部分块的平均迹。从而形成对独立分块与局部分组的篡改识别。在水印提取时,先提取出LSB,同时得到独立分块与局部分组的篡改识别OBAB与OGAB。然后计算二值水印,并采取匹配处理,独立分块匹配过程如下 (8) 其中,BAB表示由MSB得出的分块验证;TV表示实际的二值水印。局部分组匹配过程如下 (9) 其中,GAB表示由MSB得出的分组验证。通过TV′与TV的对比,便可以确定图像的篡改部分。 DCT变换具有效率高、易扩展、感知能力强的优势,根据一维DCT,可以方便的扩展至二维应用场合 (10) 其中,第一个方程表示DCT正变换;第二个方程表示DCT反变换;x与y表示空间变量,且x=0,1,…,M-1,y=0,1,…,N-1;m与n表示频域变量,且m=0,1,…,M-1,n=0,1,…,N-1;z(m)与z(n)表示变换系数,其取值方式为 (11) 在数字图像处理场景中,一般通过像素对其进行描述,这样可以令M=N,从而可以简化DCT的复杂度。其变换系数转化为 (12) 在利用DCT嵌入水印时,同样采取独立分块原则,将其分为3×3数量的独立块。将图像保存至二维数组中,分块得到block(x,y)。将block(x,y)采取DCT处理,输出结果为block_dct(x,y)。与SVD嵌入时同样的通道操作,根据水印Wr,Wg和Wb的DCT结果修改低频子带的DCT结果。与SVD嵌入不同的是,此时需要将图像分块采取DCT反变换,经过重组后完成水印添加。在对水印进行DCT提取时,为嵌入的逆操作。先对添加水印的图像分块,采取DCT反变换,获取到block_dct(x,y)。再根据block_dct(x,y)逆向计算出水印Wr,Wg和Wb,并对其依次采取DCT处理。最后经过重组,分离出原始水印及图像。 在水印生成的初始阶段,将原始图像采取小波分解。经过三级分解获得图像的低频子带,图1描述了其分解过程。因为HF3、FH3与HH3具有更好的鲁棒性,所以采用它们构建哈希。 图1 低频子带分解 假定HF3、FH3与HH3参数集依次是X1、X2与X3,对应哈希序列依次是X′1、X′2与X′3,其中Xi={xi,1,xi,2,…,xi,k},k=1,2,3。通过集合Xi内元素和门限对比,生成相应的哈希值 (13) T代表门限,这里利用Xi标准差s(Xi)与对应的系数α乘积来确定,即T=a×s(Xi)。把X′i读入m×m矩阵,对X′i采取或运算求解出哈希水印,并对其在频域内完成嵌入,流程描述为: 1)对载体图像采取3×3数量的独立分块。 2)对所有子块采取DCT变换得到block_dct(x,y)构造的矩阵。 3)将block_dct(x,y)构造的矩阵采取SVD分解 [Limg,Simg,Rimg]=svd(block_dct) (14) 4)嵌入水印,描述为 S′img=Simg+h×Wimg (15) h表示嵌入的强度系数;Wimg表示水印图像。 5)将S′img采取SVD分解[L,S,R]=svd(S′img),并将S和Limg、Rimg进行SVD反变换,从而确定新DC矩阵 block_dct′=Limg*S*Rimg (16) 6)把block_dct′采取DCT重构,通过DCT反向处理获得具有水印的图像。 关于水印提取的流程描述为: 1)对载体图像采取3×3数量的独立分块。 2)将所有分块采取DCT变换,构造具有水印信息的DC矩阵block_dct′。 3)将block_dct′采取SVD分解,确定对角矩阵S′,并结合嵌入时的L、R求解SVD反变换block′=L*S′*R。 4)计算嵌入时的Simg矩阵,求解出水印信息 (17) 仿真基于MATLAB2014,载体图像采用VOCdevkit数据集,图2列出了数据集中部分图像,图3列出了水印图像。 图2 实验载体图像 图3 水印图像 在水印算法性能验证时,主要从两个方面进行评价:透明度与鲁棒性。其中,透明度用于描述水印在载体上的隐藏效果。透明度越高,说明隐藏效果越好,防攻击的能力就越好。本文采用峰值信噪比(PSNR)参数作为性能指标。PSNR公式如下 (18) m与n分别是行与列;I(i,j)是载体图像;I′(i,j)是具有水印的图像。PSNR描述的是图像失真效果,因此PSNR值越大,意味着透明度越高。根据当前研究经验,PSNR指标达到40dB,即表明透明度效果良好。 鲁棒性通过相关系数(NC)指标来评价。NC的公式描述如下 (19) W(i,j)是实际的水印;W′(i,j)是提取到的水印。当NC越趋向于1时,代表W′(i,j)和W(i,j)的差异越小。根据经验,NC指标达到0.75以上,即表明相似度效果良好。 图4所示为嵌入水印的图像结果。从主观效果来看,很难发现和原始载体图像之间存在的差别,说明透明度很高。另外,表1列出了图4对应图像的PSNR结果,从数据可以看出,两种算法下,所有图像的PSNR参数均超过40dB,且本文算法的PSNR值明显优于文献[8]算法,证明本文算法的透明度和抗攻击能力更好。 图4 包含水印的图像 表1 PSNR指标结果 为了验证嵌入水印图像的抗攻击性能,针对JPEG有损压缩攻击进行分析,通过调整压缩系数得到图像对应的NC指标,结果如图5所示。从结果数据可以看出,当压缩系数为60时,图像的NC值为1。当压缩系数降低的过程中,图像的NC值随之逐渐降低,但仍保持对1的良好趋近。 图5 JPEG攻击时的NC指标结果 为了更加全面验证算法的抗攻击性能,引入JPEG以外的其它攻击,包括旋转、剪切、高斯噪声、泊松噪声,分别得到两种算法的NC指标,结果如图6所示。根据攻击方式的数据比较,不同攻击对水印算法的影响存在一定的差异,比如本文算法在高斯噪声与泊松噪声情况下的NC指标均为1,而在其它攻击情况下则有所下降。根据与文献算法的数据比较,在各种攻击情况下,本文算法始终保持更好的NC指标。表明本文方法具有更低的水印提取误差。NC指标的提高,充分证明了融合DCT变换与SVD分解能够有效提高图像水印算法的攻击抵抗能力,降低水印失真性。 图6 其它攻击时的NC指标结果 为了提高图像水印的感知效果,考虑到水印算法的透明性与鲁棒性,基于独立分块与低频子带,采用SVD分解图像奇异值。扩展了二维DCT变换改善水印的嵌入与提取,并将DCT与SVD进行了融合。仿真结果得出: 1)算法的PSNR指标明显高于40dB,证明具有良好的透明度,这是由于SVD分解与嵌入系数优化设计决定的。 2)在各类攻击情况下,算法的NC指标始终保持良好的对1趋近性,证明具有良好的水印误差与鲁棒性。这得益于SVD分解时采取的分块与分组篡改识别,DCT变换的良好感知性,以及基于低频子带的分解变换,提高了攻击场合中水印的嵌入与提取。3 基于DCT水印算法
4 融合DCT与SVD图像水印算法
5 仿真与结果分析
5.1 数据集与衡量指标
5.2 实验及结果分析
6 结束语