数字图像盲水印算法与LDPC码的联合方案
2008-06-05
作者:周统和,乔秦宝,谢 亮
摘 要: 针对现有盲水印算法" title="盲水印算法">盲水印算法稳健性差的问题,提出一种新的数字图像盲水印方案。详细介绍了利用LDPC码良好的纠错性能以及改进的盲水印算法,嵌入及提取水印的具体算法,并通过实验验证算法的稳健性和复杂度。
关键词: 数字水印" title="数字水印">数字水印 LDPC码 离散余弦变换
随着现代数字技术的发展,数据媒体的复制和传输越来越广泛。与此同时,版权的保护措施显得相对薄弱。在此情况下,引进数字水印技术" title="数字水印技术">数字水印技术显得至关重要。数字水印技术通过一定算法将水印信息(如公司标志、版权序列号等)嵌入到媒体中,但不影响媒体的使用。数字水印分为明文水印和盲水印。明文水印在检测过程中需要原始数据,具有较强的稳健性,但存储成本较高;盲水印的检测不需要原始数据,存储成本低,较为实用,但其稳健性稍差。
低密度校验LDPC(Low Density Parity Check)码[1,2]是继Turbo码之后的又一性能趋近香农限的优秀码种。实验证明它在多方面具有突出优点:逼近香农限的性能;描述和实现简单;适合硬件实现;在码长较大时LDPC码性能优于Turbo码且译码复杂度更低。
文献[3]提出基于Turbo码的水印算法,利用Turbo码的纠错性能来改善水印传输中的误码率。本文利用性能更优的LDPC码来改善水印传输的误码率,以增强水印的稳健性。
本水印系统的结构框图如图1所示。原始图像采用256×256像素的灰度Lena图像。原始水印采用16×32像素的字母“W”的二值图像(像素值为0或1)。交织采用伪随机交织器。
1 水印的LDPC编码及嵌入
1.1 水印的LDPC编码
一个(n,j,k)的LDPC码由它的校验矩阵H定义。其中n表示码长,j、k分别表示校验矩阵H的每行和每列中含1的个数,其他元素为0。一般,j<k,j<<(n×k)/j,k<<n。
正则LDPC码中的每列(行)的列(行)重相等,若不相等则为非正则LDPC码。LDPC码的H矩阵一般由非系统形式给出。(10,2,5)的H矩阵如下,其Tanner图如图2所示。
LDPC码的校验矩阵的行对应校验方程,即校验位,列对应着传输的位,即信息位。它们之间的关系可以用Tanner图来表示:如果hij=1,则表示第i个校验位和第j个信息位之间存在一条连线。例如上面的正则LDPC码H矩阵对应的Tanner图,由图2所示(上端5个节点对应校验比特,下端10个节点对应信息比特)。
LDPC码的编码过程主要依赖于校验矩阵H的构造,可归纳为下列几个步骤:
(1)生成一个全0矩阵,然后随机在每列插入j个1;
(2)调整行重,尽量使行重保持一致;
(3)调整列中1的位置,使得相邻两列1的位置在行上不重叠;
(4)消除矩阵中的短循环(长度为4的环);
(5)通过高斯" title="高斯">高斯-约旦变换,把H变成系统形式H=[PT,I1],其中I1为M阶的单位矩阵。
求得该H矩阵对应的生成矩阵G=[I2,P],其中I2为N-M阶的单位阵。用信息比特去乘生成矩阵G得到编码后的码字,即完成编码过程。
本算法采用正则LDPC码,码长为32,校验矩阵每列含1的个数j=3,码率r=1/2。将原始水印的二值图像进行伪随机乱序后,作为信息比特输入到LDPC编码器进行码率为1/2的编码,得到的输出结果为32×32的二值矩阵V。
1.2 水印的嵌入算法
本文采用在DCT变换域上嵌入水印。采用盲嵌入方法,并对文献[4]作了改进和简化。具体过程为:
(1)将原始图像I分成8×8像素的子块M8×8(i),分块进行DCT,得到系数矩阵N8×8(i),i=1,2,……1 024;
(2)将二值矩阵V组成长为1 024的序列W(i);同时,生成两个长度为10的伪随机数序列S0、S1;选中N8×8(i)的10个特定的次高频系数C(i,j);对于N8×8(i),更新这10个DCT系数(其中α为嵌入因子):
2 水印的提取及译码
2.1 水印提取过程
采用改进的盲检测算法。过程如下:
2.2 水印的LDPC译码过程
将检测出来的二值矩阵进行LDPC译码。置信传播BP算法,又称和积算法SPA(Sum Product Algorithm),是最普遍的LDPC码译码算法" title="译码算法">译码算法[2]。这种算法的优点是:运算可以完全并行,因此译码速度极高,译码复杂性很低,其运算量不会因为码长增加而急剧增加。本文的译码算法采用BP迭代译码算法。主要包括以下四个步骤:(1)概率初始化:对特定的信道(本文假设为高斯信道)设置信息比特的先验概率。(2)横向步骤:由信息比特的先验概率按照置信传播算法得出各校验比特的后验概率。(3)纵向步骤:由校验比特的后验概率得出信息比特的后验概率。(4)似然值判决:将各信息比特的后验概率的比值取对数得到似然值,根据其符号做出硬判决,得到译码结果,则译码结束;若不满足,则跳转至步骤(2),进行反复迭代,直到满足条件,得出正确的译码结果。如果循环次数达到预先设定值但仍不满足条件,就停止循环,宣告译码失败。
3 实验结果及分析
仿真在Matlab 6.5 平台上进行。LDPC码的码率为1/2,译码最大迭代次数设置为100。嵌入因子α=0.1。实验图像如图3所示。
水印图像的质量用峰值信噪比PSNR进行质量评价。峰值信噪比PSNR为39.51dB时,由图3(c)可以看到,含水印的图像与原始图像的视觉效果无太大差异。因此,本算法具有良好的隐蔽性。
为了验证本算法的稳健性,本文采用了几种信道攻击试验,以考察检测到的水印质量。由于嵌入水印前是否加入LDPC编码对原始图像视觉效果的影响不明显,因此本文重点是针对水印质量在有无LDPC编码的情况下做出比较。
(1)加噪。将高斯噪声和椒盐噪声加到含有水印的图像中,考察噪声对提取出的水印质量的影响。
(2)旋转处理。对含水印图像进行旋转45度进行了试验。
(3)剪切。对含有水印的图像左上角剪切1/4,考察其对水印提取效果的影响。
(4)高通滤波。通过增强图像的高频分量以减小图像的模糊程度,也称为锐化。
(5)JPEG压缩。将含水印的图像进行质量参数为0~100的JPEG有损压缩编码。选定质量参数为10时对提取出的水印效果作比较。
有无LDPC码的抗攻击效果对比如表1所示。从表中的各种攻击实验结果看出,对原始水印采用了LDPC编码之后,提取出的水印质量均有明显的改善。
基于LDPC编码的新型数字图像盲水印方案具有如下优点:(1)与普通水印相比,该方案不依赖原始图像;(2)水印对加噪、旋转、剪切、滤波、JPEG压缩等攻击所表现出的抵抗能力比未加LDPC编码时更强;(3)总体复杂度低。LDPC码的编译码复杂度比同性能的Turbo码低很多,因此该方案具有很强的实用性。
参考文献
1 Gallager R G.Low-density parity-check codes[J].IRE Transactions on Information Theory,1962;(1):21~28
2 Gallager R G.Low-density parity-check codes[A].Cam-bridge,Mass,1963
3 陈心浩,陈军波.基于Turbo码的数字水印技术.电视技术,2003;(8):73~75
4 徐亚哲,金聪.一种新的DCT域盲数字水印嵌入和检测方法.计算机工程与应用,2004;(2):47~49
5 David J C.Good error-correcting codes based on very sparse matrices.IEEE Transactions on Information Theory,1999;45(2):399~431
6 Cox I J著,王颖译.数字水印.北京:电子工业出版社,2003