首页 / 专利库 / 图形技术 / 纹理合成 / 一种大容量图像隐写方法和秘密信息提取方法

一种大容量图像隐写方法和秘密信息提取方法

阅读:1045发布:2020-05-29

专利汇可以提供一种大容量图像隐写方法和秘密信息提取方法专利检索,专利查询,专利分析的服务。并且一种大容量图像隐写方法,包括:对载体图像进行置乱处理;将置乱后的图像划分成N*N的子 块 并进行DCT变换;对每个DCT块进行分类, 选定 嵌入块;对每个嵌入块的DCT系数Z字形扫描后得到的矩阵中提取出选定 位置 的元素值,得到系数矩阵;在Q表Z字形扫描后得到的矩阵中提取出与选 定位 置相同的元素值,组成量化矩阵;通过量化矩阵计算划分矩阵和块容量;将秘密信息的比特流按照块容量划分;对划分后的比特流计算嵌入矩阵;计算新的系数矩阵;使用新的系数矩阵中的元素值替换DCT系数,且进行Z字形扫描的逆操作,得到新的DCT系数;对每个子块进行DCT反变换后再进行反置乱处理。还公开了秘密信提取方法。图像复杂度高且嵌入容量大。,下面是一种大容量图像隐写方法和秘密信息提取方法专利的具体信息内容。

