12.6.2 基于混沌的图像隐藏算法
我们已经知道,如果要求隐藏效果良好,则隐藏参数必须接近1,这样实际上限制了隐藏参数的取值范围,客观上引入了一定的不安全性。为了增强原有图像隐藏算法的安全性,可以考虑引入混沌。应用Logistic映射可以产生(0, 1)上的混沌序列,即得到定义在(0, 1)上的伪随机序列{ai,j},i = 1, 2,…, M,j = 1, 2,…, N,其中M×N为图像的大小。利用混沌序列进行图像像素灰度值插入融合的计算公式为:

利用以上公式,可以得到隐藏的结果图像的像素灰度值,从而得到隐藏图像。由于隐藏参数是由混沌映射得到的伪随机序列,因此增强了安全性。然而,这种方法仍然存在缺憾,这是由于Logistic映射迭代序列的分布并不是均匀的,而是呈现两头大中间小的情形,即分布在0、1附近的概率较大。因此引入伪随机参数序列{ai,j}后势必会导致隐藏的结果图像既表现出模板图像的部分信息,又表现出待隐藏图像的部分信息,而且与隐藏迭代次数无关。通过实验我们也证明了这一点,实验表明该方法得到的图像隐藏效果是比较差的。为此,我们对原有插值融合公式进行了改进,得到如下新的公式:

其中,参数P(P∈N)称为隐藏因子。通过以上改进,可以保证 在接近1的区间取值,从而保证能够有较好、较稳定的隐藏效果;而{ai,j}作为一个由混沌映射参数的伪随机序列,增强了隐藏算法的抗破译能力。
下面给出这种基于混沌序列的图像隐藏算法的具体步骤。
① 输入待隐藏图像O和模板图像T,同时给出混沌序列的初始值、隐藏迭代次数和隐藏因子的值。
② 根据待隐藏图像的大小,利用Logistic映射公式生成相同大小的混沌序列{ai,j},其中0 ≤ai,j ≤1,i = 1, 2,…, M,j = 1, 2,…, N,M×N为图像的大小。
③ 利用上述混沌隐藏公式和混沌序列对两幅图像进行迭代计算,得到结果图像R。
④ 定义R为新的待隐藏图像,返回步骤2。直到迭代次数满足条件,隐藏过程完成。
隐藏图像的恢复算法可以根据隐藏公式的逆运算得到,这里不再赘言。
图12-27和图12-28给出了应用该算法对图像进行加密的实验结果。这里将一幅Lena图像隐藏在一张电影海报中,为了简便处理,我们所取的迭代次数为1。此时,当隐藏因子P取值较小(P=1)时,隐藏效果较差,但恢复效果非常好;当隐藏因子P取值较大(P=6)时,隐藏效果非常好,但恢复效果产生了噪点。当P的取值居中(P=3~5)时,隐藏效果和恢复效果都非常理想。增加迭代次数会改善图像的隐藏效果,并增强密图的抗破解能力。此外,混沌映射中的初始状态也可以作为加密密钥来使用。因此,该算法的密钥空间也是非常大的。
