门限图像隐藏技术的实施与改进
首先选取一幅欲隐藏的8位256色的灰度图像,称之为目标图像,然后选取若干幅(这里假设为n幅)普通图像,称之为影子图像。把目标图像信息通过一定的方式保存到这些影子图像中,从而达到隐藏的目的。这些影子图像都是24位的彩图,且图像大小、长宽都不小于目标图像。
对于目标图像中的每一个像素的像素值M(x,y)(x、y分别代表该像素点位于目标图像中的位置),根据以下方程:

其中,a1,…,an-1都是小于p的随机数,p可取253。
对于目标图像中的每一个像素都作此变化,只是不同的影子图像对应的一个数字ui不同。这样,把经过计算后的值f(ui)变成8位二进制的值填入到每幅影子图像对应像素的每种颜色分量的最后3位中。由于改变的是R、G、B颜色分量的末3位,对于整幅图像的改变从肉眼一般是无法辨认出来的,因此起到了很好的欺骗作用。图1所示为两幅随机改变R、G、B每种颜色分量最后3位后所得图像前后的对比。

经过以上处理后,由于只填充了8位,n幅影子图像的低位还会有一位像素的空余,对于这一位像素,填入一个奇偶校验位,这样就可以检测出那些在传送过程中可能受到破坏的子图。对于这样的子图放弃不用,从而可以防止由于像素受到破坏而对后面解方程组造成干扰。
3.2 目标图像的恢复
在获得n幅影子图像中的t幅后,首先判断每一个奇偶校验位是否正确,然后可以就每一位像素组成一个方程组:

可以通过拉格朗日插值法求解出该方程组中的
M(x,y),这样,求解完每一个像素相对应的一个方程组后就可以得到原目标图像所有像素的像素值,目标图像就得以恢复。
4 算法的改进
由于隐藏图像时经常会遇到比较大的图像,因此在逐个隐藏目标图像的每个像素时,算法的效率会显得很重要。如果算法的效率低、时间复杂度高,整个隐藏算法所用的时间就会比较长。为此,特提出了以下改进方案:
将每幅图像按行分成1×t个像素的小块,每个块中的像素值作为式(5)的序数a0,a1,…,at-1(M(x,y)看作a0)的值,然后针对所有的图像给出一个对外保密的未知数u值序列。这样,每解一次方程组(5)时就可以一次解出t个目标图像像素的值,算法的时间复杂度几乎下降为原来的1/t。
在影子图像的9个最低位被填充了8位后,还剩下一位空余,可以填入奇偶校验位,这样就可以检验出影子图像在传输过程中是否被损坏,从而不会因为损坏后被改变的像素值而计算出错误的目标图像像素值。
本文提出了新的算法思路,从而大幅加快了隐藏算法的速度。在处理器酷睿双核2.0 GHz内存2.0 GB,VC6.0平台下实验,CHEN Chang Chin[4]以及陈继超[7] 等人的算法完成一幅1 000×1 000图像的隐藏需要时间大概为1.4 s,本文的方法平均约只需要0.5 s,速度的提升非常明显;其次,提出了简单易行的奇偶校验方法,从而对算法的鲁棒性有了很大的提高。因此,本文提出的基于门限方案的图像隐藏方法高效、强壮且具有很强的实践性。
评论