1.一种大容量图像隐写方法,用于将秘密信息嵌入到载体图像中,其特征在于:包括以下步骤:
步骤1、对载体图像进行置乱处理,得到置乱后的载体图像;
步骤2、将置乱后的载体图像划分大小为N*N的子,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;
步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息嵌入,被选定的n个纹理块标记为嵌入块,n为自然数;
步骤4、分别对n个嵌入块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第一矩阵,在所有第一矩阵中选择位置相同的m个元素值,得到n个第一系数矩阵Ai,其中Ai=[ai1 ai2  ... aij  ... aim],ai1为第i个嵌入块的第一矩阵中第1个被选定位置对应的元素值,ai2为第i个嵌入块的第一矩阵中第2个被选定位置对应的元素值,aij为第i个嵌入块的第一矩阵中第j个被选定位置对应的元素值,aim为第i个嵌入块的第一矩阵中第m个被选定位置对应的元素值;i=1、2、3...n,m为自然数;
步骤5、将大小为N*N的预设Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第二矩阵,在第二矩阵中提取出与步骤4中所有第一矩阵选择的位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B,其中,B=[b1 b2 ... bj ... bm],b1为第二矩阵中第1个被提取出的元素值,b2为第二矩阵中第2个被提取出的元素值,bj为第二矩阵中第j个被提取出的元素值,bm为第二矩阵中第m个被提取出的元素值;
步骤6、对量化矩阵B进行计算得到划分矩阵C,并对划分矩阵C中所有元素求和,作为每个嵌入块的块容量;其中,划分矩阵C的计算公式为:
C=[c1 c2 ... cj ... cm],1≤j≤m, 表示向下取整函数;
每个嵌入块的块容量等于c1+c2+...cj+...+cm;
步骤7、将需要嵌入的秘密信息转换成二进制的比特流,然后以每个嵌入块的块容量为单位,将秘密信息的二进制的比特流划分成k个秘密分块;
步骤8、对照划分矩阵C中的每个元素值,将划分矩阵C中的每个元素值作为划分位数,依次先后对每个秘密分块中的比特流进行划分,每个秘密分块被划分成m个分块比特流,将每个秘密分块中m个分块比特流转换成十进制数,依次得到第l个秘密分块的m个元素值,记为第l个秘密分块的嵌入矩阵Dl,Dl=[dl1 dl2  ... dlj  ... dlm],dl1为第l个秘密分块中第一个分块比特流转换成的十进制数,dl2为第l个秘密分块中第二个分块比特流转换成的十进制数,dlj为第l个秘密分块中第j个分块比特流转换成的十进制数,dlm为第l个秘密分块中第m个分块比特流转换成的十进制数,l=1、2、3...k;1≤j≤m;
步骤9、依次将k个秘密分块按照顺序嵌入到嵌入块中:根据第i个嵌入块的第一系数矩阵Ai、量化矩阵B和第i个秘密分块的嵌入矩阵Di,计算第i个嵌入块的第一系数矩阵Ai对应的新系数值,作为第i个嵌入块的第二系数矩阵Fi;其中,计算公式为:
其中,Fi=[fi1 fi2 ... fij  ... fim],fi1为第i个嵌入块的第二系数矩阵Fi中第1个元素值,fi2为第i个嵌入块的第二系数矩阵Fi中第2个元素值,fij为第i个嵌入块的第二系数矩阵Fi中第j个元素值,fim为第i个嵌入块的第二系数矩阵Fi中第m个元素值,i=1、2、3...n,1≤j≤m; 表示向下取整函数,d′ij为符号化后的第i个秘密分块的嵌入矩阵Di中第j个元素值,符号化后的第i个秘密分块的嵌入矩阵Di与第i个嵌入块的第一系数矩阵Ai中对应位置的元素符号相同;
步骤10、使用第i个嵌入块的第二系数矩阵Fi中元素值替换与第i个嵌入块的第一系数矩阵Ai中对应位置的元素值,且使用替换后的第一系数矩阵Ai相应替换第一矩阵中对应位置的元素值,且对替换后的第一矩阵进行Z字形扫描的逆操作,使第一矩阵重新转换成二维矩阵,得到第i个嵌入块新的DCT系数矩阵,将新的DCT系数矩阵替换成该第i个嵌入块的DCT系数矩阵;
步骤11、对每个子块进行DCT反变换,将所有进行DCT反变换后的子块按照顺序合成为第二图像;
步骤12、对第二图像进行反置乱处理,得到载密图像。
2.根据权利要求1所述的大容量图像隐写方法,其特征在于:所述步骤1中从以下四种置乱算法中任意选择一种置乱算法对大小为N1*N2的载体图像进行置乱处理,其中第一种置乱算法的具体步骤为:
步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
步骤1-1b、判断i+j的值是否能被2整除,如是,则转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
步骤1-1c、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
第二种置乱算法的具体步骤为:
步骤1-1a、判断载体图像所有像素点的数量是否在设定范围内,如是,则转入步骤1-
1b;如否,则结束;
步骤1-1b、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
步骤1-1c、判断i+j的值是否能被2整除,如是,则转入步骤1-1d;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
步骤1-1d、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
第三种置乱算法的具体步骤为:
步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
步骤1-1b、判断i+j的值是否能被2整除,如是,则取载体图像的第i行第j列像素点的灰度值的反转值作为该像素点新的灰度值,转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变,转入步骤1-1c;;
步骤1-1c、判断i是否为偶数,如是,则依次使用第i行第j列像素点的灰度值替换第i行第j-1列像素点的灰度值,使用第i行第1列像素点的灰度值替换第i行第N2列像素点的灰度值;如否,则结束。
第四种置乱算法的具体步骤为:
步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
步骤1-1b、判断i是否为偶数,如是,则保持载体图像的第i行所有列像素点的灰度值不变;如否,则转入步骤1-1c;
步骤1-1c、判断i是否大于 如是,则使用第 行像素点的灰度值替换第i行
中相同位置的像素点的灰度值,作为第i行像素点新的灰度值;如否,则使用第 行像素点的灰度值替换第i行中相同位置的像素点的灰度值,作为第i行像素点新的灰度值,其中,[]为取整函数。
3.根据权利要求1所述的大容量图像隐写方法,其特征在于:所述步骤5中的Q表为JPEG标准推荐的亮度量化表或人为设置的表。
4.一种秘密信息提取方法,用于将秘密信息从载体图像中提取出来,其特征在于:包括以下步骤:
步骤1、采用与图像隐写时相同的置乱算法对载密图像进行置乱处理,得到置乱后的载密图像;
步骤2、将置乱后的载密图像划分成大小为N*N的子块,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;
步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息提取,被选定的n个纹理块标记为提取块,n为自然数;
步骤4、分别对n个提取块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第三矩阵,在所有第三矩阵中提取出与图像隐写时嵌入块的DCT系数选定位置相同的m个元素值,得到n个第三系数矩阵Ei,其中Ei=[ei1 ei2 ... eij  ... eim],ei1为第i个提取块的第三矩阵中第1个被提取位置对应的元素值,ei2为第i个提取块的第三矩阵中第2个被提取位置对应的元素值,eij为第i个提取块的第三矩阵中第j个被提取位置对应的元素值,eim为第i个提取块的第三矩阵中第m个被提取位置对应的元素值;
步骤5、对图像隐写时采用的Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第四矩阵,在第四矩阵中提取出与步骤4中所有第三矩阵提取位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B′,其中,B′=[b′1 b′2  ... b′j ... b′m],b′1为第四矩阵中第1个被提取出的元素值,b′2为第四矩阵中第2个被提取出的元素值,b′j为第四矩阵中第j个被提取出的元素值,b′m为第四矩阵中第m个被提取出的元素值;
步骤6、对量化矩阵B′进行计算得到划分矩阵C′;其中,划分矩阵C′的计算公式为:
其中,C′=[c′1 c′2 ... c′j ... c′m],1≤j≤m, 表示向下取整函数;
步骤7、通过第i个提取块的第三系数矩阵Ei和量化矩阵B′计算出第i个秘密分块嵌入时的符号化后的嵌入矩阵D′i;其中,计算公式为:
d′ij=eijmod b′j
其中,mod为求余函数;第i个秘密分块对应的符号化后的嵌入矩阵D′i=[d′i1 d′i2  ... d′ij  ... d′im],d′i1为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第1个元素值,d′i2为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第2个元素值,d′ij为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第j个元素值,d′im为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第m个元素值;
步骤8、将步骤7中第i个秘密分块嵌入时符号化后的嵌入矩阵D′去掉符号,得到第i个秘密分块的嵌入矩阵Di;
步骤9、对照划分矩阵C′中的每个元素值,将划分矩阵C′中的每个元素值作为每个秘密分块中每个元素对应的比特流的位数,依次先后对每个秘密分块对应的嵌入矩阵D′中的元素值进行转换,依次得到每个秘密分块中的m个分块比特流;
步骤10、将所有秘密分块中对应的比特流按照顺序连接起来成为完整的嵌入秘密信息比特流。

