基于像素差值编码的密文域图像的可逆数据隐藏方法与流程

文档序号:23011946发布日期:2020-11-20 12:12阅读:118来源:国知局
基于像素差值编码的密文域图像的可逆数据隐藏方法与流程

本发明属于数字图像隐写技术领域,具体的说是一种基于像素差值编码的密文域图像的可逆数据隐藏方法。



背景技术:

数字隐写术的基本原理是利用图像、视频、音频、文本等数字载体中存在的人类感知系统不敏感的冗余信息,将待传递的秘密信息隐藏到该冗余信息中,嵌入信息后的载密载体表面上在视觉方面和普通载体一样,使得潜在的攻击者很难觉察到秘密信息的存在,从而保证了秘密信息的安全传输。

然而,传统的信息隐藏技术存在一定缺陷,隐蔽信息提取后,载体图像不能完全复原,会给载体图像带来失真,在一些领域中,例如军事,医疗和银行,一点细微的错误也是无法容忍的。为了在提取秘密数据后,能将载体图像无损地恢复成原样,可逆数据隐藏逐渐成为了一种重要的信息隐藏技术。

基于对原始图像的加密与否,可逆数据隐藏技术又分为原始域的可逆数据隐藏和密文域的可逆数据隐藏。文献[separablereversibledatahidinginencryptedimage,2012],首次提出了通过修改加密图像的最低有效位的可逆数据隐藏方法,取得了不错的效果。但是近年来提出的许多密文域图像可逆数据隐藏方法对图像的利用率都比较低,一些方法对图像划分位平面进行数据隐藏,然而很多方法由于提出编码方案的局限性,导致了图像的低位平面无法用于数据嵌入,直接造成了嵌入容量低的事实,这些问题表明密文域的可逆数据隐藏对图像潜在的冗余信息实现高利用率存在很大的困难。



技术实现要素:

本发明是为了解决上述现有技术存在的不足之处,提出一种基于像素差值编码的密文域图像的可逆数据隐藏方法,以期能通过新的图像编码方式提高对图像潜在的冗余信息的利用率,从而能在保证安全性的前提下实现数字图像的高嵌入率。

本发明为达到上述发明目的,采用如下技术方案:

本发明一种基于像素差值编码的密文域图像的可逆数据隐藏方法的特点是按如下步骤进行:

步骤1、设定原始灰度图像i0的长和宽为m×n,然后将原始灰度图像i0按s×s的尺寸进行分块,从而得个图像块;计算第j个图像块的中间像素分别与第j个图像块中其他像素的差值,并选出绝对值最大的差值,记为

步骤2、利用伪随机数生成加密密钥ke={ke(1),ke(2)},其中,ke(1)表示第一个二值伪随机序列,所述第一个二值伪随机序列ke(1)的长度l等于ke(2)表示第二个二值伪随机序列,并由l个子密钥ke(2,1),ke(2,1),...,ke(2,j),...,ke(2,l)组成;其中,ke(2,j)表示第二个二值伪随机序列ke(2)中第j个子密钥,且每个子密钥的长度等于s×s;j∈[1,l];

利用第一个二值伪随机序列ke(1)对每个图像块进行置乱操作;再利用第二个二值伪随机序列ke(2)对第j个图像块内除中间像素之外的其余像素进行置乱操作,从而得到加密图像ie;

步骤3、图像的密文域可逆数据隐藏;

步骤3.1、定义差值阈值,并将所述加密图像ie的绝对值最大的差值中大于所述差值阈值的图像块作为不可嵌入块;再根据其余图像块中绝对值最大的差值,对其余的图像块进行分类,得到分类后的第j个图像块记为bj;

步骤3.2、将所述加密图像ie中所有图像块的十进制像素值转换成二进制像素值,记为bin;

步骤3.3、依次对所述加密图像ie的二进制像素值bin中分类后的第j个图像块的二进制像素值binj按照从上到下,从左到右的顺序,用m位二进制标识位来替换除第j个图像块的二进制像素值binj的中间像素之外的前m个二进制像素值的最低二进制位;从而对分类后的第j个图像块的二进制像素值binj的类型进行标记;

步骤3.4、判断所述加密图像ie的二进制像素值bin中分类后的第j个图像块的二进制像素值binj是否是不可嵌入块,若是,则执行步骤3.5和步骤3.12,否则,执行从步骤3.6顺序执行;

步骤3.5、按照替换顺序依次保留替换前的第j个图像块的二进制像素值binj的m位二进制位;并将所有不可嵌入块中替换前的m位二进制位按照顺序排列后,作为长度为q的辅助信息,记为a;

