1.一种基于奇偶判别策略的混沌加密可逆信息隐藏方法,其特征在于:包括如下步骤:步骤1:图像置乱加密和水印嵌入;具体包括如下步骤:
步骤1.1:利用Henon映射产生x序列和y序列,当a∈[1.07,1.4]、b=0.3时,Henon映射处于混沌状态,能产生伪随机序列,将a、x1、y1作为密钥1;
其中,a,b为自定义的权值,x1、y1为自定义的初始值,xn,yn分别是x序列和y序列中第n项值,xn+1,yn+1分别是xn+1序列和yn+1序列中第n+1项值;
步骤1.2:利用x序列对原图像I进行置乱,得到置乱图像I';具体包括如下步骤:步骤1.2.1:截取x序列的M*N个元素,得到序列:{x1,x2...,xM*N};
步骤1.2.2:将原图像I转换为一个M*N的一维序列Ii,并使一维序列Ii中的数据与序列{x1,x2...,xM*N}中的数据相对应;
步骤1.2.3:对序列{x1,x2...,xM*N}进行排序,一维序列Ii的顺序也发生改变;
步骤1.2.4:将一维序列Ii转换为一个M*N的二维矩阵,得到置乱图像I';
步骤1.3:利用y序列对置乱图像I'进行加密,得到加密图像I”,并且生成一张奇偶校验图PCM;具体包括如下步骤:步骤1.3.1:截取y序列的M*N个元素,得到序列:{y1,y2,...,yM*N};
步骤1.3.2:对{y1,y2,...,yM*N}进行归一化,归一化到[0,255]区间,对归一化后的数据进行取整后得到y’;
y′i=255*(yi-ymin)/(ymax-ymin),1≤i≤M*N (2);
其中,ymax是y序列中的最大值,ymin是y序列中的最小值,yi是当前进行归一化的数据,yi’是归一化之后的数据;
步骤1.3.3:将置乱图像I’中的每一位像素值I'(i,j)转换为八位的二进制数,表示为bi,j(k),其中,1≤k≤8;
其中,I'(i,j)是置乱图像中的像素点,k是二进制表示的第k位,bi,j(k)是I'(i,j)转换后的二进制表示;
步骤1.3.4:对归一化后的序列y’进行二进制转换,得到si,j(k),其中,1≤k≤8;
步骤1.3.5:将si,j(k)与bi,j(k)进行按位异或,实现图像加密,得到二进制加密值ni,j(k);
其中,si,j(k)是归一化后的序列y’的二进制表示,bi,j(k)是I'(i,j)转换后的二进制表示,ni,j(k)是二者进行异或后得到的加密值;
步骤1.3.6:将二进制加密值ni,j(k)转化为十进制后,得到加密图像的十进制像素值I”(i,j),其中,1≤i≤M,1≤j≤N;
其中,ni,j(k)是二者进行异或后得到的加密值,I"(i,j)是ni,j(k)的十进制表示;
步骤1.3.7:对加密图像I”进行处理,生成一张奇偶校验图PCM,对奇偶校验图PCM进行无损压缩,使得在提取出水印后能够无损恢复出载体图像,得到压缩后的矩阵PCM’,用于存放奇偶校验图PCM;
步骤1.4:将压缩后的矩阵PCM’与水印图像W一同组合为待嵌入数据E(i),记所嵌入的数据量为NumE;通过奇偶校验策略将奇偶校验图同个人的水印信息一同嵌入加密图像,利用logistic映射产生L序列;
Lk+1=μLk(1-Lk) (6);
其中,μ是自定义的密钥,Lk是L序列中第k个值,1≤k≤M*N;
当3.5699456…<μ<=4,L1∈(0,1)时,logistic映射为混沌状态,选取μ以及L1作为密钥
2;
步骤1.5:将加密图像I”预先分为P*Q个像素块,每个像素块含有(M/P)*(N/Q)个像素,然后利用L序列选取嵌入位置,把序列归一化到[0,(M/P)*(N/Q)]区间,并对序列进行取整,得到水印的嵌入位置L′i;
L′i=(M/P)*(N/P)*(Li-Lmin)/(Lmax-Lmin),1≤i≤P*Q (7);
其中,Li是L序列中第i个值,L′i的值是水印的嵌入位置点,Lmax是L序列中的最大值,Lmin是L序列中的最小值;
步骤1.6:将加密图像I”以及待嵌入数据E(i)一维化转变为数字序列;
其中,L′i的值是水印的嵌入位置点,E(i)是带嵌入数据,I”'是嵌入水印后的一维数字序列;
若嵌入的数值为1,则经过计算后的数值为奇数,若嵌入的数值为0,则经过计算后的数值为偶数,在提取数据时依据数值的奇偶性来判断所嵌入是0还是1;
步骤1.7:将一维数字序列I”’按照原二维矩阵转一维序列的变换方式进行逆变换,使得一维数字序列变换为二维矩阵,得到含水印的加密图像Iw;
步骤2:图像解密和水印提取;具体包括如下步骤:
步骤2.1:利用logistic映射产生L序列;
Lk+1=μLk(1-Lk) (9);
利用密钥2,即μ以及L1,将密钥代入公式(9),重现出L序列;
步骤2.2:利用L序列重现所嵌入的位置,将图像分为P*Q个像素块,每个像素块含有(M/P)*(N/Q)个像素,对序列进行归一化,归一化到[0,(M/P)*(N/Q)]区间,并对序列进行取整,记为L',得到水印的嵌入位置L′i;
步骤2.3:将图像Iw转换成的一维数字序列
E(i)=I1w(L′i)mod2,1≤i≤NumE (10);
步骤2.4:从提取出的数据分离出一维序列水印数据W奇偶校验图压缩数据PCM’,解压缩后得到奇偶校验图PCM,将一维序列水印数据W转换为二维P*Q矩阵;
步骤2.5:利用Henon映射和密钥1,恢复x序列和y序列,将密钥1代入Henon映射公式(1),重现出x序列与y序列;
步骤2.6:利用y序列进行第一次解密,具体包括如下步骤:步骤2.6.1:截取y序列的M*N个元素,得到序列:{y1,y2,...,yM*N};
步骤2.6.2:对{y1,y2,...,yM*N}进行归一化,归一化到[0,255]区间,按照公式(2)对归一化后的数据进行取整后得到y’;
步骤2.6.3:将加密图像Iw中的每一位像素值Iw(i,j),1≤i≤M,1≤j≤N,转换为二进制数,表示为b1i,j(k),1≤k≤8;
步骤2.6.3:对y’进行二进制转换,得到si,j(k),其中,1≤k≤8;
步骤2.6.4:将si,j(k)与bi,j(k)进行按位异或,实现图像加密,记为n1i,j(k);
步骤2.6.5:对于每一位解密后的像素值Iw'(i,j),1≤i≤M,1≤j≤N进行十进制化表示;
步骤2.7:利用x序列对图像进行二次解密,具体包括如下步骤:步骤2.7.1:截取x序列的M*N个元素,得到序列:{x1,x2...,xM*N};
步骤2.7.2:将图像Iw'转换为一个M*N的一维序列I1w'(i),1≤i≤M*N;
步骤2.7.3:建立一个新的序列Pos,使之记录每一个xi的位置,即Posi=i,对于每一个Posi都令其对应着xi;
步骤2.7.4:建立一个新的一维序列H,用此序列来承载所恢复出的原图像序列;
步骤2.7.5:对截取的序列{x1,x2...,xM*N}做排序,依据Posi的序列值来进行第二次解密,按照公式(15)来完成图像的第二次解密:H(Posi)=I1w'(i) (15);
其中,Posi表示xi的位置,H(Posi)用来得到第i位中对应的Posi的位置;
步骤2.7.6:将一维的H序列转换为一个M*N的二维矩阵,得到第二次解密图像Iw”。