说明书全文

一种大容量图像隐写方法和秘密信息提取方法

技术领域

[0001] 本发明涉及图像领域,特别涉及一种大容量图像隐写方法和秘密信息提取方法。

背景技术

[0002] 信息隐藏是从隐藏信息的存在性这一度出发,确保秘密信息传递的安全性,利用人类感官的局限性,在公开传递的多媒体载体中嵌入秘密信息,使第三者无法察觉秘密信息的存在。信息隐藏分为隐写、数值印、信息分存、隐藏信道等多个分支,从最初的军事领域外,当今已应用于商业信息、政府机密信息、个人敏感信息等多领域。
[0003] 常用的图像隐写技术可以分为两类:基于空间域的隐写技术和基于变换域的隐写技术。一般情况下,空间域隐写方法算法简单,信息隐藏量大,但缺点主要是对多数攻击的鲁棒性不强,隐藏算法容易被检测到;基于变换域的隐写技术隐藏信息的鲁棒性较强,其中DCT域是应用最广的变换域算法,但是目前变换域算法的最大不足是嵌入信息量小、提取复杂。

发明内容

[0004] 本发明所要解决的首要技术问题是针对现有技术的现状,提供一种大容量图像隐写方法,该图像隐写方法增加了图像复杂度且在提高嵌入容量的同时,具有较好的不可感知性的。
[0005] 本发明进一步要解决的技术问题是提供一种采用上述图像隐写方法的基础上的秘密信息提取方法。
[0006] 本发明解决上述首要技术问题所采用的技术方案为:一种大容量图像隐写方法,用于将秘密信息嵌入到载体图像中,其特征在于:包括以下步骤:
[0007] 步骤1、对载体图像进行置乱处理,得到置乱后的载体图像;
[0008] 步骤2、将置乱后的载体图像划分大小为N*N的子,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;
[0009] 步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息嵌入,被选定的n个纹理块标记为嵌入块,n为自然数;
[0010] 步骤4、分别对n个嵌入块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第一矩阵,在所有第一矩阵中选择位置相同的m个元素值,得到n个第一系数矩阵Ai,其中Ai=[ai1ai2...aij...aim],ai1为第i个嵌入块的第一矩阵中第1个被选定位置对应的元素值,ai2为第i个嵌入块的第一矩阵中第2个被选定位置对应的元素值,aij为第i个嵌入块的第一矩阵中第j个被选定位置对应的元素值,aim为第i个嵌入块的第一矩阵中第m个被选定位置对应的元素值;i=1、2、3...n,m为自然数;
[0011] 步骤5、将大小为N*N的预设Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第二矩阵,在第二矩阵中提取出与步骤4中所有第一矩阵选择的位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B,其中,B=[b1b2...bj...bm],b1为第二矩阵中第1个被提取出的元素值,b2为第二矩阵中第2个被提取出的元素值,bj为第二矩阵中第j个被提取出的元素值,bm为第二矩阵中第m个被提取出的元素值;
[0012] 步骤6、对量化矩阵B进行计算得到划分矩阵C,并对划分矩阵C中所有元素求和,作为每个嵌入块的块容量;其中,划分矩阵C的计算公式为:
[0013]
[0014] C=[c1c2...cj...cm],1≤j≤m, 表示向下取整函数;
[0015] 每个嵌入块的块容量等于c1+c2+...cj+...+cm;
[0016] 步骤7、将需要嵌入的秘密信息转换成二进制的比特流,然后以每个嵌入块的块容量为单位,将秘密信息的二进制的比特流划分成k个秘密分块;
[0017] 步骤8、对照划分矩阵C中的每个元素值,将划分矩阵C中的每个元素值作为划分位数,依次先后对每个秘密分块中的比特流进行划分,每个秘密分块被划分成m个分块比特流,将每个秘密分块中m个分块比特流转换成十进制数,依次得到第l个秘密分块的m个元素值,记为第l个秘密分块的嵌入矩阵Dl,Dl=[dl1dl2...dlj...dlm],dl1为第l个秘密分块中第一个分块比特流转换成的十进制数,dl2为第l个秘密分块中第二个分块比特流转换成的十进制数,dlj为第l个秘密分块中第j个分块比特流转换成的十进制数,dlm为第l个秘密分块中第m个分块比特流转换成的十进制数,l=1、2、3...k;1≤j≤m;
[0018] 步骤9、依次将k个秘密分块按照顺序嵌入到嵌入块中:根据第i个嵌入块的第一系数矩阵Ai、量化矩阵B和第i个秘密分块的嵌入矩阵Di,计算第i个嵌入块的第一系数矩阵Ai对应的新系数值,作为第i个嵌入块的第二系数矩阵Fi;其中,计算公式为:
[0019]
[0020] 其中,Fi=[fi1fi2...fij...fim],fi1为第i个嵌入块的第二系数矩阵Fi中第1个元素值,fi2为第i个嵌入块的第二系数矩阵Fi中第2个元素值,fij为第i个嵌入块的第二系数矩阵Fi中第j个元素值,fim为第i个嵌入块的第二系数矩阵Fi中第m个元素值,i=1、2、3...n,1≤j≤m; 表示向下取整函数,d′ij为符号化后的第i个秘密分块的嵌入矩阵Di中第j个元素值,符号化后的第i个秘密分块的嵌入矩阵Di与第i个嵌入块的第一系数矩阵Ai中对应位置的元素符号相同;
[0021] 步骤10、使用第i个嵌入块的第二系数矩阵Fi中元素值替换与第i个嵌入块的第一系数矩阵Ai中对应位置的元素值,且使用替换后的第一系数矩阵Ai相应替换第一矩阵中对应位置的元素值,且对替换后的第一矩阵进行Z字形扫描的逆操作,使第一矩阵重新转换成二维矩阵,得到第i个嵌入块新的DCT系数矩阵,将新的DCT系数矩阵替换成该第i个嵌入块的DCT系数矩阵;
[0022] 步骤11、对每个子块进行DCT反变换,将所有进行DCT反变换后的子块按照顺序合成为第二图像;
[0023] 步骤12、对第二图像进行反置乱处理,得到载密图像。
[0024] 具体的,所述步骤1中从以下四种置乱算法中任意选择一种置乱算法对大小为N1*N2的载体图像进行置乱处理,其中第一种置乱算法的具体步骤为:
[0025] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0026] 步骤1-1b、判断i+j的值是否能被2整除,如是,则转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
[0027] 步骤1-1c、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
[0028] 第二种置乱算法的具体步骤为:
[0029] 步骤1-1a、判断载体图像所有像素点的数量是否在设定范围内,如是,则转入步骤1-1b;如否,则结束;
[0030] 步骤1-1b、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0031] 步骤1-1c、判断i+j的值是否能被2整除,如是,则转入步骤1-1d;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
[0032] 步骤1-1d、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
[0033] 第三种置乱算法的具体步骤为:
[0034] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0035] 步骤1-1b、判断i+j的值是否能被2整除,如是,则取载体图像的第i行第j列像素点的灰度值的反转值作为该像素点新的灰度值,转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变,转入步骤1-1c;;
[0036] 步骤1-1c、判断i是否为偶数,如是,则依次使用第i行第j列像素点的灰度值替换第i行第j-1列像素点的灰度值,使用第i行第1列像素点的灰度值替换第i行第N2列像素点的灰度值;如否,则结束。
[0037] 第四种置乱算法的具体步骤为:
[0038] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0039] 步骤1-1b、判断i是否为偶数,如是,则保持载体图像的第i行所有列像素点的灰度值不变;如否,则转入步骤1-1c;
[0040] 步骤1-1c、判断i是否大于 如是,则使用第 行像素点的灰度值替换第i行中相同位置的像素点的灰度值,作为第i行像素点新的灰度值;如否,则使用第行像素点的灰度值替换第i行中相同位置的像素点的灰度值,作为第i行像素点新的灰度值,其中,[]为取整函数。
[0041] 作为优选,所述步骤5中的Q表为JPEG标准推荐的亮度量化表或人为设置的表。
[0042] 一种秘密信息提取方法,用于将秘密信息从载体图像中提取出来,其特征在于:包括以下步骤:
[0043] 步骤1、采用与图像隐写时相同的置乱算法对载密图像进行置乱处理,得到置乱后的载密图像;
[0044] 步骤2、将置乱后的载密图像划分成大小为N*N的子块,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;
[0045] 步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息提取,被选定的n个纹理块标记为提取块,n为自然数;
[0046] 步骤4、分别对n个提取块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第三矩阵,在所有第三矩阵中提取出与图像隐写时嵌入块的DCT系数选定位置相同的m个元素值,得到n个第三系数矩阵Ei,其中Ei=[ei1ei2...eij...eim],ei1为第i个提取块的第三矩阵中第1个被提取位置对应的元素值,ei2为第i个提取块的第三矩阵中第2个被提取位置对应的元素值,eij为第i个提取块的第三矩阵中第j个被提取位置对应的元素值,eim为第i个提取块的第三矩阵中第m个被提取位置对应的元素值;
[0047] 步骤5、对图像隐写时采用的Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第四矩阵,在第四矩阵中提取出与步骤4中所有第三矩阵提取位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B′,其中,B′=[b′1b′2...b′j...b′m],b′1为第四矩阵中第1个被提取出的元素值,b′2为第四矩阵中第2个被提取出的元素值,b′j为第四矩阵中第j个被提取出的元素值,b′m为第四矩阵中第m个被提取出的元素值;
[0048] 步骤6、对量化矩阵B′进行计算得到划分矩阵C′;其中,划分矩阵C′的计算公式为:
[0049]
[0050] 其中,C′=[c′1c′2...c′j...c′m],1≤j≤m, 表示向下取整函数;
[0051] 步骤7、通过第i个提取块的第三系数矩阵Ei和量化矩阵B′计算出第i个秘密分块嵌入时的符号化后的嵌入矩阵D′i;其中,计算公式为:
[0052] d′ij=eij mod b′j
[0053] 其中,mod为求余函数;第i个秘密分块对应的符号化后的嵌入矩阵D′i=[d′i1d′i2...d′ij...d′im],d′i1为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第1个元素值,d′i2为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第2个元素值,d′ij为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第j个元素值,d′im为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第m个元素值;
[0054] 步骤8、将步骤7中第i个秘密分块嵌入时符号化后的嵌入矩阵D′去掉符号,得到第i个秘密分块的嵌入矩阵Di;
[0055] 步骤9、对照划分矩阵C′中的每个元素值,将划分矩阵C′中的每个元素值作为每个秘密分块中每个元素对应的比特流的位数,依次先后对每个秘密分块对应的嵌入矩阵D′中的元素值进行转换,依次得到每个秘密分块中的m个分块比特流;
[0056] 步骤10、将所有秘密分块中对应的比特流按照顺序连接起来成为完整的嵌入秘密信息比特流。
[0057] 与现有技术相比,本发明的优点在于:通过对载体图像进行置乱处理,提高了载体图像的复杂度,且通过任意选择4种中的其中一种,提升了图像传输保密性且提升了图像隐写的安全性;且通过对DCT块进行分类,选择出纹理块作为嵌入容量大的嵌入块,因此在提高嵌入容量的同时,具有较好的不可感知性;在DCT域中进行隐写,能够隐藏任意类型的秘密信息,且通过置乱算法增加图像复杂度的同时,结合模糊规则进行DCT块分类,然后进行DCT域的信息隐藏,较好实现“大容量”和“盲提取”,并且算法有较大变化空间,以适应不同需求。附图说明
[0058] 图1为本发明实施例中的图像隐写方法的流程图
[0059] 图2为本发明实施例中的秘密信息提取方法的流程图。

