包展恺 王中训 孟令增
(烟台大学光电信息科学技术学院 山东 烟台 264005)
由于互联网的开放性,使得人们可以轻松地在网上获取一些图片、音频和视频等。但是,更加开放的环境也会带来更大的版权保护问题[1]。尤其是在互联网飞速发展的今天,对于知识产权的侵犯严重损害到了产权所有者的直接利益。所以,为了解决侵权问题所带来的困扰,人们提出了数字水印技术[2]。水印信息是一种用于保护版权和身份验证的安全特征,它作为一种信息被秘密嵌入图像、音频和视频等对象中,然后在接收端进行提取,以此来证明真正所有者的身份。
通常来讲,数字水印技术的主要特征包括鲁棒性(常见)、不可感知性和容量。根据数字水印技术的鲁棒性可以将水印分为鲁棒性水印和脆弱性水印,鲁棒性水印要求水印信息经过信号处理(噪声、剪切攻击等)后仍然能提取出清晰可见的水印信息[3],脆弱性水印主要是用于验证在信息传递的过程中是否受到了篡改[4],本文主要研究的是鲁棒性水印。根据水印信息的加载位置,可以将数字水印技术分为空间域水印和变换域水印。空间域水印效率高,但是鲁棒性差,在信息的传递过程中容易丢失大量的水印信息;变换域水印将载体信息进行频域变换,然后把水印信息嵌入至某个频域系数上[5]。相较于空间域水印,变换域水印具有更好的鲁棒性,本文主要使用的是基于离散余弦变换(Discrete Cosine Transform,DCT)的数字水印技术。
针对数字水印技术鲁棒性的特点,本文将低密度校验码LDPC码与数字水印技术结合,在将水印信息嵌入到载体图像之前对水印信息进行LDPC编码处理,运用LDPC码的良好的纠错性能,来实现LDPC码在数字水印技术中的应用。
LDPC码是一种线性分组码,Gallager[6]在论文中系统地论证了LDPC码良好的纠错性能。LDPC码是一种具有很强纠错能力的信道编码,在压缩图像的传输中,LDPC码可明显改善重建图像的质量。现有的研究中,使用LDPC码对水印信息进行编码,再进行BPSK调制后结合扩频生成新的水印序列,实验结果表明通过该算法得到的水印具有较好的鲁棒性和不可见性[7]。
数字水印技术一般包括水印信息的生成、嵌入和提取三个方面。算法流程如图1所示。
图1 数字水印算法流程
根据水印信息嵌入的域,数字水印技术可以分为空间域技术和变换域技术。一般来说,基于变换域的数字水印在抗攻击性方面的性能由于基于空间域的数字水印。在变化域数字水印算法中,先对载体图像进行某种特定的变换,如离散余弦变换、小波变换(Discrete Wavelet Transformation,DWT)、离散傅里叶变换(Discrete Fourier Transform,DFT)等,再将水印信息根据一定的规则嵌入到载体的某个频带或者某些频带中。通常来说,载体的低频信息反映了载体的主要轮廓,若把水印信息嵌入至低频信息中将极大地影响水印信息的不可见性;而载体的高频信息是人类视觉系统(Human Visual System,HVS)不敏感的信息,把水印信息嵌入将会有很好的不可见性,但是,高频段通常会被压缩技术所剔除,鲁棒性差。所以,将水印信息嵌入到中频系数中是较好的选择。本文采用基于DCT的数字水印技术,水印嵌入过程如图2所示。
图2 水印的嵌入过程
将水印信息嵌入到DC系数的一般算法如下。
(1) 将载体图片分为8×8像素的互不覆盖的像素块。
(2) 对每一个像素块分别进行DCT变换。
(3) 将经过DCT变换后像素块的中频系数与水印信息做如下计算:
x′ij=xij(1+αmi)
(1)
式中:xij(i,j=[0,1,…,8])为所选择的DCT系数;mi为第i个水印信息;x′ij为隐藏后的DCT系数;α为嵌入强度系数。
(4) 将嵌入水印后的像素块进行DCT反变换,再把像素块按原来的顺序组合起来,即得到嵌入水印后的图像。
为了提高数字水印的鲁棒性与不相关性,我们将LDPC码编译码算法引入数字水印技术中,在水印信息嵌入载体图像之前,对水印信息使用LDPC码进行编码,并在提取出嵌入的信息后再进行解码[8],算法流程如图3所示。
图3 基于LDPC码的数字水印技术
与传统的数字水印技术不同的是,基于LDPC码的数字水印技术在水印信息嵌入载体图像之前,先使用LDPC码对水印信息进行纠错编码,之后再嵌入至载体图像中,最后利用LDPC译码算法对提取出的水印信息进行译码,进一步提升水印信息的鲁棒性[9]。
在已有的基于LDPC码的数字水印技术中,译码算法方面通常采用的是对数似然比置信传播(Log-Iikelihood Ratio Belief Propagation,LLR-BP)译码算法。但由于用于对水印信息编码的LDPC码码长通常较短,LDPC码字就很容易出现短的围长,使得LLR-BP译码算法有时不能得到有效的收敛。短围长(girth)的存在加重了振荡迭代现象对于LDPC码译码算法性能的不良影响,针对LLR-BP译码算法中由于短围长引起的译码不收敛的问题,我们对LLR-BP译码算法进行改进。
LDPC码由一个非常稀疏的校验矩阵H定义,稀疏是指该矩阵的行和列均由大量的0和少量的1构成。可以通过坦纳图表示这种稀疏校验矩阵,例如当校验矩阵H由式(2)所示,那么与该校验矩阵H对应的坦纳图如4所示。
(2)
图4 校验矩阵H对应的坦纳图
图4中的变量节点和校验节点分别对应校验矩阵中的列和行,当校验矩阵H中的元素为1时,则该元素所在的第m行和第n列所对应的第m个校验节点和第n个变量节点之间通过一条连接线连接。
LLR-BP译码算法是一种优秀的迭代译码算法,若校验矩阵对应的坦纳图上无环,LLR-BP译码算法可以实现最大后验概率译码[10]。下面我们将对LLR-BP译码算法进行简要概述。
初始化:
(3)
式中:σ2为信道噪声。
迭代处理:
步骤1校验节点更新。
(4)
步骤2变量节点更新。
(5)
(6)
判决:
当LDPC码校验矩阵对应的坦纳图无环并且信道噪声较低时,译码器会收敛至一个有效的码字。由文献[11]可知,译码过程中出现的三种误差分别是:收敛到错误的码字、收敛至局部最大值、值不收敛于平衡点[12]。文献[13]指出,LLR值不收敛于平衡点,这可能是由于通过某个节点的两个甚至是多个周期造成的,当在周期中循环的消息在某一时刻发生改变(由正变负或者由负变正),就说明该节点的LLR值是振荡的[14]。即低可靠度的节点得到的信息通过环在节点之间不断循环,削弱了其他节点信息的可靠性,即使继续增加迭代次数,也不会使得LLR的值收敛,这种错误在LDPC码拥有短环的情况下尤其严重。
由以上结论,得出振荡的表达式如式(7)和式(8)所示。
(7)
(8)
图5给出了LDPC码在LLR-BP译码算法过程中发生振荡的信息比特数目与产生错误的信息比特数目的关系。
图5 发生振荡的信息比特数目与产生 错误的信息比特数目的关系
其中LDPC码的码长为512,码率为1/2,SNR为2.5 dB 。由图5可知,产生错误的比特数目与发生振荡的比特数目成正比。并且,产生错误的比特数目并没有随着迭代的增加而减少,说明增加迭代并不能解决振荡产生的不收敛问题。
当在译码算法中发生振荡时,比特的符号会发生变化,但符号的变化不是连续的,而是随机的,因此,我们无法判定前后哪次的结果是正确的[15]。为减少振荡效应产生的不利影响,本文对迭代前后的信息进行加权处理,从而减少低可靠度节点产生的错误信息对于译码算法的负面影响。具体算法如下:
初始化:
(9)
式中:σ2为信道噪声。
迭代处理:
步骤1校验节点更新。
(10)
步骤2变量节点更新。
(11)
(12)
(13)
与传统LLR-BP译码算法的区别在于式(12),我们比较当前迭代中LLR的符号与前一次迭代中LLR的符号是否相同,若二者符号发生改变,我们判定发生了振荡并对二者进行加权处理,得到一个接近二者的值以减小振荡迭代对译码算法带来的不利影响。
对LLR-BP译码算法与针对振荡迭代改进后的LLR-BP译码算法的比较结果如图6所示。
图6 LLR-BP译码算法与改进后的LLR-BP译码 算法在相同信噪比下误码率的比较
其中,校验矩阵的构造方式为利用Mackay的构造法1A构造校验矩阵,码长为512,码率为1/2,迭代系数为20,加权系数为α=0.5。
在现有的基于LDPC码的数字水印技术中,由于BP译码算法的优越性,在译码算法方面多采用LLR-BP译码算法[16]。但是用于数字水印编码的码字较短,容易有短环的出现,所以在传统的LLR-BP译码算法的基础上,增加计算复杂度以提高译码算法性能。计算量的增加意味着更长的计算时间,但由于数字水印技术对于即时性要求不高的特点,计算时间的增加对于数字水印技术性能的影响可以忽略不计,所以改进后的译码算法相比于传统的LLR-BP译码算法更适用于数字水印技术。
下面将分别基于两种译码算法对其相应的数字水印技术进行实验测试。
实验采用256×256像素的图片作为载体,16×32像素的图片作为水印信息,水印嵌入算法为基于DCT的数字水印算法,将载体图片分为32×32个8×8的像素块,将水印信息嵌入像素块的中频DC系数中,LDPC码编码方式为Mackay的构造法1A构造校验矩阵。
由图7可知,数字水印技术在加入改进后的LDPC译码算法之后,能够完整地将水印信息提取出来,验证了算法的可行性。
图7 基于改进的LLR-BP译码算法 的数字水印技术
对基于LLR-BP算法的数字水印技术和基于改进的译码算法的水印技术进行攻击测试,实验结果如表1所示。
表1 加入高斯白噪声后的误码率
可以看出,改进的译码算法在相同程度高斯白噪声的影响下,误码率等于或低于基于LLR-BP译码算法的数字水印技术,鲁棒性优于基于LLR-BP译码算法的数字水印技术。
一般而言,用于数字水印技术中进行编码的LDPC码较短。而在译码过程中,较短的码长就意味着更容易出现短环,短环的存在加剧了振荡问题对译码算法的不利影响。本文针对以上问题,在LLR-BP译码算法的基础上,对其中变量节点的更新过程进行加权处理,以减小振荡问题对译码算法的影响。实验表明,改进的译码算法在相同信噪比的情况下,误码率低于LLR-BP译码算法,并提高了数字水印算法的鲁棒性。