1.一种基于双图像的可逆数据隐藏方法,其特征在于,包括以下步骤:
S1:构造一个横纵坐标范围为[0,255]的矩阵,使矩阵中同一行的相邻元素的值相差1,且依次递增,同一列的相邻的两个元素偶数列的值比奇数列的值多2,奇数列的值比偶数列的值多3,再将矩阵中的元素值进行模8运算,使元素值在[0,7]之间,最后用多个相连拼接的六边形覆盖所述矩阵,得到龟壳魔术矩阵,其中,所述矩阵中位于所述六边形的边缘处的点属于龟边点,未处于所述六边形的边缘处的点属于龟背点,将所述龟壳魔术矩阵中位于龟背点的元素各加数值“8”,得到新型龟壳魔术矩阵;
S2:将需要藏入的秘密信息转换成一串二进制数,再将每4个二进制数转成一个十六进制数;
S3:从原始图像中取出一个像素p(p∈[0,255]),将所述像素p扩充成一个坐标(p,p),若所述像素 且 从所述秘密信息中获取一个十六进制数,记为v,根据所述点(p,p)在所述新型龟壳魔术矩阵中的位置的不同确定藏入范围,在所述藏入范围中找到使坐标对应的值为v的坐标(p1,p2),并根据移动规则对所述坐标(p1,p2)存在冲突的点进行移动;
S4:将p1赋值给所述原始图像中所述像素p对应的位置,并遍历所述原始图像中的所有像素和所述秘密信息中的所有十六进制数执行步骤S3,得到第一秘密图像,将p2赋值给所述原始图像中所述像素p对应的位置,并遍历所述原始图像中的所有像素和所述秘密信息中的所有十六进制数执行步骤S3,得到第二秘密图像。
2.根据权利要求1所述的方法,其特征在于,所述根据所述点(p,p)在所述新型龟壳魔术矩阵中的位置的不同确定藏入范围,具体步骤包括:将所述龟背点中纵坐标更大的点记为上龟背点,所述龟背点中纵坐标更小的点记为下龟背点,所述龟边点中纵坐标最小或纵坐标与所述上龟背点相等的三个点记为上龟边点,所述龟边点中纵坐标最大或纵坐标与所述下龟背点相等的三个点记为下龟边点,若所述像素p属于上龟边点或上龟背点,则以所述新型龟壳魔术矩阵中坐标为(p,p)的点为右下角构造一个4×5的块,扣除块中右上角的4个元素,使用剩余的16个元素来藏入一个所述十六进制数;若所述像素p属于下龟边点或下龟背点,则以(p,p)为左上角构造一个4×5的块,扣除块中左下角的4个元素,使用剩余的16个元素来藏入一个所述十六进制数。
3.根据权利要求1所述的方法,其特征在于,所述移动规则具体包括:
若所述像素p属于上龟边点或上龟背点,则将所述藏入范围中第一行的最后一列的元素bf和第二行的最后一列的元素bs按照如下规则移动:若所述像素p属于下龟边点或下龟背点,则将所述藏入范围中最后一行的第一列的元素lf和倒数第二行的第一列的元素ls按照如下规则移动:
4.根据权利要求1所述的方法,其特征在于,在所述步骤S3中,若所述像素p∈[0,2]或p∈[253,255],令p1=p2=p,并直接执行所述步骤S4。
5.根据权利要求1所述的方法,其特征在于,还包括对图像中的秘密信息进行萃取的步骤,具体包括:A1:执行所述步骤S1,得到所述新型龟壳魔术矩阵;
A2:依次从所述第一秘密图像和所述第二秘密图像的相同位置取出所述p1和p2,定义差值d=p1-p2;
A3:根据以下规则进行秘密信息萃取:
(1)若d=0且p1和p2属于边缘点,则所述第一秘密图像和所述第二秘密图像中对应的点中没有藏入秘密信息;若d=0且p1和p2不属于边缘点,则藏入的十六进制的秘密信息v为所述新型龟壳魔术矩阵中点(p1,p2)的值;
(2)若d<0,则藏入的十六进制的秘密信息v根据以下规则获得:
(3)若d>0,则藏入的十六进制的秘密信息v根据以下规则获得:
其中M(p1,p2)表示所述新型龟壳魔术矩阵中点(p1,p2)的值。
6.根据权利要求5所述的方法,其特征在于,还包括对原始图片进行恢复的步骤,具体包括在所述步骤A1-A3后执行以下原始图片恢复算法:(1)若d=0,则原始像素p=p1;
(2)若d<0,则p可以通过以下方式获得:
(3)若d>0,则p可以通过以下方式获得:
还原出原始图像中对应的位置上的像素p,从而还原出原始图像。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被计算机处理器执行时实施权利要求1至6中任一项所述的方法。
8.一种基于双图像的可逆数据隐藏系统,其特征在于,包括:
新型龟壳魔术矩阵构建模块:配置用于构造一个横纵坐标范围为[0,255]的矩阵,使矩阵中同一行的相邻元素的值相差1,且依次递增,同一列的相邻的两个元素偶数列的值比奇数列的值多2,奇数列的值比偶数列的值多3,再将矩阵中的元素值进行模8运算,使元素值在[0,7]之间,最后用多个相连拼接的六边形覆盖所述矩阵,得到龟壳魔术矩阵,其中,所述矩阵中位于所述六边形的边缘处的点属于龟边点,未处于所述六边形的边缘处的点属于龟背点,将所述龟壳魔术矩阵中位于龟背点的元素各加数值“8”,得到新型龟壳魔术矩阵;
秘密信息预处理模块:配置用于将需要藏入的秘密信息转换成一串二进制数,再将每4个二进制数转成一个十六进制数;
秘密信息隐藏模块:配置用于从原始图像中取出一个像素p(p∈[0,255]),将所述像素p扩充成一个坐标(p,p),若所述像素 且 从所述秘密信息中获取一个十六进制数,记为v,根据所述点(p,p)在所述新型龟壳魔术矩阵中的位置的不同确定藏入范围,在所述藏入范围中找到使坐标对应的值为v的坐标(p1,p2),并根据移动规则对所述坐标(p1,p2)存在冲突的点进行移动;
秘密图像生成模块:配置用于将p1赋值给所述原始图像中所述像素p对应的位置,并遍历所述原始图像中的所有像素和所述秘密信息中的所有十六进制数运行秘密信息隐藏模块,得到第一秘密图像,将p2赋值给所述原始图像中所述像素p对应的位置,并遍历所述原始图像中的所有像素和所述秘密信息中的所有十六进制数运行秘密信息隐藏模块,得到第二秘密图像。