步骤3.6、利用式(1)计算分类后的第j个图像块的二进制像素binj中,除中间像素之外的其余每个二进制像素的前n位的位数n,并将前n位用中间像素与当前像素p_bini差值的绝对值来表示,i∈[1,s2]且i≠mid;如果中间像素与当前像素p_bini的差值不为0,第n+1位表示符号位,若差值为0,则不表示符号位,从而得到处理后的第j个图像块

步骤3.7、生成一个新的二值空序列,令二值空序列的第1位至第q位等于所述辅助信息a,令二值空序列的第q+1位至第q+g位等于长度为g的初始秘密信息,从而将二值空序列转换为待嵌入的长度为q+g的隐秘信息b;

步骤3.8、利用伪随机数生成数据隐藏密钥kd,且kd的长度与所述隐秘信息b的长度一致;然后利用数据隐藏密钥kd中的每位信息对所述隐秘信息b进行按位异或加密操作,从而得到加密隐秘信息be;

步骤3.9、扫描所述处理后的第j个图像块保持中间像素不变,其余第i个像素p_bini按照从上到下,从左到右的顺序依次读取每个像素的前n位;

若当前第i个像素p_bini的前n位均为0,则从当前像素p_bini的第n+1位开始嵌入加密隐秘信息o∈[1,p+q];

若当前第i个像素p_bini的前n位不全为0,则从当前像素p_bini的第n+2位开始嵌入加密隐秘信息

步骤3.10、若当前第i个像素p_bini在第j个图像块内读取顺序i≤m,则数据嵌入到当前像素p_bini的第7位为止,从而得到嵌入后的第j个图像块记为

步骤3.11、若当前第i个像素p_bini在第j个图像块内读取顺序i>m,则数据嵌入到当前像素p_bini的第8位为止,从而得到嵌入后的第j个图像块记为

步骤3.12、按照顺序依次不可嵌入块与嵌入后的第j个图像块的二进制像素值转换成十进制像素值;从而得到含隐秘信息的加密图像iem;

步骤4、重构原始图像,包括:秘密信息提取和图像恢复;

当接收端仅有加密密钥ke时,仅执行步骤4.1;

当接收端仅有数据隐藏密钥kd时,仅执行步骤4.2;

当接收端既有数据隐藏密钥kd,又有加密密钥ke时,仅执行4.3;

步骤4.1、图像解密:

步骤4.1.1、含隐秘信息的加密图像iem的长和宽为m×n,按s×s的尺寸进行分块,从而得个图像块;

将加密图像iem中所有图像块的十进制像素值转换成二进制像素值并按照顺序读取每个图像块的二进制像素值;

其中,第j个图像块的二进制像素值中,首先读取除中间像素之外图像块内前m像素的最低二进制位,从而得到当前图像块的类型,确定当前图像块中的范围,然后利用式(1)得到位数n;

若当前第j个图像块为不可嵌入块,则直接执行步骤4.1.4;否则,顺序执行步骤4.1.2;

步骤4.1.2、依次读取加密图像iem的二进制像素值的图像块,第j个图像块的二进制像素值中,首先读取中间像素然后依次读取除中间像素以外的第i个像素p_emi的前n位:

若当前第i个像素p_emi的前n位全为0,则令当前第i个像素p_emi的值等于中间像素的值;从而得到赋值后的第j个图像块记为

若当前第i个像素p_emi前n位不全为0,令临时变量dif等于当前第i个像素p_emi前n位像素值的十进制数;读取当前第i个像素p_emi的第n+1位,根据第n+1位的符号位确定加减号,令当前第i个像素p_emi的值等于中间像素的值相应加减临时变量dif;从而得到赋值后的第j个图像块记为

步骤4.1.3、利用伪随机数生成两个二值伪随机序列{ke(4),ke(5)},其中ke(4)表示第四个二值伪随机序列,ke(5)表示第五个二值伪随机序列;其中第四个二值伪随机序列与第一个二值伪随机序列ke(1)相同,第五个二值伪随机序列和第二个二值伪随机序列ke(2)相同;

步骤4.1.4、利用第五个二值伪随机序列ke(5)对不可嵌入块所述赋值后的第j个图像块的块内像素进行逆置乱操作,然后,利用第四个二值伪随机序列ke(4)对所有图像块进行置乱操作;从而完成所有图像块的二进制像素值转换成十进制像素值,并得到载密恢复图像i’;

步骤4.2、数据提取:

步骤4.2.1、含隐秘信息的加密图像iem的长和宽为m×n,按s×s的尺寸进行分块,从而得个图像块;

将加密图像iem中所有图像块的十进制像素值转换成二进制像素值并按照顺序读取每个图像块的二进制像素值;

