根据HVS(人眼视觉系统)视觉特性,人眼对低灰度区和高灰度区的敏感度较差,对中灰度区的敏感度较好的特点,我们利用图像直方图中低灰度值区和高灰度值区的多个概率最大点来隐藏信息;并首先利用混沌系统Logistic映射产生的位序列对待隐藏信息进行加密以增加秘密信息的安全性。

一、Logistic映射混沌系统

混沌是指在确定性系统中出现的一种看似无规则的类随机现象,这种过程既非周期又不收敛,并且对初始值具有极其敏感的依赖性。Logistic映射是目前运用较多的一个混沌系统,公式为:

上式中μ∈[1,4],xn∈(0.1)。而当3. 569945<μ≤4时,Logistic映射才处于混沌状态。

利用Logistic映射可以生成如下序列:

(1)二值序列:

(2)实数值序列:

(3)位序列:将实数值xn表示成浮点数形式,生成L位的二进制数:

Logistic映射具有以下优点:混沌序列的产生简单,运算复杂度低、速度快,并且具有自相关强、互相关弱的特性,对初始条件极其敏感,差别甚小的初始值经过迭代得到的混沌序列都不相同,因此经过混沌加密的信息的安全性很高。本文利用Logistic映射产生的L位的位序列与秘密信息的ASCII码组合而成的L位的二进制数组进行异或得到另一组序列,并将其隐藏在载体图像中。

二、HVS的特性

图像作为一种传输视觉信息的媒介,是通过人眼接收信息的。因此对于图像的变换、压缩,噪声等对图像的影响,除了可以从一些硬性的指标比如峰值信噪比来判断之外,还可以从它们对人眼的影响来判断,即要与人的视觉系统联系起来加以研究。因此有必要了解人类视觉系统(HVS.Human Vi-sion System)的构成和特性。

根据对HVS的研究可知它具有以下特性:

①人眼对彩色的敏感度低于亮度;

②对高灰度和低灰度的敏感度低于中等灰度;

③对纹理区域噪声的敏感度低于图像平滑区;

④对高频信息的敏感度低于低频信息;

⑤对不同方向上的敏感程度也不同,对倾斜方向的变化不太敏感;

⑥在不同背景亮度和不同边缘变化程度的情况下,人眼对图像变化的敏感度也不相同。

本文主要利用了HVS特性的第二点,人眼对于不同灰度具有不同敏感性,对高灰度和低灰度不太敏感,而对中等灰度最为敏感。如图1所示,敏感度与灰度值的关系呈现为二次曲线,在灰度值I1=85以下(即低灰度区域),随着灰度值的增加,敏感度以二次函数形式非线性增加;而在灰度值I2=170以上(即高灰度区域),随着灰度值的增加,敏感度以二次函数形式非线性减小;在I1到I2之间,敏感度保持一个常数不变。

将图像分成许多小块,每块的灰度均值为a。该块中不同亮度的点对噪声的掩盖因子为ω(i,j):

其中:

其中,M*N是分块的大小。

由ω曲线可知,人眼对图像的低灰度部分和高灰度部分的变化较不敏感。对于信息隐藏来说,出于不可察觉性的考虑,秘密信息应该加在图像的低灰度和高灰度部分上。

三、直方图信息隐藏算法

根据人眼HVS对图像的低灰度部分和高灰度部分的变化不敏感的特性,把秘密信息加在图像的低灰度和高灰度部分上,人眼就察觉不出隐藏的秘密信息。图像的低灰度和高灰度由图像的直方图确定,我们采用直方图修改的方法进行信息隐藏。

1、直方图修改的信息隐藏算法步骤

(1)生成图像的直方图h(g):

这里,n(g)是图像中灰度值为g的像素点的个数,I,J是图像的行数和列数,例如Lina图像和直方图如图3、图4所示。

(2)确定直方图的概率最大点Gm和零点Gn。

在直方图中选择灰度级90和170作为分界点,在小于90的低灰度区搜索概率最大的灰度级Gm。在大于170的高灰度区搜索概率为零的灰度级Gn。如果没有零点,就搜索最小概率灰度级。

(3)信息隐藏

顺序扫描图像I(i,j),如果像素的灰度值I(i,j)=Gm,而且待隐藏信息的数据data=1,则该灰度值加1,否则不变;如果Gm<I(i,j)<G,则该灰度值加1:

信息隐藏的结果,图像的直方图发生了修改。

2、提取隐藏信息和恢复图像的算法步骤

(1)提取隐藏信息

顺序扫描图像I(i,j),如果像素值I(i,j)=G,则提取一个隐藏数据data=0;如果I(i,j)= Gn+1,则提取一个隐藏数据data=1:

(2)恢复原始图像

在提取隐藏信息的同时,如果像素值I(i,j)=Gn+1,则恢复图像原始灰度值I(i,j)=I(i,j)-l,如果G+1<I(i,j)<Gn+1,则恢复图像的原始灰度值I(i,j)=I(i,j)-1。

顺序扫描图像,将像素值位于148和240的点的像素值都减1,图像就得到了完全恢复。

当图像扫描完毕,就完成了秘密信息的提取和原始图像的恢复。

该算法利用了直方图低灰度部分的一个最大概率点进行信息隐藏,隐藏的比特位数等于最大点灰度级的个数L=h(Gm) xIxJ。因此,该算法的信息隐藏量很小。为了增加信息隐藏量,提出了利用最大点和最小点隐藏更多比特的算法,这个算法是在一个概率最大点G,上隐藏71个比特位,把该点后的灰度级g向高灰度级移动d位,即:

该算法的信息隐藏容量L=h(Gm)*J*J*n,与之前的算法相比大大增加了信息隐藏的容量。但是,该算法并没有考虑到图像隐藏秘密信息后的质量。而从HVS的特性中可知,人限对图像的中等灰度部分更加敏感,对图像的低灰度部分和高灰度部分的变化较不敏感。为此,我们提出将秘密信息经过混沌加密后,再隐藏到图像的高灰度和低灰度中多个概率最大点上,这样不仅大大增加了信息隐藏容量,还增加了秘密信息的隐秘性。

四、改进的多位混沌加密信息隐藏算法

1、隐藏信息的混沌序列加密

设秘密信息是一个字符串C(i)。将C(i)的ASCII码组合为二迸制码CL(j)。设码长为L位。

由Logistic映射产生一个L位的序列K(j),采用如下方法对信息进行加密:

其中①是异或运算,M(j)即为待隐藏信息,将经过混沌序列加密后的信息再隐藏到图像中,可以增加秘密信息被破译的难度。

2、嵌入秘密信息

(1)确定隐藏信息的灰度级

根据直方图,在低灰度值区寻找多个概率最大点和最小点对Gmls,Gnls(s=1,2,3,…),同样在高灰度区也寻找多个概率最大点和最小点对Gmht,Gnht(t=1,2,3,…)。Gnls<Gmls,Gmls<Gmht,Gmht<Gnht。信息隐藏在这些概率最大点的灰度级上,且该灰度级上隐藏多个比特,则在每个最大点上隐藏的比特位为:

其中以是每个灰度级隐藏的比特数。

(2)图像修改

顺序扫描图像,若像素的灰度值I(i,j)满足Gnls<I(i,j)< Gmls,则灰度值修改为:

其中s为低灰度值区概率最大点和最小点的对数。

若Gmht<I(i,j)<Gnht,则灰度值修改为:

其中t为高灰度值区概率最大点和最小点的对数。在此需要注意的是对于低灰度区的Gmls,Gnls必须要大于(24一1)*s(否则相减时即会出现负值,超出了图像灰度值的范围),而且Gmls-1- Gnls也要不小于2n-1(否则空出的零点数就会小于2n-1个);对于Gmht也有相应的要求,Gnht必须要小于255-(2n-1) *t,而且Gnht( Gnht+1)也要不小于2n-1。整理后即:

(3)隐藏信息

顺序扫描图像的所有像素点,若I(i,j)=Gmls-(2n-1)*(s-1).则从M(j)序列中顺次取出nl个比特位,在Gmls上减去由n个比特位所组成的十进制数值D;若I(i,j)=Gmht十(2n-1)*(t-l),则在Gmht上加上由n个比特位所组成的十进制数值D:

例如,图4中低灰度值区最大点Gml1为70和Gml2为47,假设n=3。且此时待隐藏信息的三个比特位是110,则若扫描到像素点的灰度值为70,就在70上减去6,若扫描到像素点的灰度值是40,就在40上减去6。

反复进行步骤(3)的操作过程,直到所有的信息隐藏完毕。

3、提取隐藏信息和原始图像的恢复

隐藏信息的提取即为隐藏的逆过程,从基本算法的提取过程可以看出,该算法可以实现秘密信息的完全提取,并且提取信息后,可以完整无损地恢复图像。将提取的信息再与混沌序列相异或即可得到原秘密信息。

五、实验结果对比

将上文描述的方法用于一些图像中,然后将其结果与原方法的结果进行对比,结果如下。

对于256*256的lena图像,当每个最大点隐藏2位信息的时候改进前后两幅图像差别不大;而当每个最大点隐藏三位的时候,改进后的图像质量明显高于原方法;当隐藏四位时,差别更加明显。显然,用原方法在一个最大点上最多只能隐藏两位数据时隐藏信息的不可见性才比较好,而此时信息的隐藏容量就只有1362个比特位,改进后可以隐藏3位,若在高低灰度区域各寻找两个概率最大点,此时信息的容量达到4845个比特位,信息的隐藏容量大大增加,隐藏效果如图5中a1到a4所示。

对于512*512的woman图像,同样给出几组对比图像,当隐藏三位的时候,使用原方法产生的图中在左手肘,左脸以及右手臂处颜色明显加深;当隐藏四位的时候,使用原方法的图中,在之前颜色改变的地方变得更深;而改进后的图像质量高于原方法.所以,要保证秘密信息的不可见性,原方法最多只能隐藏4802个比特位,而改进后若在高低灰度各寻找两个概率最大点,即可以隐藏17154个比特位,隐藏容量大大的增加,如图5中b1到b5所示。

下面给出两幅图像经过信息隐藏后与原图比较得到的PSNR(峰值信噪比),如表一所示。PSNR,即峰值信噪比,英文全称是Peak Signal toNoise Ratio,一种客观的评价图像的标准,PSNR一般是用来衡量经过处理后的图像或者是其他影像的品质,它是原图像与处理图像之间均方误差相对于信号最大值平方的对数值,单位是dB。公式如下:

其中I为原始图像,而K为经过处理后的图像;I(i,j)表示原图像某点的像素值,K(i,j)表示经处理后图像相对应某点的像素值*MAXl即为图像的像素点的最大值255。

小知识之直方图

直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。