具体实施方式

[0060] 以下结合附图实施例对本发明作进一步详细描述。
[0061] 如图1所示,一种大容量图像隐写方法,用于将秘密信息嵌入到载体图像中,包括以下步骤:
[0062] 步骤1、对载体图像进行置乱处理,得到置乱后的载体图像;
[0063] 其中,本实施例中从四种置乱算法中任意选择其中一种置乱算法对大小为N1*N2的载体图像进行置乱处理,其中,第一种置乱算法的具体步骤为:
[0064] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0065] 步骤1-1b、判断i+j的值是否能被2整除,如是,则转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
[0066] 步骤1-1c、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
[0067] 本实施例中,该置乱过程不是对全部像素点进行置乱,而是通过判断行与列的属性再进行选择性的置乱,该置乱算法改变部分像素的灰度值,选择部分行和列,以灰度值128为分界值,降低图像中的高灰度值,提升图像中的低灰度值,完成图像的灰度值置乱。采用该置乱算法对lena图进行置乱时,图像复杂度从5.7提高到127.5,提高比例21倍,而图像的容量从547104提高到708512,提高了29.5%;
[0068] 第二种置乱算法的具体步骤为:
[0069] 步骤1-1a、判断载体图像所有像素点的数量是否在设定范围内,如是,则转入步骤1-1b;如否,则结束;
[0070] 步骤1-1b、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0071] 步骤1-1c、判断i+j的值是否能被2整除,如是,则转入步骤1-1d;如否,则保持载体图像的第i行第j列像素点的灰度值不变;
[0072] 步骤1-1d、判断载体图像的第i行第j列像素点的灰度值是否大于128,如是,则将载体图像的第i行第j列像素点的灰度值减去128;如否,则将载体图像的第i行第j列像素点的灰度值加上128。
[0073] 本实施例中,该置乱过程在第一种置乱算法的基础上,用一个变量控制置乱的程度,并部分置乱图像的灰度值,提出一个变量count控制置乱像素点的数量,在限定像素点数量的范围内改变像素点的灰度值,选择部分行和列,以灰度值128为分界值,降低图像中的高灰度值,提升图像中的低灰度值,完成图像的灰度值置乱;通过对lena图进行置乱时,图像复杂度随着像素点的设定变量count的值变化而变化,原图的复杂为5.7,当count值为20000时,图像复杂度为98,最高图像复杂度可以提高到127.5,提高比例21倍,而图像的容量从547104提高到708336,提高了29.5%;
[0074] 第三种置乱算法的具体步骤为:
[0075] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0076] 步骤1-1b、判断i+j的值是否能被2整除,如是,则取载体图像的第i行第j列像素点的灰度值的反转值作为该像素点新的灰度值,转入步骤1-1c;如否,则保持载体图像的第i行第j列像素点的灰度值不变,转入步骤1-1c;;
[0077] 步骤1-1c、判断i是否为偶数,如是,则依次使用第i行第j列像素点的灰度值替换第i行第j-1列像素点的灰度值,使用第i行第1列像素点的灰度值替换第i行第N2列像素点的灰度值;如否,则结束。
[0078] 本实施例中,该置乱算法是通过像素点分层次进行灰度值相互替换,并与灰度反转值相结合,多重改变灰度值进行置乱,对偶数行的像素点的灰度值进行左移,依次使用后一位像素点的灰度值替换前一位像素点的灰度值,且使用偶数行第一列的灰度值替换同一行中最后一列的灰度值;通过对lena图进行置乱时,图像复杂度从5.7提高到65.1,提高比例10.4倍,而图像的容量从547104提高到679184,提高了24.1%;
[0079] 第四种置乱算法的具体步骤为:
[0080] 步骤1-1a、计算载体图像的每个像素点的行号和列号之和,其中,载体图像的任一像素点用第i行第j列表示,i=1、2、3...N1,j=1、2、3..N2;
[0081] 步骤1-1b、判断i是否为偶数,如是,则保持载体图像的第i行所有列像素点的灰度值不变;如否,则转入步骤1-1c;
[0082] 步骤1-1c、判断i是否大于 如是,则使用第 行像素点的灰度值依次替换第i行中相同位置的像素点的灰度值,作为第i行像素点新的灰度值;如否,则使用第行像素点的灰度值依次替换第i行中相同位置的像素点的灰度值,作为第i行像素点新的灰度值,其中,[]为取整函数。
[0083] 本实施例中,该置乱算法采用图像变换,每一行中偶数位的像素点不变,将奇数位像素点与不同行的相同位置的元素对调。通过对lena图进行置乱时,图像复杂度从5.7提高到29.3,提高比例5.1倍,而图像的容量从547104提高到663360,提高了21.4%。
[0084] 随机选择上述四种置乱算法中的其中一种,对载体图像进行置乱后,增强载体图像的复杂度,然后在载体图像的变换域中完成秘密信息的嵌入,在置乱处理后的图像进行DCT变换中,DCT系数中高频系数的能量明显提升。
[0085] 步骤2、将置乱后的载体图像划分大小为N*N的子块,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;本实施例中,N=8或N=16;
[0086] 步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息嵌入,被选定的n个纹理块标记为嵌入块,n为自然数;
[0087] 具体分类方法参见文献:刘虎,面向数字图像的大容量隐写算法研究[D].解放军信息工程大学,2012;对DCT块进行分类的主要目的在于确定哪些子块可以嵌入秘密信息以及适合嵌入容量较大的信息。由于人类视觉感知的模糊性,采用模糊理论进行DCT块分类;对于一个具体的DCT块,可以设法区分为嵌入容量大的纹理块以及嵌入秘密信息较少的平滑块,这种分类主要由块的频率特性和纹理复杂性确定。图像的纹理特性可由AC系数的高频部分代表,则可以根据变换后DCT块高频系数之和的大小来区分纹理块和平滑块,对DCT后的子块交流分量AC的高频部分计算系数之和,值较大者表示此块纹理复杂,相反则表示此块较平滑。同时由于DC系数代表子块的平均亮度,可根据各块的DC系数值确定归属的亮度区域;
[0088] 具体分块的步骤为:
[0089] 将DCT块的直流系数DC和高频系数AC的能量值进行归一化处理,用高、中、低三个模糊集合表示,通过这些模糊集合确定相应隶属度值,根据模糊分类规则计算各类的隶属度,最后根据最大隶属度原则利用模糊关系运算得到三个类别。
[0090] 对于载体图像经过DCT变换后的任意子块,根据其高频AC系数和DC系数能量值,按照以上算法即可求出DCT块对应的类别。根据模糊分类的原则,亮度低且高频系数能量高,或者亮度高且高频系数能量高的块,其类别为2,因纹理复杂且处在低亮或高亮,信息嵌入强度应最大;亮度中等且高频系数能量低,说明为中亮平滑块,类别为0,不宜嵌入信息;嵌入中间的位类别1,适合嵌入中量信息。本方法为了增大嵌入容量的同时,又保证一定的图像不可感知性,选择类别为2和1的子块进行秘密信息嵌入。
[0091] 步骤4、分别对n个嵌入块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第一矩阵,在所有第一矩阵中选择位置相同的m个元素值,得到n个第一系数矩阵Ai,其中Ai=[ai1ai2...aij...aim],ai1为第i个嵌入块的第一矩阵中第1个被选定位置对应的元素值,ai2为第i个嵌入块的第一矩阵中第2个被选定位置对应的元素值,aij为第i个嵌入块的第一矩阵中第j个被选定位置对应的元素值,aim为第i个嵌入块的第一矩阵中第m个被选定位置对应的元素值;i=1、2、3...n,m为自然数;
[0092] 本实施例中,在第一矩阵中选择位置时是自由选择的,可以连续选取也可断开选取。
[0093] 步骤5、将大小为N*N的预设Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第二矩阵,在第二矩阵中提取出与步骤4中所有第一矩阵选择的位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B,其中,B=[b1b2...bj...bm],b1为第二矩阵中第1个被提取出的元素值,b2为第二矩阵中第2个被提取出的元素值,bj为第二矩阵中第j个被提取出的元素值,bm为第二矩阵中第m个被提取出的元素值;
[0094] Q表是通信双方需共同拥有的“密钥”的一个重要组成部分,并且并不唯一,Q表为JPEG标准推荐的亮度量化表或人为设置的表,可以对JPEG标准推荐的亮度量化表其中的某些值作修改作为Q表,或重新设计一张表,甚至Q表的所有值可以取同一个数值;子块的大小随着Q表的大小变化而相应改变;
[0095] 步骤6、对量化矩阵B进行计算得到划分矩阵C,并对划分矩阵C中所有元素求和,作为每个嵌入块的块容量;其中,划分矩阵C的计算公式为:
[0096]
[0097] C=[c1c2...cj...cm],1≤j≤m, 表示向下取整函数;
[0098] 每个嵌入块的块容量等于c1+c2+...cj+...+cm;
[0099] 步骤7、将需要嵌入的秘密信息转换成二进制的比特流,然后以每个嵌入块的块容量为单位,将秘密信息的二进制的比特流划分成k个秘密分块;
[0100] 其中,秘密信息划分之后的秘密分块的个数小于等于嵌入块的个数,即k≤n;依次按照顺序将秘密分块嵌入到嵌入块中;
[0101] 步骤8、对照划分矩阵C中的每个元素值,将划分矩阵C中的每个元素值作为划分位数,依次先后对每个秘密分块中的比特流进行划分,每个秘密分块被划分成m个分块比特流,将每个秘密分块中m个分块比特流转换成十进制数,依次得到第l个秘密分块的m个元素值,记为第l个秘密分块的嵌入矩阵Dl,Dl=[dl1dl2...dlj...dlm],dl1为第l个秘密分块中第一个分块比特流转换成的十进制数,dl2为第l个秘密分块中第二个分块比特流转换成的十进制数,dlj为第l个秘密分块中第j个分块比特流转换成的十进制数,dlm为第l个秘密分块中第m个分块比特流转换成的十进制数,l=1、2、3...k;1≤j≤m;
[0102] 步骤9、依次将k个秘密分块按照顺序嵌入到嵌入块中:根据第i个嵌入块的第一系数矩阵Ai、量化矩阵B和第i个秘密分块的嵌入矩阵Di,计算第i个嵌入块的第一系数矩阵Ai对应的新系数值,作为第i个嵌入块的第二系数矩阵Fi;其中,计算公式为:
[0103]
[0104] 其中,Fi=[fi1fi2...fij...fim],fi1为第i个嵌入块的第二系数矩阵Fi中第1个元素值,fi2为第i个嵌入块的第二系数矩阵Fi中第2个元素值,fij为第i个嵌入块的第二系数矩阵Fi中第j个元素值,fim为第i个嵌入块的第二系数矩阵Fi中第m个元素值,i=1、2、3...n,1≤j≤m; 表示向下取整函数,d′ij为符号化后的第i个秘密分块的嵌入矩阵Di中第j个元素值,符号化后的第i个秘密分块的嵌入矩阵Di与第i个嵌入块的第一系数矩阵Ai中对应位置的元素符号相同;
[0105] 其中,当第i个嵌入块的第一系数矩阵Ai的元素值aij为正数时,则d′ij为正数;反之,当第i个嵌入块的第一系数矩阵Ai的元素值aij为负数时,则d′ij为负数;
[0106] 步骤10、使用第i个嵌入块的第二系数矩阵Fi中元素值替换与第i个嵌入块的第一系数矩阵Ai中对应位置的元素值,且使用替换后的第一系数矩阵Ai相应替换第一矩阵中对应位置的元素值,且对替换后的第一矩阵进行Z字形扫描的逆操作,使第一矩阵重新转换成二维矩阵,得到第i个嵌入块新的DCT系数矩阵,将新的DCT系数矩阵替换成该第i个嵌入块的DCT系数矩阵;
[0107] 步骤11、对每个子块进行DCT反变换,将所有进行DCT反变换后的子块按照顺序合成为第二图像;
[0108] 步骤12、对第二图像进行反置乱处理,得到载密图像。
[0109] 为了更好的理解此方法,现举一个简单的例子来阐述。首先,任意选择一种置乱算法对载体图像进行置乱处理,将置乱后的载体图像划分成大小为8*8的子块,对每个子块进行DCT变换,得到每个子块的DCT块,对每个DCT块进行分类,选择n个嵌入容量大的纹理块进行秘密信息嵌入,分别对n个嵌入块的DCT系数矩阵进行Z字形扫描,得到每个嵌入块的第一矩阵,然后选择所有嵌入块的第一矩阵中的第9至27位元素,并对Q表进行Z字形扫描,其中,Q表为JPEG标准推荐的亮度量化表;
[0110] Q=[16 11 10 16 24 40 51 61
[0111] 12 12 14 19 26 58 60 55
[0112] 14 13 16 24 40 57 69 56
[0113] 14 17 22 29 51 87 80 62
[0114] 18 22 37 56 68 109 103 77
[0115] 24 35 55 64 81 104 113 92
[0116] 49 64 78 87 103 121 120 101
[0117] 72 92 95 98 112 100 103 99]
[0118] 提取出Q表Z字形扫描之后的第二矩阵中的第9位至第27位元素为:13 14 18 17 1619 24 40 26 24 22 22 24 49 35 37 29 40 58,将其按照顺序组成量化矩阵,并对该量化矩阵进行计算得到划分矩阵为:3 3 4 4 4 4 4 5 4 4 4 4 4 5 5 5 4 5 5,划分矩阵中所有元素值之和为80,因此每个嵌入块的块容量为80bit,假设需要嵌入的秘密信息中按照块容量为单位,将其中一个秘密分块内的10byte的秘密信息80 81 82 83 84 85 86 87 88 
89的二进制比特流进行划分,得到010、100、0001、0100、0101、0100、1001、01001、1010、
1010、0010、1010、1010、10110、01010、11101、0110、00010、11010,并将其划分之后的比特流转换成十进制数,得到2 4 1 4 5 4 9 9 10 10 2 10 10 38 10 29 6 2 26,将其排列组成该秘密分块的嵌入矩阵D,根据该秘密分块对应的嵌入块的第一系数矩阵A、量化矩阵B和嵌入矩阵D进行后续的操作,得到该嵌入块新的DCT系数矩阵,采用同样的方法得到每个嵌入块新的DCT系数矩阵,并对每个子块进行DCT反变换,将其反变换后的子块按照顺序合成图像,并进行反置乱处理,得到载密图像。
[0119] 秘密信息提取方法是盲提取方式,是图像隐写过程的逆过程,需要提前传递给提取方的内容有:Q表,选定的系数位置和图像置乱方法,其中,如图2所示,秘密信息提取方法的具体步骤为:
[0120] 步骤1、采用与图像隐写时相同的置乱算法对载密图像进行置乱处理,得到置乱后的载密图像;
[0121] 步骤2、将置乱后的载密图像划分成大小为N*N的子块,并对每个子块进行DCT变换,得到每个子块的DCT块,每个DCT块中的元素值为每个子块相应位置的DCT系数,其中,N为自然数;
[0122] 步骤3、对每个DCT块进行分类,分为纹理块和平滑块,选择纹理块进行秘密信息提取,被选定的n个纹理块标记为提取块,n为自然数;
[0123] 步骤4、分别对n个提取块的DCT系数进行Z字形扫描,分别得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第三矩阵,在所有第三矩阵中提取出与图像隐写时嵌入块的DCT系数选定位置相同的m个元素值,得到n个第三系数矩阵Ei,其中Ei=[ei1ei2...eij...eim],ei1为第i个提取块的第三矩阵中第1个被提取位置对应的元素值,ei2为第i个提取块的第三矩阵中第2个被提取位置对应的元素值,eij为第i个提取块的第三矩阵中第j个被提取位置对应的元素值,eim为第i个提取块的第三矩阵中第m个被提取位置对应的元素值;
[0124] 步骤5、对图像隐写时采用的Q表进行Z字形扫描,得到按照扫描顺序排列而成的一维矩阵,将该一维矩阵标记为第四矩阵,在第四矩阵中提取出与步骤4中所有第三矩阵提取位置相同的m个元素值,将m个元素值按照顺序组成量化矩阵B′,其中,B′=[b′1b′2...b′j...b′m],b′1为第四矩阵中第1个被提取出的元素值,b′2为第四矩阵中第2个被提取出的元素值,b′j为第四矩阵中第j个被提取出的元素值,b′m为第四矩阵中第m个被提取出的元素值;
[0125] 步骤6、对量化矩阵B′进行计算得到划分矩阵C′;其中,划分矩阵C′的计算公式为:
[0126]
[0127] 其中,C′=[c′1c′2...c′j...c′m],1≤j≤m, 表示向下取整函数;
[0128] 步骤7、通过第i个提取块的第三系数矩阵Ei和量化矩阵B′计算出第i个秘密分块嵌入时的符号化后的嵌入矩阵D′i;其中,计算公式为:
[0129] d′ij=eij mod b′j
[0130] 其中,mod为求余函数;第i个秘密分块对应的符号化后的嵌入矩阵D′i=[d′i1d′i2...d′ij...d′im],d′i1为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第1个元素值,d′i2为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第2个元素值,d′ij为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第j个元素值,d′im为第i个秘密分块对应的符号化后的嵌入矩阵D′i中的第m个元素值;
[0131] 步骤8、将步骤7中第i个秘密分块嵌入时符号化后的嵌入矩阵D′去掉符号,得到第i个秘密分块的嵌入矩阵Di;
[0132] 步骤9、对照划分矩阵C′中的每个元素值,将划分矩阵C′中的每个元素值作为每个秘密分块中每个元素对应的比特流的位数,依次先后对每个秘密分块对应的嵌入矩阵D′中的元素值进行转换,依次得到每个秘密分块中的m个分块比特流;
[0133] 步骤10、将所有秘密分块中对应的比特流按照顺序连接起来成为完整的嵌入秘密信息比特流。
[0134] 本方法有较大的灵活性,在保证秘密信息“不可见”和“大容量”的同时,经过少许变化可以转化为多种隐藏方法和隐藏结果。首先是置乱算法的随机选择性;通过对载体图像的置乱处理,图像具有均匀频谱的特性,使得其中高频系数的能量明显提高,本方法中列举的四种置乱算法处理后的图像都具有较强的复杂度,在实际运行中,可以随机选择四种置乱算法;其次是Q表的可变化性。当Q表取相同的值,特别是取2的较小幂次方时,则算法相当于在各个系数的最低位进行秘密信息的嵌入,比如全部取值2,算法则等同于空域LSB的最低位嵌入秘密信息,如果全部取值为4,算法则相当于与在各系数的最低2位嵌入秘密信息,全部取值为8,算法则相当于与在各系数的最低3位嵌入秘密信息;并且因为每个小块的DCT系数改变量由Q表计算得到的划分向量决定,当改变Q表的部分值,可以改变信息嵌入总量和嵌入后图像质量,部分区域中如果DCT系数改变量较大,会影响隐秘图像的质量,在具体实验中,可以根据嵌入需要改变部分数值,平衡各个参数以求达到最佳嵌入效果。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