其中,第j个图像块的二进制像素值中,首先读取除中间像素之外图像块内前m像素的最低二进制位,从而得到当前图像块的类型,确定当前图像块中的范围,然后利用式(1)得到位数n;

若当前图像块为不可嵌入块,则终止执行当前图像块,继续执行下一个图像块;

步骤4.2.2、按照顺序依次读取每个图像块,第j个图像块中,首先读取中间像素然后依次读取除中间像素以外的第i个像素p_di的前n位;

若当前第i个像素p_di的前n位均为0,则从第n+1位开始提取数据;

若当前第i个像素p_di的前n位不全为0,则从第n+2位开始提取数据;

步骤4.2.3、若当前第i个像素p_di在块内顺序i≤m,则数据提取到当前像素p_di的第7位为止;

若当前第i个像素p_di在块内顺序i>m,则数据提取到当前像素p_di的第8位为止;

步骤4.2.4、利用伪随机数生成数据隐藏密钥kd;

步骤4.2.5、利用数据隐藏密钥kd中的每位信息对步骤4.2.2-步骤4.2.4提取的数据进行按位异或解密,得到解密信息b’,解密信息b’与隐秘信息b完全相同,提取b’的第1位到第q位,即为辅助信息a,提取b’的第q+1位到q+g位,即为长度为g的初始秘密信息;

步骤4.3、数据提取与图像恢复:

步骤4.3.1、依次执行步骤4.1.1-步骤4.1.4得到载密恢复图像i’,依次执行步骤4.2.1-步骤4.2.6,得到长度为g的初始秘密信息以及辅助信息a;

步骤4.3.2、按照提取顺序依次将所有不可嵌入块的前m像素的最低二进制位替换为a中的二进制位,得到恢复图像ir,且恢复图像ir与恢复图像i0完全相同。

与现有技术相比,本发明的有益效果在于:

1、本发明相对于传统的可逆数据隐藏方法,将像素差值用于图像编码,通过对原始图像和秘密信息采取不同的加密方式,保证了图像传输过程的安全性,并动态利用差值的符号位,克服了现有技术中因编码方法的局限性所造成的对原始图像利用率低的问题,使得嵌入效率更高。

2、本发明利用了相邻像素的相关性,记录图像块内中间像素与其他像素的差值用于恢复图像,辅助开销信息小,嵌入容量大。

3、本发明的图像加密部分分别进行了块置乱与块内像素置乱,运行速度块,此外除块内中间像素外,其余像素均已改变成差值与符号等辅助信息以及嵌入信息,有效防止了原始图像被第三方破解与泄露。

4、本发明实现了在接收端进行数据提取、图像解密和图像恢复的可分离操作:如果接收端仅有数据隐藏密钥,则可以提取出原始秘密信息;如果接收端仅有加密密钥,则可以解密得到低失真的载密恢复图像;如果接收端既有加密密钥,又有数据隐藏密钥,则能无损地恢复出原始图像并提取出原始秘密信息。

附图说明

图1为本发明方法的整体流程图。

具体实施方式

本实施例中,一种基于像素差值编码的密文域图像的可逆数据隐藏方法,适用于灰度图像的可逆数据隐藏,首先计算原始灰度图像的差值,对灰度图像进行加密操作,然后在加密图像中根据像素差值进行可逆数据隐藏,最后根据拥有的密钥,进行数据提取与图像恢复,具体的说,如图1所示,是按如下步骤进行:

步骤1、设定原始灰度图像i0的长和宽为m×n,然后将原始灰度图像i0按s×s的尺寸进行分块,从而得个图像块;计算第j个图像块的中间像素分别与第j个图像块中其他像素的差值,并选出绝对值最大的差值,记为

图像块的尺寸s×s一般不宜过大,近年来许多方法对s的取值范围一般在3-7之间,s过大时,会导致每个图像块的辅助信息过多,造成图像嵌入效率的下降;

步骤2、利用伪随机数生成加密密钥ke={ke(1),ke(2)},其中,ke(1)表示第一个二值伪随机序列,第一个二值伪随机序列ke(1)的长度l等于ke(2)表示第二个二值伪随机序列,并由l个子密钥ke(2,1),ke(2,1),...,ke(2,j),...,ke(2,l)组成;其中,ke(2,j)表示第二个二值伪随机序列ke(2)中第j个子密钥,且每个子密钥的长度等于s×s;j∈[1,l];

利用第一个二值伪随机序列ke(1)对每个图像块进行置乱操作;再利用第二个二值伪随机序列ke(2)对第j个图像块内除中间像素之外的其余像素进行置乱操作,从而得到加密图像ie;

