王玉成,陈青
(上海理工大学光电信息与计算机学院,上海 200093)
目前,随着网络的普及,计算机、智能手机和平板电脑等智能设备的使用率越来越高,人们可以轻松获取自己想要的信息。数字化信息在给人们带来便利的同时,也带来了版权纠纷的问题,数字水印技术的产生为人们解决版权纠纷问题提供了一种可靠的手段[1]。因此,数字水印得到了快速发展,从原先的一代水印发展到了二代水印[2]。数字水印的研究分为空间域[3-4]、变换域[5-7]和特征域[8-9],并且嵌入区域大多是固定不变的,易遭破坏。在面对旋转等几何攻击时,图像像素的位置发生改变,使得水印信息无法有效提取。朱怡馨[10]等利用加速鲁棒特征(Speed Up Robust Features,SURF)和RANSAC算法筛选特征点质量,提高几何校正精度,可以抵抗旋转攻击。齐向明[11]等将水印信息嵌入在对人类视觉掩蔽性好的图像子块中,利用SIFT 特征点对遭到几何攻击后的图像进行校正,恢复水印的同步性,可以有效地抵抗旋转攻击。文献[10-11]虽然能够抵抗旋转攻击,但是当旋转的角度不断增大时,算法的鲁棒性也会变差,并且特征点匹配算法在匹配时需要原图像的参与,增加了空间容量的存储成本。邵东[12]使用SIFT 算法筛选稳定特征点,建立局部不变特征区域,通过bandelet 变换处理鲁棒特征区域,将水印信息嵌入在bandelet 系数当中,可以抵抗几何攻击。
文中设计了基于SIFT 和Radon 变换的盲水印算法,将水印信息嵌入在SIFT 提取的图像自身特征所构造的区域内,利用Radon 变换估计图像旋转角度,对图像进行几何校正,实现水印的盲检测。
Radon 变换[13]是数字图像矩阵在某一指定角度射线方向上做的投影变换,它可以捕捉图像的方向信息。在直角坐标系中,直线方程可以表示为ρ=xcos(θ)+ysin(θ),其中ρ表示直线到坐标原点的距离,θ代表直线l与法线方向的夹角。图像像素矩阵的Radon 变换可以表示为:
式中,α为尺度因子。Radon 变换检测如图1 所示,具体步骤如下:
图1 Radon变换检测
1)利用Radon 变换求出图像旋转角度为0°时的参照向量R(0),将其在信息版权保护中心(IFR)注册。当需要提取水印信息时,只需要与待检测图像进行相关运算,即可求出待检测图像的旋转角度,进而对待检测图像进行几何校正。由于没有原始图像的参与,因此该算法属于盲检测。
2)对图像进行Radon 变换,选择的投影角度θ范围为(0°,359°),步长为1°,则Radon 变换总共执行360 次,得到360 个检测向量R(θ),将其与向量R(0)进行相关运算,计算出相关系数。
3)相关系数表示检测向量与参照向量的相似程度。相关系数越大,表示检测向量与参照向量越相似,系数最大值就为图像的旋转角度。相关系数的计算公式如下:
SIFT(Scale-invariant Feature Transform)算法[14]最早由英属哥伦比亚大学教授Lowe 提出,是一种提取局部特征的算法。算法的主要步骤为:1)检测尺度空间极值点;2)精确定位极值点;3)关键点方向分配。一幅图像I(x,y)尺度空间的定义为:
式中,G(x,y,σ)表示尺度可变高斯函数,见式(4):
式中,σ表示尺度空间因子,*表示卷积运算。
为了在尺度空间中有效地检测出稳健特征点,使用了高斯差分尺度空间,通过不同尺度的高斯差分核和图像进行卷积,如下式:
在得到高斯差分尺度空间后,空间内每个点都与它同尺度内的8 个相邻点和上下相邻尺度内的18个点比较,这样就可以检测到尺度空间内的所有极大值和极小值,从而获取图像的特征点。虽然特征点被提取出来,但这其中包含了一定数量的边缘不稳定特征点,会对水印的嵌入和提取造成一定程度的影响,可通过Hessian 矩阵来消除不稳定特征点。Hessian 矩阵H如下:
Dxx、Dxy、Dyy表示尺度空间的二阶导数。稳定性表示如下:
当某个特征点满足式(7)时,则视其为稳定特征点;若不满足,则视为不稳定特征点,并予以剔除。实验表明,当变量r=10 时,可以得到较好的稳定特征点检测效果。在获得稳定性好的特征点后,再为每个特征点建立特征描述符,这样特征点就具有了旋转不变性、尺度不变性等属性。
小波变换[15]可以把信号变成多尺度的时间-频率表示,具有在时间域和频域都能进行多尺度研究信号局部特征的能力。离散小波变换(DWT)是小波变换的一种,即使信号通过高频和低频两个滤波器,可得到一个低频子带LL 和3 个高频子带LH、HL、HH。低频子带LL 包含了图像的大部分能量信息,而高频子带只含有少部分信息,将水印信息嵌入在低频子带中,可以满足数字水印算法鲁棒性的要求,但会干扰水印算法的不可见性。
奇异值(SVD)分解[16]是在信号处理中有用的工具之一。一幅n×n大小的灰度图像可以看作一个n×n的非负矩阵,假设将一幅图像定义为矩阵A,那么A的奇异值分解如下:
U和V分别表示左奇异值矩阵和右奇异值矩阵,VT表示矩阵的转置。S为对角矩阵,且对角线上的元素由大至小排列。在图像遭到轻微干扰时,奇异值具有较好的稳定性,即奇异值不会发生较大的变化,故水印嵌入在奇异值组成的矩阵中可以抵抗攻击。
水印嵌入步骤如下:
1)将图像大小为N×N的二值水印信息W通过Arnold 置乱操作,得到加密水印信息W′,这样可以提高水印算法的安全性。
2)利用SIFT 算法提取出原始图像的特征点,并结合RANSAC 算法对所有特征点进行筛选,剔除误匹配的特征点,得到稳定性相对好的特征点。
3)在筛选后的特征点中,根据两两之间的距离大小关系,选出距离最大的两个特征点,选择其中一点并根据其在图像中的位置来构造合适的嵌入区域。
4)对嵌入区域h×h分块,对每块进行一级DWT变换,得到子带LL1、HL1、LH1、HH1,再对LL1 进行二级小波变换,提取出二级低频子带LL2。对每块的低频子带LL2 进行SVD 分解,提取每块奇异值矩阵中的第一行一列最大元素,组成矩阵M,再对矩阵M做SVD 变换,得到奇异值对角矩阵C。
5)根据加性方案直接将水印信息嵌入到对角矩阵C当中:
其中,α为嵌入强度,W′(i,j)为加密后的水印信息。
6)由于水印嵌入之后的矩阵C′不是对角矩阵,因此还需对其进行分解,再进行SVD 逆分解、DWT逆变换,得到嵌入水印后的图像。
7)利用Radon 变换求出图像在旋转度数为0。时的参照向量R(0)。
水印提取的步骤如下:
1)利用Radon 变换检测算法求出待检测图像的检测向量R(θ),根据式(2)得到相关系数,并求出图像旋转角度进行几何校正。
2)对几何校正之后的图像同样做SIFT 特征提取,并结合RANSAC 算法剔除误匹配的特征点,得到稳定性好的特征点。
3)在特征点中选取距离最大的两个特征点,根据嵌入时选择的点,得到水印的嵌入区域。
4)得到水印嵌入区域后,重复水印嵌入步骤中的第四步。
5)依据下式提取出加密的水印信息。
6)利用Arnold 逆运算恢复出原始水印信息W。
一般情况下,水印的算法性能通常采用不可见性和鲁棒性两种性能来评价。评价指标为峰值信噪比(PSNR)和归一化相关系数(NC)[17]。峰值信噪比(PSNR)用来评价嵌入水印后的图像质量,即水印的不可见性。PSNR 值越大时表示含有水印的图像越接近原图,原图遭到破坏的程度越小,不可见性就越好。PSNR 的单位为dB,公式为:
其中,D=255 表示灰度图像,M、N为图像大小,I(x,y)、IW(x,y)表示嵌入水印前后的图像。
归一化相关系数(NC)表示提取出的水印图像与原水印图像的相关程度,即用来评价水印的鲁棒性。NC值最大为1,表示提取出的水印图像与原水印图像完全相同。即NC 值越接近1,说明水印算法的鲁棒性越好,提取的水印质量就越高,计算公式为:
其中,w(i,j)为原水印图像,w′(i,j)为提取的水印图像。
文中实验使用Matlab 2016a 作为实验平台,实验采用了512×512 灰度Lena 图像作为原始载体,嵌入强度为0.3,小波基选择haar 小波,水印图像采用带有CUP信息标志32×32大小的二值图像,具体见图2。
图2 实验图像
图3 为水印置乱之后的图像。图4 为嵌入水印之后的图像和提取的水印,从中可以看出嵌入水印后的图像非常接近原始图像,几乎分辨不出差别,同时检测到的PSNR 值为45.589 4 dB,这说明该水印算法具有良好的不可见性。
图3 置乱水印
图4 实验结果
当图像遭到旋转攻击时,图像的像素位置发生改变,水印信息无法有效提取。文中通过Radon 变换检测算法求出待检测图像的待检测向量R(θ),并将其与参考向量R(0)进行相关计算,确定待检测图像的旋转角度,并对图像进行几何校正,在校正完成之后再进行水印信息的提取[18]。将水印信息嵌入原始图像后,分别旋转5°、20°、50°、70°、130°来测试水印算法的性能。对遭到旋转攻击的图像做几何校正之后,再利用SIFT 提取图像特征找到水印的嵌入区域,则可以很容易提取水印信息。由表1 可知,提取的水印NC 值均在0.96 之上,说明该算法有很好的抗旋转攻击性能。图5 为不同旋转攻击后提取出的水印。
表1 旋转攻击测试
图5 不同旋转攻击后的水印图像
为了进一步验证算法的鲁棒性,对含水印信息的Lena 图像进行剪切1/8、均值滤波、JPEG 压缩、中值滤波等攻击,提取水印信息。由于将水印嵌入在将图像分块的奇异值矩阵当中,因此图像在被处理后,分块奇异值组成的矩阵变化较小,并且使用SIFT 算法稳定提取图像特征可以有效提取出水印信息。由表2 可以看出,提取的水印图像清晰可辨,水印的NC 值也均在0.96 之上,说明该水印算法也有较好的鲁棒性。但在高斯噪声等其他攻击下,由于SIFT 未能有效提取特征点,导致在错误的区域提取水印,水印信息无法有效提取。图6 为在表2 中不同攻击下提取的水印图像。
图6 不同攻击的水印图像
表2 常规攻击测试
文中以SIFT 特征提取和Radon 变换为基础,结合DWT、SVD 分解等,提出一种水印嵌入域可变的抗旋转盲水印算法。由于每个图像的自身特征不同,所以水印嵌入区域也不同,可以提高水印的安全性。水印提取过程无需原图像参与,实现了水印的盲提取。实验结果表明,该水印算法具有良好的不可见性和较强的抵抗旋转能力,在面对一些常规信号处理时也能表现出鲁棒性,具有一定的实用价值。