一种基于整数变换的数据隐藏新算法
扫描二维码
随时随地手机看文章
信息隐藏就是利用人类感觉器官的不敏感性感觉冗余,以及多媒体数字信号本身存在的冗余数据特性冗余,将秘密信息隐藏于一个宿主信号护体中而不被觉察,它对外表现的只是宿主信号的外部特征,并不改变基本特性及使用价值。无损图像隐藏算法是一种以可逆的方式把信息秘密嵌入载体媒介以保护知识产权和版权的方法。
近年来有很多无损可逆数据压缩方法被提出来,Hon—singer等(2001年)第一次提出了这个概念,Honsinger的方法被用来无损鉴定。Fridrich等(2001年)提出了一种可逆的数据隐藏算法,这种方法无损压缩载体图像的ISB位平面,并将压缩结果与秘密数据连接起来,以此代替载体位平面以嵌入数据。Celik等(2002年,2003年,2005年)设计了一种没有显著位的嵌入方式(G—LSB),这种方法第一次将像素对分成L层次,Celik的这种算法的负载取决于嵌入的水平L。TiarI(2003年)扩展了G—LSB算法,提出了一种基于差值扩展的数据隐藏算法,这种算法在相同的负载条件下,图像质量要明显优于以上几种方法。
整数Haar小波变换所得到的差值图像,最大能够提供的嵌入率是0.5 bpp。文献的算法不得不依赖多次嵌入以获得超过0.5 bpp或更高的嵌入率,通常的做法:如果第一次利用横向的差值图像,则第二次利用纵向的差值图像,第三次再利用横向的差值图像,交叉进行,直到达到负载所要求的嵌入率。但每一次单层嵌入后所得到的差值图像,其差值间的相关性显著下降,使得第二次嵌入的容量大大低于前一次嵌入的容量。由于前一重嵌入用到了很大的差值,使得在第二重嵌入开始之前图像的质量已被破坏。这里对Tian算法进行改进,在二次嵌入时,采用与第一次嵌入不同的像素配对方式。避免了两次嵌入的差值相关性,使得可供嵌入的差值显著增加,从而使得负载能力显著增强。
在相同负载条件下,对于给定的负载,以试探的方式确定一个差值选择门限,先在一重差值图像中寻找嵌入空间。若嵌入点不够,则在二重差值图像中寻找嵌入空间作为补充。若嵌入点还不够,则退回到原来的横向差值图像.加大选择门限值,进行新一‘轮寻找过程。此过程持续到满足负载容量为止还可以利用,这种双重嵌入方式,使嵌入数据合理分配到不同的嵌入层中,从而提高嵌入图像的质量。
2 DDE双重差值扩展算法
2.1可逆整数变换
介绍一个简单的可逆整数变换,以8位的灰度图像为例,(x,y)为一个像素对,x,y∈Z,0≤x,y≤255定义它的整数均值l和差值h:
(1)式和(2)式又称作Harr小波变换或S变换,这样(x,y)和(h,l)之间就建立起了一一对应的关系。为了保证x,y在[0,255]的范围,防止出现上溢和下溢,h,l必须满足条件:
简化后得:
可扩展与可变差值:如果给差值h用插值扩展算法嵌入一位数据b,扩展后的差值h′=2h+b。如果|h′1=|2h+b|≤min(2(255一l),2l+1)。当b=O或b=1都得到满足时,那么h就是可扩展的差值。
如果差值h满足|2×[h/2]+b|≤min(2(255一l),2l+1),b=O或b=1,那么h就是可变差值。
一个可扩展差值当其LSB位被修改后,就变成是可变的,可扩展的差值一定可变,如果差值为0或者一1那么可变与可展是等价的。
2.2 双重差值配对方式
图1(a)是Tian算法中采用的差值配对方法.按照顺序依次进行差值配对,图1(b)是提出的改进配对方法.把第一个像素跟最后一个像素相配对,其他像素按顺序相配对.由图1可以看出,用图l(b)所示方法计算出的差值与图1(a)不存在相关性,因此二重嵌入中可用差值不受一重嵌入的影响,另外为了获取更大的隐藏容量,图1(a)还可用纵向选取方式,图1(b)也可相应的有纵向选取方式。
2.3 DDE隐藏算法
第一步:按照图1(a)的方法对图像逐行配对,然后按照(1)式进行整数变换,把计算出的差值按顺序排列成一维数组{hl,h2,…hn}。
第二步:把差值分成4个不相交的部分,EZ,EN,CN,NC。其中EZ包括所有h=O,h=1;EN包括所有可扩展的差值且h不属于EZ;CN包括所有可变的差值,且h不属于EZ与EN的交集;NC包括所有不可变的差值。
第三步:创建一个定位图,用于差值定位,选择一个阈值T将EN分为ENl和EN2,ENl={h∈EN:|h|≤T},EN2={h∈EN:|h|>T},EZ和ENl是用于扩展差值,则分别为1和EN2,以赋值CN和NC为O。这样就建立一个定位.图,然后对定位图进行JBIG2压缩,压缩以后的位流记为L,L的末尾代表信息结束。
第四步:收集EN2和CN中差值的最低位(LSB(h)),但是h=land一2inEN2UCN不会被收集,所有的这些LSB(h)将组成位流C。
第五步:将位流L,C,P合并成位流B=LUCUP=b1…bkbk+1…bLbL+1…bm,然后将曰嵌入到载体图像。最后再用(2)式进行整数变换,就得到了一重嵌入后的图像。嵌入差值的过程如表l所示。
二重嵌入是对一重嵌入的再次嵌入,其中第一步采用图1(b)的像素配对方式计算差值,其他步骤与一重嵌入相同。
2.4 DDE提取算法
第一重提取的提取过程分为5个步骤,通过提取比特流B和收集比特流B中所有可变差值的LSB值,就可提取定位图和原始的比特流C。
第一步:以图1(b)的像素配对方式配对,然后计算差值,对每个像素应用整数变换(1),按顺序排列成一维数组{h1,h2,…hn}。
第二步:把差值分为两个不相关的子集,CH和NC,CH包含所有的可变差值,NC包含所有不可变差值。
第三步:收集所有可变差值的LSB值,然后组成比特流B=blb2…bm。
第四步:用JBIG2解码器对定位图进行解码.就获得了定位图位流L,如果定位图中的值为1,那么对应位置上的差值h就是被扩展的差值,h的原始值就是[h/2]。对于不可变差值,它在定位图中的值一定为O。对于可变差值h,如果0<h<1并且定位图中的值为0,那么h的原始值一定是1。如果h是可变差值,一2<h<一l,并且定位图中的值为0,那么h的原始值一定为一2。对于其他定位值为0的可变差值,用比特流C恢复其LSB,当所有的差值恢复到了原始图像,比特流B中剩下的位就是嵌入的负载P。
第五步:内容鉴定和原始内容恢复,用整数变换(2)重建原始图像,为了鉴定容量,把负载P中的鉴定信息与重建图像进行比较,如果二者吻合,那么图像容量是可信的,重建图像和原始图像就是相同的。
第二重提取与第一重提取仅第一部不同,采用图1(a)的像素配对方式其他部分与第一重提取相同。
3 实验结果
对多幅图像进行实验,把提出的DDE算法跟Tian算法进行比较,图2为在Lena上的实验结果。实验表明,提出的DDE算法在相同的嵌入率下取得了比Tian算法更好的图像效果,其原因在于提出的算法可以提供更多的较小差值进行嵌入,所以改善了图像质量。
4 结语
解决了Tian算法二重嵌入中可用差值急剧减少的问题,通过在第二次嵌入时改变差值选取的方案,从而避免了二重嵌入与一重嵌入中差值相关性的问题,从而使得可供嵌入的差值大幅增加。进而使得图像的负载能力显著提高,由于能够提供更多的较小差值,特别是零差值,所以在相同的负载条件下,使得图像的质量得到了很大提高。