孔凡芝 李金龙 吴冬梅
1(浙江传媒学院电子信息学院 浙江 杭州 310018)2(曲阜师范大学物理工程学院 山东 曲阜 273165)
数字水印技术是一种图像、视频版权保护的有效方法[1]。水印的嵌入需要满足以下两个条件:首先不能明显影响原始图像的清晰度;其次水印应具有隐蔽性和抗攻击能力[2]。目前,针对数字视频的攻击主要有时间攻击(如丢帧、插帧和帧率改变等)和几何攻击(如旋转、裁剪和缩放等)[3]。
根据水印的嵌入位置,水印技术可分为空间域和变换域技术[4]。变换域方法是通过一些数字变换,将水印添加到图像的某个重要区域,具有高安全性。具有代表性的变换域技术有离散余弦变换(DCT)[5]、离散傅里叶变换(DFT)[6]和离散小波变换(DWT)[7]。其中,DCT具有较好的能量压缩能力和去相关性,应用较为成熟。而DWT具有的多分辩率特性,可以把图像分解为多个不同频带的子图,方便结合人眼视觉特征设计水印[8]。那么,可将DCT和DWT的优点相结合,对图像进行DWT后再执行DCT,有助于进一步降低相邻小波系数的相关性,且可进一步对能量进行压缩。为此,学者也提出了一些基于DCT和DWT的水印方法。例如,文献[9]提出了一种基于DWT-DCT的水印方法,利用了一种相似性结构指数度量来评估由水印引起的失真。文献[10]在DWT-DCT水印方法的基础上引入了遗传算法来确定最优参数,以此获得更好的水印质量和对信号处理攻击的鲁棒性。文献[11]融入了奇异值分解(Singular Value Decomposition,SVD)技术,将所选块转换为DWT域,并在LL1子带上应用SVD,还利用萤火虫算法(Firefly)对水印比特的嵌入过程进行了优化,使水印具有更好的不可感知性。另外,文献[12]为了提高水印的鲁棒性,采用了相关性较小的YCbCr颜色空间,并在此空间上进行DWT来嵌入水印。
Zernike矩[13]是一种理想的图像特征描述符,从Zernike矩的相位信息中可以获得图像的旋转角度,所以其具有旋转不变性且对噪声不敏感,能够很好地抵抗几何攻击,在图像处理领域有着广泛的应用。
结合上述分析,本文提出了一种新的图像水印方案。将图像转换到YCbCr(亮度,色度-蓝,色度-红)颜色空间,将亮度分量作为目标嵌入区域。在水印嵌入过程中结合了DWT-DCT和Zernike矩。该研究的主要创新点总结如下:
(1) 利用DWT-DCT可有效提高水印的不可感知性和对常规攻击的鲁棒性,利用Zernike矩作为图像特征描述符,可以很好地抵抗几何攻击;
(2) 提出的方案将水印嵌入区域分成多个子块,通过伪随机方法选择一些子块来嵌入水印。在水印提取过程中,则需要掌握正确的伪随机密钥才能提取出水印,从而提高了水印的安全性。
实验结果表明,本文提出的水印方案具有很好的隐蔽性,且对常见攻击具有很好的鲁棒性。
DWT是对连续小波变换的尺度进行离散化得到,在不同尺度上对信号进行分解,分解成一个低频部分和多个高频部分。低频部分蕴含着信号特征,高频成分则能反映信号的细节差别。例如,图像经过一级小波分解后,可以形成逼近子图(LL)、水平方向子图(HL)、垂直方向子图(LH)和对角方向子图(HH),如图1所示。其中,LL为低频部分,其他3个为高频细节部分。
图1 DWT分解子图
DCT可以将图像从像素空间转换到频率空间,从而挖掘出相似图像中的不同特征[14]。本文对经过一级DWT后的视频帧亮度分量的LL子带进行DCT。
一维DCT定义为:
(1)
式中:u=0,1,2,…,N-1。其逆变换定义为:
(2)
式中:x=0,1,2,…,N-1。且:
(3)
因此,当u=0时,式(1)可简化为:
(4)
由式(4)可知,第一变换系数是样本序列的平均值,称为直流(DC)系数,其他变换系数称为交流(AC)系数。二维DCT是一维DCT的扩展,表达式为:
(5)
式中:u,v=0,1,2,…,N-1;α(u)、α(v)由式(3)定义。其逆变换定义如下:
(6)
式中:x,y=0,1,2,…,N-1。
在信源为视频的情况下,时间冗余度被充分利用以提供更高的压缩率。因此,连续帧的相邻象素具有非常高的相关性。利用这种相关性,可以通过其邻近像素来预测当前像素值。此外,大多数的图像和视频数据在DCT压缩后仍然可用。因此该方案具有较好的实时性。
Zernike矩是使用一组复多项式集构成的正交化函数,该多项式集为一个在单位圆(x2+y2)≤1上的完备正交化集[15],多项式定义为:
Amn(x,y)=Amn(r,θ)=Rmn(r)ejnθ
(7)
(8)
式中:
(9)
基于式(7)-式(9),m、n和图像f(x,y)的关系可以表示为:
(10)
式中:(x2+y2)≤1;Amn(x,y)*表示Amn(x,y)的复共轭。
为了计算Zernike矩,图像首先被映射到极坐标上的单位圆中,图像的中心为单位圆的原点,落在单位圆外的像素将不使用。
(11)
(12)
在本文提出的水印方案中,水印信息被嵌入到视频的每一帧中,使其能够应对丢帧和插帧攻击。水印嵌入的过程如图2所示。
图2 水印嵌入过程
本文方案选择了YCbCr(亮度,色度-蓝,色度-红)颜色空间,而不是常见的RGB(红,绿,蓝)颜色空间,将YCbCr空间的亮度分量作为目标嵌入区域。这样选择的原因如下:RGB空间描述法具有最相关的分量,而YCbCr颜色空间分量为最不相关的分量[16]。具有相关性的RGB分量不适合嵌入水印。在RGB空间中,感知到的视频帧颜色质量取决于所有分量。因此,将水印嵌入其中某一个RGB分量并不是最好的选择。另一方面,YCbCr允许提取不相关的分量,并且可以将图像的消色差部分从彩色部分中分离。为了实现较高的鲁棒性和较大的嵌入容量,所提出的方案使用了彩色图像最小相关的YCbCr空间。
由于图像压缩时不会对亮度分量进行下采样,压缩过程中的亮度分量损失小于色度分量,所以提出的方案将水印嵌入到亮度分量中,使其可以被更好地检测出来,以获得抗压缩鲁棒性。
选择一个大小为M×N的二进制标识作为水印标识,原始二进制标识的每一位非“0”即“1”。但本文需要一个非零序列,为此将所有的“0”全部转换为“-1”即可。
为了使水印对旋转攻击具有鲁棒性,亮度块的中心被选择为中心。将大小为P×P的正方形区域作为嵌入区,这一区域也是计算Zernike矩时单位圆的位置。区域尺寸P×P为8×8的倍数,这是因为提出的方案使用8×8的块来嵌入一个水印bit。
为了使该水印具有高安全性,利用一个伪随机数(Pseudo Random Number,PRN)来选择8×8的嵌入块,也用来保证连续帧中具有不同的嵌入块。这里,利用用户定义的密钥作为置换向量,用作PRN发生器的输入。在提取水印时,需要使用和嵌入水印时相同的置换向量来生成PRN。
为了平衡水印隐蔽性和鲁棒性之间的矛盾,整个水印被拆分成8×8的bit,并分别嵌入到一组帧中。组中帧的数量取决于水印标识的尺寸。
水印嵌入过程描述如下:
步骤1从原始视频中提取每一帧。
步骤2根据式(13)将提取的帧从RGB转换至YCbCr颜色空间。
(13)
步骤3在每个亮度分量的中心区域选择一个P×P的方块区域作为目标嵌入区。将P×P的块划分成大小为8×8的非重叠子块。由于水印处于一帧的中心区域,使其具有抗剪裁攻击的能力。
步骤4伪随机地选择Q个用来插入水印信息的不同8×8子块。
步骤5在每个选定的8×8子块上执行DWT,然后在获得LL子图上执行二维DCT。
步骤6针对每个DCT系数8×8块,伪随机地选择前n个AC分量。这些AC分量用来嵌入水印的1 bit。AC分量的调整根据如下的规则来完成:
if (W(k)==1)
do {
if (mod(C(i,j),δ)≤α)
Cw(i,j)=C(i,j)-mod(C(i,i),δ)-α
else
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+γ
endif
} until ‘n’ number of AC coefficients are considered.
elseif (W(k)==-1)
do{
if (mod(C(i,j),δ)≥γ)
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+ε
else
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+α
endif
}until ‘n’ numbers of AC coefficients are considered.
endif
其中:W(k)为要被嵌入的水印位;C(i,j)为原始的AC分量;Cw(i,j)为加水印后的AC分量。函数mod(C(i,j),δ)为C(i,j)和δ的余数。这里,α、β、γ、ε和δ为嵌入强度,其中,β=2α,γ=3α,δ=4α,ε=5α。这些值是基于大量实验获得的,使得该水印视频的保真度和鲁棒性是都在可接受的范围。
步骤7计算特定m、n处的Zernike矩Zm,n,并保存这些值,用于校正几何攻击。
步骤8重复步骤1-步骤6,直到所有的视频帧都被嵌入水印。
步骤9根据式(14)将所有帧从YCbCr转换至RGB彩色空间,并将所有帧合并构建水印视频。
(14)
水印提取是水印嵌入的逆过程,如图3所示。水印提取过程不需要原始图像和被嵌入的水印。但由于水印bit被嵌入到伪随机选择的8×8子块中来增强安全性,所以必须知道PRN发生器的输入密钥,以确定嵌入块的位置。
图3 水印提取过程
水印提取过程描述如下:
步骤1从水印视频中提取每一帧。
步骤2将提取的帧从RGB转换至YCbCr彩色空间。
步骤4在每个亮度分量的中心区域选择一个P×P的方块区域作为嵌入区。然后将该方块分割成大小为8×8的非重叠的子块。
步骤5使用与水印嵌入时相同的密钥输入到伪随机数(PRN)生成器,找到嵌入水印的8×8子块的位置。
步骤6在每个选定的8×8子块执行DWT-DCT。
步骤7选择出与压缩时相同的n个AC分量,并根据如下规则检测水印bit:
do {
if(mod(Cw(i,j),δ)>β)
Wblock(b)=1
else
Wblock(b)=-1
endif
} until ‘n’ numbers of AC coefficients are considered.
其中:1≤b≤n;Wblock(b)为提取的水印bit;Cw(i,j)为有水印的AC分量。最终根据Wblock(b)中1和-1出现的较多的一方,来获得8×8子块的水印bitW(k)。
步骤8重复步骤2-步骤7,直到所有的水印bit都被提取。
在MATLAB 2014b中实现提出的算法。实验中使用3个AVI格式的标准视频,分别为“Coastguard”、“foreman”和“football”,每个视频中使用150帧。设定二进制标识的大小为50×25像素,亮度分量中的方形水印嵌入区的尺寸为176×176像素。在嵌入过程第4步中涉及的Q值是根据水印尺寸计算的,在本次实验中,该值为50。在嵌入过程第6步中提到的全局常数(α)的值为13。
采用峰值信噪比(PSNR)和平均结构相似性指数度量(MSSIM)来衡量嵌入水印后视频帧的失真度[17];采用相对熵距离(Kullback-Leibler距离)作为安全性度量(ε)[18]。较高的PSNR、MSSIM表明嵌入水印对原始图像的影响较小,具有较好的隐蔽性,而较低的ε量值则表明水印信息的安全性较好。PSNR被定义为:
(15)
式中:MAX为视频帧中最大可能的像素值。均方误差(MSE)定义为:
(16)
式中:X为原始视频帧的系数;X′为水印视频帧的系数。M和N分别为视频帧的高度和宽度。
MSSIM定义如下:
(17)
式中:
(18)
分别用随机变量R和S表示原始视频帧和水印视频帧。Kullback Leibler距离D(p‖q)定义为:
(19)
式中:p(x)和q(x)分别表示随机变量R和S的概率分布函数。符号Ep表示联合分布p的期望。D(p‖q)值总是非负的,当且仅当p(X)=q(X)时该值为0。若D(P‖q)≤ε,则将ε设定为安全值。
(20)
图4展示了三个标准视频帧中,原始视频帧和加水印后的视频帧。可以看出,水印视频帧与原始视频帧几乎没有差别,说明了提出的水印嵌入方法具有很好的隐蔽性。表1列出了嵌入水印后视频帧的PSNR、MSSIM和ε值。实验数据表明,通过提出的水印嵌入算法获得的水印视频帧具有高保真度和高安全性。
(a) Coastguard视频第35帧图像
(b) foreman视频第36帧图像
(c) football视频第22帧图像图4 原始视频帧和水印视频帧
表1 各水印视频帧的PSNR、MSSIM和ε数据
图5显示了水印提取结果,其中:(a)为原始水印图像;(b)为从水印视频帧中提取的水印,可以看出与原始水印基本一致;(c)为在没有正确密钥的情况下提取的水印,类似于白噪声,这证明了提出的方案对密钥敏感,进一步证明了安全性。
(a) 原始水印图像 (b) 从水印视频帧中提取的水印图像,NCC=1 (c) 使用错误密钥提取的水印图5 水印提取结果
将本文方法与文献[10-12]方法的性能进行比较。文献[10]采用了经典的DWT-DCT水印方法;文献[11]采用了较新且有效的DWT-SVD的方法,而且都通过智能算法对其进行了优化;文献[12]采用了与本文相同的YCbCr颜色空间。三种方法都具有可比性。
实验结果数据如表2所示,每个数据是在3种视频帧中实验结果的平均值。可以看出,本文方案具有较高的PSNR和MSSIM值,证明了其在隐蔽性和安全性方面具有明显的优势。另外,几种较新的对比方法也获得了不错的性能,这是因为它们都对经典方法进行了改进。然而,文献[10]和文献[11]分别采用的遗传算法和萤火虫算法需要迭代学习,为此嵌入水印的时间较长,实时性不是很理想。
表2 各种方法的水印嵌入性能对比
为了评估本文方案对图像攻击的鲁棒性,对水印图像进行了一些信号处理操作来模拟各类攻击。表3-表6分别给出了本文方案在“Coastguard”、“foreman”和“football”三个视频上,针对丢帧攻击、插帧攻击、帧剪裁攻击和旋转攻击的鲁棒性实验数据。
表3 对丢帧攻击的鲁棒性
表4 对插帧攻击的鲁棒性
表5 对帧剪裁攻击的鲁棒性
表6 对旋转攻击的鲁棒性
实验结果可以看出,随着丢帧率、插帧率、剪裁比例和旋转角度的增加,一定程度上会影响水印方案的鲁棒性,但本文方案在三个视频上都具有较高的NCC值。针对丢帧、插帧、裁剪和旋转攻击的平均NCC值分别达到了0.974、0.972、0.984和0.989。正是由于本文方案采用了具有旋转不变性的Zernike矩,所以对于旋转攻击的效果很好。另外,由于本文方案在视频中的每个帧中都嵌入了水印,所以能够抵抗丢帧和插帧攻击。这些实验结果说明了本文方案能够抵抗丢帧、插帧、裁剪和旋转攻击。
为了进一步证明本文方法的有效性,将其与文献[10]和文献[11]提出的水印方案进行比较。在三个视频中进行帧缩放、平移和旋转攻击鲁棒性的分析实验,结果如表7所示,其中数据为三个视频实验的平均值。可以看出,本文方案在缩放、平移和旋转攻击方面具有更好的鲁棒性。这是由于采用了YCbCr颜色空间、DWT-DCT和Zernike矩的结果。
表7 对缩放、平移和旋转攻击的鲁棒性
为了提高视频帧中的水印性能,本文提出了一种基于DWT-DCT和Zernike矩视频水印技术。通过将视频帧转换到YCbCr颜色空间来去相关性,利用伪随机法和DWT-DCT来构建水印嵌入的合适区域,并使用Zernike矩的旋转不变性来抵抗针对水印图像的几何攻击。在3个视频序列上的实验结果表明,本文方案所嵌入的水印具有很好的不可感知性,且能够很好地抵抗常见的时间和几何攻击,具有较高的实用价值。