基于Turbo码与HVS的扩频数字图像水印算法
2013-12-17虞晓庆
张 茂,虞晓庆
(1.武警工程大学研究生管理大队,陕西西安 710086;2.武警工程大学基础部,陕西西安 710086)
众所周知,数字水印(Digital Watermarking)的出现,为网络传输中信息安全和版权保护问题提供了新的思路:即向待保护内容中嵌入版权信息,而这些信息通常是不可见而且可以抵挡一定的攻击,不影响原数据的视听效果,并且这些数字信息仅允许授权用户可以部分或全部从混合数据中恢复出来,以达到版权保护的作用[1-3]。到目前为止,大部分水印研究都集中在图像研究上,其原因在于图像是最基本的多媒体数据,且互联网的发展为图像水印技术提供了大量的应用需求。
近年来,为提高水印信息在图像传输中的抗干扰性,许多研究者引入了扩频技术。利用扩频原理有两点优势:一是可以将水印的能量谱扩展并分布到一个较宽的频段中,从而分配到每个频率上的水印信号能量变得较小难以预测;另一方面,只要水印信号的能量足够小,加入到载体图像中就不容易被察觉到。其中,Turbo 码以其自身优异纠错性能[4-5],引起了广泛关注。
因此,文中使用混沌序列和m序列共同置乱水印,再将水印信息进行Turbo扩频编码,同时为兼顾水印的鲁棒性和不可见性,在水印嵌入时应用人眼视觉特性的纹理特征,将水印信息嵌入在纹理特征较好的图像区域内。该方法有效提高了水印的鲁棒性,仿真实验表明其具有一定的可行性。
1 基于纹理分块的水印嵌入方法
基于前面的介绍,可知文中算法结合混沌序列与m序列、Turbo编码、人眼视觉特性等有关技术实现,包括扩频水印生成、水印嵌入和水印提取与检测3个部分。
1.1 扩频水印的生成
生成扩频水印主要包含两个步骤:(1)是将水印信息置乱;(2)是将置乱后的水印信息进行Turbo编码。置乱水印信息一般通过混沌序列实现,但如果可以通过某种方式获知混沌序列的密钥,就可以解密有关内容,算法的初始密钥就失去了意义。鉴于此,在水印置乱过程中采用m序列和混沌序列相结合的方法,避免上述情况发生,提高水印的安全性[6]。如图1所示,可具体分为
(1)选择一维Logistic映射生成长度为n'n的混沌序列,将其进行二值处理后,转换成只含0和1的序列ak(k=n'n),保存密钥key1,包括初值x0和参数q。
(2)取2k级本原多项式f(x)作为m序列产生器的特征方程,其中 N满足2k-1<N£2k,则水印信息I(x,y)的水平坐标x和垂直坐标y可分别用前k个和后k个移位寄存器的状态来表示,其对应关系如式(1)所示
式中,r表示m序列由第0时刻开始的移位次数;rÎ{0,1,…,2k-1};ak-i,r和 ak-j,r表示前 k 个和后 k 个移位寄存器在r的状态。
(3)将 I(x,y)的第1个像素点映射到 I(x',y')的任意一点(x'0,y'0),其中,x'0,y'0Î[0,1,…,N -1],x'0和y'0分别对应前k个和后k个移位寄存器的状态,m序列移位一次,并由移位寄存器状态用式(1)计算x1和y1,将 I(x,y)的第 2 个像素点映射到 I(x',y')的点(x'1,y'1),依次类推,直至 I(x,y)的所有像素点都映射到I(x',y')的对应点,这里获取密钥key2;
(4)将I(x',y')降至为一维序列 Ik,与序列 ak进行异或运算生成序列bk。
(5)将序列bk作为输入,进行Turbo编码得到二值序列 Cn,cnÎ{-1,1};相应的进行处理,得到扩频水印 wn,wÎ{0,1}。
图1 扩频水印生成图
1.2 水印嵌入
水印嵌入过程如图2所示,具体步骤如下:
(1)将载体图像均匀的划分成4'4个子块,每一子块从0开始标号,根据式(2)和式(3)计算每一子块的熵值和方差
式中,pi为像素出现的概率;q代表灰度的种类;n是图像块中像素的个数;f(x,y)是图像块中像素点的灰度值;f是图像块的平均灰度。
(2)根据人眼视觉系统可知,熵值较小的图像子块是平滑块,而熵值较大的图像子块是纹理块或边缘块;纹理子块对应的方差较小,边缘子块对应的方差较大。选取熵值较大且方差较小的6个纹理子块Ul作为水印的待嵌区域。
(3)将6个纹理子块依次进行三级小波分解,为兼顾鲁棒性和不可见性,选定各个子块中频区域的小波系数作为水印嵌入位置。
(5)通过小波重构恢复为子块图像,即可得到含水印的载体图像。
图2 水印嵌入过程图
1.3 水印提取与检测
水印提取是嵌入的逆过程,具体步骤如下:
(1)将载体图像均匀分割4'4为个子图像,按记录的标号选择相应的含水印的子图像Ul。
(2)通过密钥Key1和Key2获取相关信息。
(3)对子图像Ul进行三级小波变换,选择其中频的小波系数Yij,根据记录的均值恢复水印序列wn
(4)依据序列cn,应用最大后验概率(MAP)的对数形式Log-MAP的软输出译码,获取序列bk。
(5)先将序列bk与序列ak进行逆异或运算,再将上述结果转换成二维,应用密钥Key2对其进行m序列逆置乱,即可得到水印信息I(x,y)。
2 实验仿真
实验中使用Matlab7.6对文中算法进行仿真,采用512×512像素的“wbrab”作为载体图像,如图3(a)所示,水印图像选用32×32像素的二值图像,如图3(c)所示;混沌序列x0=0.65、u=3.9,m序列中初始状态为1 000 000 000,k=5,r=1;Turbo编码率为1/3,译码采用了最大后验概率(MAP)的对数形式Log-MAP的软输出译码,译码迭代次数为6次,嵌入水印后的图像如图3(b)所示,峰值信噪比PSNR=40.65,无攻击情况下提取的水印图像如图3(d)所示,其NC值=1,与文献[5]相比可知,文中算法具有较好的鲁棒性和不可见性。
图3 原始载体图像、水印和嵌入水印的图像、提取的水印
表1表示分别对图3(b)进行剪切攻击、JPEG攻击、噪声攻击、滤波攻击操作后,提取相应的水印信息,并将其与未使用Turbo编码的算法和文献[5]进行对比。
?
从表1中可以看出,该算法可以提高水印信息的抗干扰能力。与文献[5]相比,对常见的攻击操作具有较好的抵抗性,同时也兼顾了不可见性。
?
3 结束语
文中依据纠错编码原理、人眼视觉系统、m序列置乱等理论,提出了一种新的基于Turbo和HVS的扩频的数字图像水印算法,该算法弥补了可混沌置乱的不足,提高了水印在传输过程中抗干扰能力,同时结合人眼视觉特性确定图像的纹理区,将水印信息嵌入在纹理区小波分解后的中频系数中。实验仿真证明,该算法对常见攻击具有较好的鲁棒性和一定的可行性。
[1]TIRKEL A Z,RANKIN G A,VAN SCHYNDEL R M,et al.Electronic watermark[C].IEEE Communications,1993,140(1):66-72.
[2]TANAKA K,NAKAMURA Y,MATSUI K.Embedding secret information into a dithered multilevel image[J].Technology and Society Magazine,1990,9(1):216 -220.
[3]考克斯,王颖,黄志蓓.数字水印[M].北京:电子工业出版社,2003.
[4]肖扬.Turbo与LDPC编解码及其应用[M].北京:人民邮电出版社,2010.
[5]马晓蕾,李宏昌.基于Logistic混沌序列和Turbo码的多重图像水印[J].计算机工程与应用,2009,45(31):172-174.