肖振久, 韩 帅, 唐晓亮, 姜 东
(1.辽宁工程技术大学 软件学院,辽宁 葫芦岛 125100; 2.中国科学院海西研究院泉州装备制造研究所,福建 晋江 362200)
随着计算机技术的快速发展,数字图像在互联网上的传播变得越来越容易,其在传播过程被恶意修改和非法复制的问题也逐渐凸显出来。因此,保证数字图像的完整性和防止非法复制变得至关重要。
数字水印技术[1~3]是验证版权和维护图像完整性的常用方法。从水印的嵌入过程来分类,可将水印算法分为空间域算法和变换域算法,因变换域水印算法对常规攻击有更好的鲁棒性,受到了当前研究者们广泛关注。如Sheth R K>等人[4]提出一种基于离散余弦变换和离散小波变换(discrete wavelet transform,DWT)的安全数字图像水印,提升了宿主图像嵌入水印信息后的鲁棒性和感知透明性,可以有效抵抗裁剪、噪声等常规攻击。Li J等人[5]提出一种将小波变换和非负矩阵分解(non-negative matrix factorization,NMF)相结合的水印算法,原始载体图像首先经过两次小波变换,然后通过NMF将水印嵌入到中频子图中,算法常规攻击测试中提取的水印出现失真现象,鲁棒性表现不足。张秋余等人[6]对此进行了改进,将DWT与奇异值分解(singular value decomposition,SVD)相结合,由于宿主图像的轻微扰动不会对其奇异值造成过大影响,因此,算法在抗攻击测试时表现出较好的鲁棒性。为解决水印算法中存在的不可见性与鲁棒性之间的矛盾,2003年温泉等人[7]提出了零水印的概念。零水印是利用载体图像的内部特征构造,不会破坏图像的完整性。曲长波等人[8]提出一种小波域视觉密码零水印算法,该算法使用SVD和视觉密码构造零水印,算法攻击测试时有不错的鲁棒性和感知透明性。文献[9]提出一种利用增强SVD(boost normed SVD,BN-SVD)的零水印算法,有效解决了对角线失真问题。此外,防止数字图像被恶意修改,保证其完整性,一直以来受到研究者们的关注。Trivedy S等人[10]利用Logistic映射的混沌序列生成脆弱水印并嵌入到载体图像中来保证其完整性。Zhang H等人[11]提出一种利用SVD特性实现图像认证的脆弱水印,原宿主图像经过SVD构成脆弱水印并嵌入到自身的最低有效位中,实验结果表明,算法对常规攻击有较高的敏感性。
综上所述,国内外现有水印算法只针对完整性检验或鲁棒性加强一个方面展开研究,因此本文提出一种包含两方面的双重水印方案。第1重认证水印用于保证数字图像的完整性。第2重零水印具有强鲁棒性和不可见性,当受到攻击时,依然可以有效提取出完整水印。该算法的优势在于第1重水印可将被篡改图像复原,保证图像信息的完整性;零水印构造过程中通过天牛须搜索(beetle antennae search,BAS)算法自适应确定BN-SVD中参数β的最优值,克服了实验参数随机性的问题,同时采用视觉密码对零水印进行加密,算法的安全性得到了进一步的提升。
环面自同构映射[12]是一种典型的混沌映射,其公式为
(1)
式中A为一个的2×2矩阵,并且detA=1;(x0,y0)为初始像素点的坐标;(x1,y1)为经过一次变换后得到的用于替换的像素点坐标;mod为取余运算。
本文是对图像块的映射,由于图像块序列是一维序列,因此,转换为一维的环面自同构映射的变换公式
X′=f(X)=(k×X)mod(N)+1
(2)
式中X′,X(∈[1,N])分别为映射序列号和当前序列号;k(∈[0,N-1])为秘钥且必须为素数;N为图像块总数。
BN-SVD[13]是对SVD的改进,通过引入参数β,有效解决了数字图像SVD后产生的对角线方向上灰度不均衡的问题[9]。矩阵A的BN-SVD为
A=U×(S)β×VT,0≤β≤1
(3)
式中U,V分别为左奇异矩阵和右奇异矩阵;S=diag(σi)为A的奇异值矩阵,非对角元素均为0。
BAS算法[14]是于2017年提出的一种仿生智能优化算法,具有运算量小,寻优速度快等特点。生物原理为:天牛通过两个触角搜寻食物,当左边触角接收到比右触角更强的气味时,天牛就会向左边前进,而不会向右边,根据这一原理,天牛不断检测气味并移动位置,可以快速、有效地找到食物空间坐标。算法主要步骤如下:
1)初始化最大迭代次数为nmax,并随机化天牛朝向g
(4)
式中k为空间维度,rands()为随机函数。
2)第t次迭代时天牛的左、右两须的空间坐标为
(5)
3)迭代更新天牛下一次移动的位置,并移动到所得位置,位置更新公式为
(6)
式中δt为步长因子,sign()为符号函数,f为气味强度测定函数,即适应度函数
f=(1-(2×NC))/2
(7)
式中 NC(normalized correlation)为归一化相关值。
4)迭代执行步骤(2)~步骤(3),当迭代次数达到最大nmax时,结束迭代过程,得到的最终位置Xbest,即所求参数β。
双重水印的构造流程如图1所示。
图1 双重水印的构造
选取大小为N×N的原始图像R,(N/16)×(N/16)的水印图像W2为,具体的流程如下:
1)对载体图像R2×2不重叠分块,随机生成一个素数K1,以图像块为单位利用环面自同构映射生成恢复矩阵B。
2)计算每个图像块的均值构造认证水印W1。
3)原始载体图像R进行DWT获得低频子带并进行不重叠分块,得到子块Ai(i=1,2,…,(N/16)×(N×16))并利用NMF对Ai进行分解,即
Ai≈Pi×Qi
(8)
式中Pi和Qi分别为n×k和k×n的非负矩阵,其中k为Ai的秩,且k≤n。
4)利用BN-SVD对得到特征矩阵Qi进行分解,即
(9)
式中Si为对角矩阵,参数β通过BAS找到最优值。
5)取对角矩阵Si中的最大值,记作ηi(1,2,…,(N/16)×(N/16))并计算均值为mean(ηi)。
6)对比ηi和mean(ηi)的大小生成特征向量M
(10)
(11)
8)将零水印图像H通过视觉密码进行加密,生成秘密图份Gi(i=1,2)。
双重水印的检测流程如图2所示。
图2 双重水印的检测
具体步骤为:
2)将原始载体图像R′进行DWT获得低频子带并进行不重叠分块,得到子块A′i(1,2,…,(N/16)×(N/16)),并利用NMF对A′i进行分解,即
A′i≈P′i×Q′i
(12)
3)利用BN-SVD对Q′i进行分解,获得对角矩阵S′i。
5)对比η′i和mean(η′i)的大小生成特征向量M′。
6)将秘密图份Gi(i=1,2)叠加恢复成零水印图像H′。
7)将恢复的零水印H′和特征向量M′做异或运算,得到加密的水印图像W′2,即
W′2=XOR(H′,M′)
(13)
8)最后,利用秘钥K3和K2对加密的水印图像W′2依次进行逆Logistic映射和Arnold逆变换得到原始水印图像W2。
为了验证本文算法的可行性,使用MATLAB 2016a作为实验平台,选取如图3(a)~(d)所示的4幅图像作为测试图像。初始化水印图像加密时所需的参数,Arnold变换的变换次数K2=20;Logistic映射的控制参数r=3.654,初值K3设置为0.54。初始化BAS的最大迭代次数为30。仿真过程中通过归一化相关值(NC)来评价提取的水印和原水印的相似度,NC∈[0,1],NC值越接近1说明提取的水印和原始水印越相同。NC表示为
(14)
式中x1,x2分别为初始水印和提取的水印。
图3 测试图像和水印图像
图4 第1重水印构造示意
当图像被篡改时,需要恢复图像。具体的恢复步骤为:
1)找到认证水印中发生变化的像素点。
2)对应找到载体图像中被篡改的图像块,设为A。
3)利用环面自同构映射找到恢复矩阵中对应的图像块,设为B。
4)将图像块A替换为图像块B。
5)将图像中被篡改的位置依次进行步骤(1)~步骤(4),从而完成对整个数字图像的篡改恢复。
为了验证本文算法的篡改恢复效果,分别对图像Lena、图像Plane、图像Baboon和二维码图像进行剪切攻击,然后对被攻击的图像进行篡改恢复。如图5为部分实验结果。实验结果表明,第1重水印对篡改攻击具有较高的敏感性,并且能够很好地恢复被篡改的数字图像,有效保证了数字图像的真实性和完整性。
图5 第1重水印的恢复效果
当数字图像被攻击,其自身的原始性将会受到影响,导致提取的水印存在失真现象。因此为了验证第2重水印的鲁棒性,分别对图像Lena、图像Plane和图像Baboon 3幅载体图像做了9种不同的攻击。表1列出的是3幅载体图像在受到不同强度的各种攻击后,该算法提取的水印图像的NC值。通过表中的数据可以看出,当没有攻击时,NC值为1,这说明该算法提取的水印是无损的,当载体图像受到噪声、滤波、压缩、旋转、剪切攻击时,本文算法提取的水印的NC不低于0.99。分析表1中数据可知,载体图像在受到攻击后,依然可以有效提取出水印,表明该算法具有强鲁棒性。
由于第2重水印是零水印,对于添加水印信息的载体图像,并不会看出和原始载体图像有何不同,即使攻击者知道数字图像中嵌入了零水印,在不确定秘钥K2,K3的情况下想要提取准确的水印也是相当困难的。
本文算法使用视觉密码对零水印图像加密形成秘密图份,由图6对比可以看出,零水印图像(a)和秘密图份中的图像(b)或图像(c)之间看不出任何联系,所以,即使攻击者获得了秘密图份中的部分图像,也无法复原零水印图像。由以上分析可知,本文算法安全性较高。
表1 待测图像受攻击后提取水印图像的NC值
图6 视觉密码下的安全性分析图像
以Baboon作为测试图像,将本文算法与文献[15,16]进行对比实验,实验结果如表2所示。
表2 本文算法与文献[15,16]算法的NC值对比
在受到剪切攻击时,随着剪切强度加大,本文算法提取水印的NC值优于文献[15],虽不如文献[16]的表现出色,但NC值依然在0.99以上。在受到高斯噪声、JPEG压缩、椒盐噪声、旋转攻击时,本文算法的实验结果普遍优于文献[15]和文献[16]。由上述分析可知,本文算法具有一定的优越性。
本文分析了单一水印算法难以同时满足算法的强鲁棒性和保证数字图像完整性的问题,并且为了进一步提高算法的安全性,提出了一种基于环面自同构映射和BAS的双重水印。第1重认证水印用于检测数字图像的完整性和篡改恢复,第2重零水印用于数字图像版权保护。算法中利用视觉密码对零水印图像进行加密,让算法的安全性得到了进一步的提升。实验结果表明:双重水印在实现算法强鲁棒性的同时保证了数字图像的完整性,其中认证水印对篡改攻击具有较高的敏感性,并且能够很好地恢复被篡改的数字图像;零水印算法部分有效解决了对角线失真问题,在受到噪声、旋转、滤波等攻击时,依然可以准确提取到水印图像。在未来工作中,针对剪切、旋转等几何攻击方面仍需进一步探索。