为了传递图像加密前图像块内的冗余信息,这里并没有采取传统的异或加密方法,而是使用了置换的方法,在保证了安全性的前提下,保留了原始图像的冗余信息,用于数据嵌入;

步骤3、图像的密文域可逆数据隐藏;

步骤3.1、定义差值阈值,并将加密图像ie的绝对值最大的差值中大于差值阈值的图像块作为不可嵌入块;再根据其余图像块中绝对值最大的差值,对其余的图像块进行分类,得到分类后的第j个图像块记为bj;

步骤3.2、将加密图像ie中所有图像块的十进制像素值转换成二进制像素值,记为bin;

步骤3.3、依次对加密图像ie的二进制像素值bin中分类后的第j个图像块的二进制像素值binj按照从上到下,从左到右的顺序,用m位二进制标识位来替换除第j个图像块的二进制像素值binj的中间像素之外的前m个二进制像素值的最低二进制位;从而对分类后的第j个图像块的二进制像素值binj的类型进行标记;

为了保证图像的可逆性,所有的不可嵌入块中被标识位替换下来的最低二进制位都应该保留,并作为嵌入信息的一部分嵌入到可嵌入块中;

步骤3.4、判断加密图像ie的二进制像素值bin中分类后的第j个图像块的二进制像素值binj是否是不可嵌入块,若是,则执行步骤3.5和步骤3.12,否则,执行从步骤3.6顺序执行;

对于所有的不可嵌入块,仅嵌入标识位,用于图像恢复阶段能准确识别当前图像块是否为不可嵌入块,因此不可嵌入块不进行步骤3.6-3.11的数据嵌入操作;

步骤3.5、按照替换顺序依次保留替换前的第j个图像块的二进制像素值binj的m位二进制位;并将所有不可嵌入块中替换前的m位二进制位按照顺序排列后,作为长度为q的辅助信息,记为a;

步骤3.6、利用式(1)计算分类后的第j个图像块的二进制像素binj中,除中间像素之外的其余每个二进制像素的前n位的位数n,并将前n位用中间像素与当前像素p_bini差值的绝对值来表示,i∈[1,s2]且i≠mid;如果中间像素与当前像素p_bini的差值不为0,第n+1位表示符号位,若差值为0,则不表示符号位,从而得到处理后的第j个图像块

步骤3.7、生成一个新的二值空序列,令二值空序列的第1位至第q位等于辅助信息a,令二值空序列的第q+1位至第q+g位等于长度为g的初始秘密信息,从而将二值空序列转换为待嵌入的长度为q+g的隐秘信息b;

由于隐秘信息b中含有q位辅助信息,因此灰度图像实际嵌入容量的大小应为q,即初始秘密信息的长度;

步骤3.8、利用伪随机数生成数据隐藏密钥kd,且kd的长度与隐秘信息b的长度一致;然后利用数据隐藏密钥kd中的每位信息对隐秘信息b进行按位异或加密操作,从而得到加密隐秘信息be;

步骤3.9、扫描处理后的第j个图像块保持中间像素不变,其余第i个像素p_bini按照从上到下,从左到右的顺序依次读取每个像素的前n位;

若当前第i个像素p_bini的前n位均为0,则从当前像素p_bini的第n+1位开始嵌入加密隐秘信息o∈[1,p+q];

若当前第i个像素p_bini的前n位不全为0,则从当前像素p_bini的第n+2位开始嵌入加密隐秘信息

步骤3.10、若当前第i个像素p_bini在第j个图像块内读取顺序i≤m,则数据嵌入到当前像素p_bini的第7位为止,从而得到嵌入后的第j个图像块记为

步骤3.11、若当前第i个像素p_bini在第j个图像块内读取顺序i>m,则数据嵌入到当前像素p_bini的第8位为止,从而得到嵌入后的第j个图像块记为

步骤3.12、按照顺序依次不可嵌入块与嵌入后的第j个图像块的二进制像素值转换成十进制像素值;从而得到含隐秘信息的加密图像iem;

由于像素差值存在是否为0这两种情况,因此这里采取了对符号位的动态处理方法:当像素差值为0时不记录符号位,差值不为0时才记录符号位;步骤3.9-步骤3.12是动态处理符号位的具体流程;

步骤4、重构原始图像,包括:秘密信息提取和图像恢复;

当接收端仅有加密密钥ke时,仅执行步骤4.1;

当接收端仅有数据隐藏密钥kd时,仅执行步骤4.2;

当接收端既有数据隐藏密钥kd,又有加密密钥ke时,仅执行4.3;

步骤4.1、图像解密:

步骤4.1.1、含隐秘信息的加密图像iem的长和宽为m×n,按s×s的尺寸进行分块,从而得个图像块;

将加密图像iem中所有图像块的十进制像素值转换成二进制像素值并按照顺序读取每个图像块的二进制像素值;

其中,第j个图像块的二进制像素值中,首先读取除中间像素之外图像块内前m像素的最低二进制位,从而得到当前图像块的类型,确定当前图像块中的范围,然后利用式(1)得到位数n;

若当前第j个图像块为不可嵌入块,则直接执行步骤4.1.4;否则,顺序执行步骤4.1.2;

步骤4.1.2、依次读取加密图像iem的二进制像素值的图像块,第j个图像块的二进制像素值中,首先读取中间像素然后依次读取除中间像素以外的第i个像素p_emi的前n位:

若当前第i个像素p_emi的前n位全为0,则令当前第i个像素p_emi的值等于中间像素的值;从而得到赋值后的第j个图像块记为

若当前第i个像素p_emi前n位不全为0,令临时变量dif等于当前第i个像素p_emi前n位像素值的十进制数;读取当前第i个像素p_emi的第n+1位,根据第n+1位的符号位确定加减号,令当前第i个像素p_emi的值等于中间像素的值相应加减临时变量dif;从而得到赋值后的第j个图像块记为

步骤4.1.3、利用伪随机数生成两个二值伪随机序列{ke(4),ke(5)},其中ke(4)表示第四个二值伪随机序列,ke(5)表示第五个二值伪随机序列;其中第四个二值伪随机序列与第一个二值伪随机序列ke(1)相同,第五个二值伪随机序列和第二个二值伪随机序列ke(2)相同;

步骤4.1.4、利用第五个二值伪随机序列ke(5)对不可嵌入块赋值后的第j个图像块的块内像素进行逆置乱操作,然后,利用第四个二值伪随机序列ke(4)对所有图像块进行置乱操作;从而完成所有图像块的二进制像素值转换成十进制像素值,并得到载密恢复图像i’;

载密恢复图像i’中,由于所有不可嵌入块的前m像素的最低二进制位组成了辅助信息a被用于数据嵌入的一部分,因此这部分信息无法复原。导致载密恢复图像i’与原始灰度图像i0存在一些差异,但在视觉上十分相似,原始灰度图像i0与载密恢复图像i’的峰值信噪比的值约为70db;

步骤4.2、数据提取:

步骤4.2.1、含隐秘信息的加密图像iem的长和宽为m×n,按s×s的尺寸进行分块,从而得个图像块;

将加密图像iem中所有图像块的十进制像素值转换成二进制像素值并按照顺序读取每个图像块的二进制像素值;

其中,第j个图像块的二进制像素值中,首先读取除中间像素之外图像块内前m像素的最低二进制位,从而得到当前图像块的类型,确定当前图像块中的范围,然后利用式(1)得到位数n;

若当前图像块为不可嵌入块,则终止执行当前图像块,继续执行下一个图像块;

不可嵌入块并没有进行数据嵌入操作,因此数据提取时,不提取不可嵌入块中的数据;

步骤4.2.2、按照顺序依次读取每个图像块,第j个图像块中,首先读取中间像素然后依次读取除中间像素以外的第i个像素p_di的前n位;

若当前第i个像素p_di的前n位均为0,则从第n+1位开始提取数据;

若当前第i个像素p_di的前n位不全为0,则从第n+2位开始提取数据;

步骤4.2.3、若当前第i个像素p_di在块内顺序i≤m,则数据提取到当前像素p_di的第7位为止;

若当前第i个像素p_di在块内顺序i>m,则数据提取到当前像素p_di的第8位为止;

步骤4.2.4、利用伪随机数生成数据隐藏密钥kd;

步骤4.2.5、利用数据隐藏密钥kd中的每位信息对步骤4.2.2-步骤4.2.4提取的数据进行按位异或解密,得到解密信息b’,解密信息b’与隐秘信息b完全相同,提取b’的第1位到第q位,即为辅助信息a,提取b’的第q+1位到q+g位,即为长度为g的初始秘密信息;

步骤4.3、数据提取与图像恢复:

步骤4.3.1、依次执行步骤4.1.1-步骤4.1.4得到载密恢复图像i’,依次执行步骤4.2.1-4.2.6,得到长度为g的初始秘密信息以及辅助信息a;

步骤4.3.2、按照提取顺序依次将所有不可嵌入块的前m像素的最低二进制位替换为a中的二进制位,得到恢复图像ir,且恢复图像ir与恢复图像i0完全相同。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1