基于跳跃序列的面向JPEG的可逆信息隐藏方法转让专利

申请号 : CN202010554929.4

文献号 : CN111756950B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢小竹张真诚李黎骆挺

申请人 : 绍兴聚量数据技术有限公司杭州电子科技大学

摘要 :

本发明提出一种基于跳跃序列的面向JPEG图像的可逆信息隐藏方法,在保证图像品质和图像文件大小的同时,尽可能提高藏量,此外,实现图像的完全恢复。首先,使用熵解码器对原始JPEG图像进行解码,得到DCT系数块;其次,将每个DCT系数块的正/负跳跃序列向右/左移动,以腾出空间;然后,在每个DCT系数块中,选用值为0和‑1的系数进行多层的信息藏入;最后,使用熵编码器将隐秘DCT块编码成隐秘JPEG图像。本发明一是充分利用跳跃序列的特点,减少不必要的系数扩张,改进了图像品质;二是采用多层藏入的方式,提升了藏量。

权利要求 :

1.一种基于跳跃序列的面向JPEG的可逆信息隐藏方法,其特征在于步骤如下:S1:使用熵解码器对待嵌入秘密信息的原始JPEG图像OI进行解析,从而获取到若干8×

8的DCT系数块;

针对每一个DCT系数块执行S2~S6,形成隐秘DCT系数块;

S2:对DCT系数块中大于1的AC系数进行升序排序得到正序列{p1,p2,…,pk},对小于0的AC系数进行降序排序得到负序列{n1,n2,…,nt};

S3:在正序列{p1,p2,…,pk}中找到正跳跃点pi,1≤i≤k,将跳跃点及其之前的系数值均加1变为{p1+1,…,pi+1},跳跃点后面的序列{pi+1,pi+2,…,pk}保持不变,记录正跳跃点位置i;

S4:在负序列{n1,n2,…,nt}中找到负跳跃点nj,1≤j≤t,将跳跃点及其之前的系数值均减1变为{n1‑1,…,nj‑1},后面序列{nj+1,nj+2,…,nt}保持不变,记录负跳跃点位置j;

S5:用Zig‑Zag方式取出DCT系数块中的0和1序列得{c1,c2,…,cr},使得其中len1为DCT系数块中最后一个非0系数自身及其之前的序列中0和1的数量, 表示向下取整;

S6:将序列{c1,c2,…,cr}按顺序平均分组,每组7个系数,然后在每组进行多层秘密信息的藏入,实现整个图像的信息隐藏过程;

S7:使用熵编码器将隐秘DCT系数块编码成隐秘JPEG图像OI′。

2.根据权利要求1所述的基于跳跃序列的面向JPEG的可逆信息隐藏方法,其特征在于S2的具体过程如下:针对当前的DCT系数块,对块中大于1的AC系数进行升序排序得到正序列{p1,p2,…,pk},即1<p1≤p2≤…≤pk;对块中小于0的AC系数进行降序排序得到负序列{n1,n2,…,nt},即0>n1≥n2≥…≥nt。

3.根据权利要求2所述的基于跳跃序列的面向JPEG的可逆信息隐藏方法,其特征在于S3的具体过程如下:在正序列{p1,p2,…,pk}中找到第i个正跳跃点pi,1≤i≤k,将跳跃点及其之前的系数值均加1得到{p1+1,…,pi+1},跳跃点之后的系数{pi+1,pi+2,…,pk}保持不变;

其中正跳跃点pi定义如下:从左往右扫描正序列,第一个符合条件(1)的即为正跳跃点:pi+1>pi+1     (1)。

4.根据权利要求3所述的基于跳跃序列的面向JPEG的可逆信息隐藏方法,其特征在于S4的具体过程如下:在负序列{n1,n2,…,nt}中找到第j个负跳跃点nj,1≤j≤t,将跳跃点及其之前的系数值均减1得{n1‑1,…,nj‑1},将跳跃点之后的系数{nj+1,nj+2,…,nt}保持不变;

其中负跳跃点nj定义如下:从左往右扫描负序列,第一个符合条件(2)的即为负跳跃点:nj>nj+1+1     (2)。

5.根据权利要求4所述的基于跳跃序列的面向JPEG的可逆信息隐藏方法,其特征在于S6的具体过程如下:S61:将序列{c1,c2,…,cr}平均分组,每组7个系数,记为序列组{ch,1,ch,2,…,ch,7},其中h=1,2,…,r/7;

S62:将待藏入当前DCT系数块中的秘密信息分组,每组3个比特,并转为八进制数,得到八进制数序列{d1,d2,…,dm},dl表示第l组秘密信息的八进制数,dl=0,1,…,7,l=1,2,…,m;

S63:从八进制数序列左侧开始,顺序提取一个待藏入数dl,按顺序将其藏入第一组序列组{ch,1,ch,2,…,ch,7}中,通过修改序列组中第dl个系数 达到藏入目的,藏入规则如下:若dl=0,则序列组不做任何修改;

若dl≠0,则按公式(3)进行藏入,其中 表示隐秘系数:S64:在八进制数序列中顺序提取下一个待藏入数df,若df>dl且dl≠0,则继续在当前序列组藏入,否则藏入到下一个序列组中,藏入规则与S63中的藏入规则相同;

S65:不断重复S64,直到完成信息藏入。

6.一种基于跳跃序列的面向JPEG的可逆信息隐藏中信息提取方法,其特征在于,根据权利要求1~5任一所述的信息隐藏方法得到嵌入秘密信息的隐秘JPEG图像,从隐秘JPEG图像OI′中提取嵌入的秘密信息,提取过程为:S81:使用熵解码器对隐秘JPEG图像OI′进行解析,从而获取到若干8×8的隐秘DCT系数块;

S82:用Zig‑Zag方式顺序取出隐秘DCT块中的‑1,0,1和2序列得到{c′1,c′2,…,c′r},使得 其中len2为最后一个非0系数自身及其之前的序列中‑1,0,1和2的数量,表示向下取整;

S83:将序列{c′1,c′2,…,c′r}平均分组,每组7个系数,记为序列组{c′h,1,c′h,2,…,c′h,7},其中h=1,2,…,r/7;

S84:按顺序从序列组{c′h,1,c′h,2,…,c′h,7}中提取秘密信息,具体如下:若序列中不存在‑1和2,则提取秘密信息0,即d′=0;

若序列中存在‑1或2,以‑1和2在序列中的位置p代表秘密信息,即d′=p;

S85:将S84提取出的八进制转为二进制即为最终的秘密信息。

7.一种基于跳跃序列的面向JPEG的可逆信息隐藏中图像恢复方法,其特征在于,根据权利要求1~5任一所述的信息隐藏方法得到嵌入秘密信息的隐秘JPEG图像,从隐秘JPEG图像OI′中恢复得到原始JPEG图像,恢复过程为:S91:使用解码器对隐秘JPEG图像OI′进行解析,从而获取到若干8×8的隐秘DCT系数块;

S92:针对每一个隐秘DCT系数块,将值为‑1的AC系数恢复为0,将值为2的AC系数恢复为

1;

S93:针对每一个DCT系数块,对大于2的系数进行升序排序得到正序列{p′1,p′2,…,p′k},即2<p′1≤p′2≤…≤p′k;对小于‑1的系数进行降序排序得到负序列{n′1,n′2,…,n′t},即‑1>n′1≥n′2≥…≥n′t;根据正负跳跃点位置信息i和j,得到正负跳跃点p′i和n′j;

最后根据公式(4)和(5)恢复DCT系数:

S94:使用熵编码器将恢复的DCT系数块编码,得到恢复的JPEG图像。

说明书 :

基于跳跃序列的面向JPEG的可逆信息隐藏方法

技术领域

[0001] 本发明属于压缩域可逆信息隐藏领域,具体涉及一种基于跳跃序列和多层藏入的可逆信息隐藏方法,该方法能对JPEG图像进行可逆信息隐藏,在保证图像质量的前提下大幅度提高了隐藏容量,并可完全恢复JPEG图像。

背景技术

[0002] 数字图像在日常工作和生活中的使用非常普遍也不可或缺,然而,因为对数字图像的复制、编辑、传播等操作日益方便且容易,因此保护图像的版权及内容的真实性和完整性具有迫切的现实意义。针对这一需求,信息隐藏技术应运而生,即通过发送端在原始图像中不可感知地嵌入用于所有权标识或完整性检测的信息,并在接收端利用提取出的信息来实现对图像的认证。对于诸如医学诊断、法庭证据、军事侦察等领域使用的数字图像,由于其特殊性一般不允许因数据嵌入造成接收端收到的图像有任何失真,因此可在数据提取后完全恢复出原始图像的可逆信息隐藏技术已得到广泛研究。
[0003] 可逆信息隐藏算法主要分为三类,即空间域算法,压缩域算法和频域算法。空间域的经典算法是2003年Tian等人提出的基于差值扩张(DE)和2006年Ni等人提出的基于直方图偏移(HS)算法。压缩域算法通过对原始图像进行无损压缩以获取空间藏入秘密信息,如2015年Ou和Sun提出了AMBTC压缩码的信息隐藏算法,2016年Bai和Chang提出了使用汉明码(7,4)的AMBTC压缩图像的信息隐藏方法。因JPEG图像在实际生活中的广泛应用,越来越多学者对频域算法进行了研究,将秘密信息藏在量化后的DCT系数中。2017年,Chang等人将秘密信息藏在值为0的DCT系数,该方法可以取得较高藏量,但是藏入信息后的图像品质失真较为严重,且增加图像的文件大小。2016年,Huang等人提出了基于直方图偏移的JPEG图像可逆信息隐藏法,将秘密信息藏在值为‑1和1的DCT系数中。Huang等人的方法在QF比较高的JPEG图像中能取得较好的效果,但是在QF较低的JPEG图像中,藏量很低。2017年,Wedaj等人通过设计新的系数选择策略改进了Huang等人的方法,取得了更好的图像品质,不过没有带来藏量的提升。

发明内容

[0004] 在综合考虑信息藏量、图像品质、图像文件大小等因素后,本文提出一种基于跳跃序列的JPEG图像可逆信息隐藏算法,在保证图像品质和图像文件大小的同时,尽可能提高藏量,此外,实现图像的完全恢复。首先,使用熵解码器对原始JPEG图像进行解码,得到DCT系数块;其次,将每个DCT系数块的正/负跳跃序列向右/左移动,以腾出空间;然后,在每个DCT系数块中,选用值为0和‑1的系数进行多层信息的藏入;最后,使用熵编码器将隐秘DCT块编码成隐秘JPEG图像。
[0005] 本发明的技术方案步骤如下:
[0006] 一种基于跳跃序列的面向JPEG的可逆信息隐藏方法,其步骤如下:
[0007] S1:使用熵解码器对待嵌入秘密信息的原始JPEG图像OI进行解析,从而获取到若干8×8的DCT系数块;
[0008] 针对每一个DCT系数块执行S2~S6,形成隐秘DCT系数块;
[0009] S2:对DCT系数块中大于1的AC系数进行升序排序得到正序列{p1,p2,…,pk},对小于0的AC系数进行降序排序得到负序列{n1,n2,…,nt};
[0010] S3:在正序列{p1,p2,…,pk}中找到正跳跃点pi,1≤i≤k,将跳跃点及其之前的系数往右移动一个位置变为{p1+1,…,pi+1},跳跃点后面的序列{pi+1,pi+2,…,pk}保持不变,记录正跳跃点位置i;
[0011] S4:在负序列{n1,n2,…,nt}中找到负跳跃点nj(1≤j≤t),将跳跃点之前的系数(含跳跃点)往左移动一个位置变为{n1‑1,…,nj‑1},后面序列{nj+1,nj+2,…,nt}保持不变,记录负跳跃点位置j;
[0012] S5:用Zig‑Zag方式取出DCT系数块中的0和1序列得{c1,c2,…,cr},使得其中len1为DCT系数块中最后一个非0系数自身及其之前的序列中0和1的数量, 表示向下取整;
[0013] S6:将序列{c1,c2,…,cr}按顺序平均分组,每组7个系数,然后在每组进行多层秘密信息的藏入,实现整个图像的信息隐藏过程;
[0014] S7:使用熵编码器将隐秘DCT系数块编码成隐秘JPEG图像OI′。
[0015] 基于上述技术方案,本发明的各步骤可以通过如下优选方式实现。
[0016] 作为优选,S1的具体过程如下:
[0017] 获取待嵌入秘密信息的原始JPEG图像OI,使用熵解码器对其进行解析,从而获取到一个个8×8的DCT系数块。
[0018] 作为优选,S2的具体过程如下:
[0019] 针对当前的DCT系数块,对块中大于1的AC系数进行升序排序得到正序列{p1,p2,…,pk},即1<p1≤p2≤…≤pk;对块中小于0的AC系数进行降序排序得到负序列{n1,n2,…,nt},即0>n1≥n2≥…≥nt。
[0020] 作为优选,S3的具体过程如下:
[0021] 在正序列{p1,p2,…,pk}中找到第i个正跳跃点pi,1≤i≤k,将跳跃点及其之前的系数值均加1得到{p1+1,…,pi+1},跳跃点之后的系数{pi+1,pi+2,…,pk}保持不变;
[0022] 其中正跳跃点pi定义如下:从左往右扫描正序列,第一个符合条件(1)的即为正跳跃点:
[0023] pi+1>pi+1    (1)。
[0024] 作为优选,S4的具体过程如下:
[0025] 在负序列{n1,n2,…,nt}中找到第j个负跳跃点nj,1≤j≤t,将跳跃点及其之前的系数值均减1得{n1‑1,…,nj‑1},将跳跃点之后的系数{nj+1,nj+2,…,nt}保持不变;
[0026] 其中负跳跃点nj定义如下:从左往右扫描负序列,第一个符合条件(2)的即为负跳跃点:
[0027] nj>nj+1+1    (2)。
[0028] 作为优选,S6的具体过程如下:
[0029] S61:将序列{c1,c2,…,cr}平均分组,每组7个系数,记为序列组{ch,1,ch,2,…,ch,7},其中h=1,2,…,r/7;
[0030] S62:将待藏入当前DCT系数块中的秘密信息分组,每组3个比特,并转为八进制数,得到八进制数序列{d1,d2,…,dm},di表示第i组秘密信息的八进制数,di=0,1,…,7,i=1,2,…,m;
[0031] S63:从八进制数序列左侧开始,顺序提取一个待藏入数di,按顺序将其藏入第一组序列组{ch,1,ch,2,…,ch,7}中,通过修改序列组中第di个系数 达到藏入目的,藏入规则如下:
[0032] 若di=0,则序列组不做任何修改;
[0033] 若di≠0,则按公式(3)进行藏入,其中 表示隐秘系数:
[0034]
[0035] S64:在八进制数序列中顺序提取下一个待藏入数dj,若dj>di且di≠0,则继续在当前序列组藏入,否则藏入到下一个序列组中,藏入规则与S63中的藏入规则相同;
[0036] S65:不断重复S64,直到完成信息藏入。
[0037] 本发明的另一目的在于提供一种基于跳跃序列的面向JPEG的可逆信息隐藏中信息提取方法,其做法为:根据前述任一方案所述的信息隐藏方法得到嵌入秘密信息的隐秘JPEG图像,从隐秘JPEG图像OI′中提取嵌入的秘密信息,提取过程为:
[0038] S81:使用熵解码器对隐秘JPEG图像0I′进行解析,从而获取到若干8×8的隐秘DCT系数块;
[0039] S82:用Zig‑Zag方式顺序取出隐秘DCT块中的‑1,0,1和2序列得到{c′1,c′2,…,c′r},使得 其中len1为最后一个非0系数自身及其之前的序列中‑1,0,1和2的数量, 表示向下取整;
[0040] S83:将序列{c′1,c′2,…,c′r}平均分组,每组7个系数,记为序列组{c′h,1,c′h,2,…,c′h,7},其中h=1,2,…,r/7;
[0041] S84:按顺序从序列组{c′h,1,c′h,2,…,c′h,7}中提取秘密信息,具体如下:
[0042] 若序列中不存在‑1和2,则提取秘密信息0,即d′=0;
[0043] 若序列中存在‑1或2,以‑1和2在序列中的位置p代表秘密信息,即d′=p;
[0044] S85:将S84提取出的八进制转为二进制即为最终的秘密信息。
[0045] 本发明的另一目的在于提供一种基于跳跃序列的面向JPEG的可逆信息隐藏中图像恢复方法,其做法为:根据前述任一方案所述的信息隐藏方法得到嵌入秘密信息的隐秘JPEG图像,从隐秘JPEG图像OI′中恢复得到原始JPEG图像,恢复过程为:
[0046] S91:使用解码器对隐秘JPEG图像OI′进行解析,从而获取到若干8×8的隐秘DCT系数块;
[0047] S92:针对每一个隐秘DCT系数块,将值为‑1的AC系数恢复为0,将值为2的AC系数恢复为1;
[0048] S93:针对每一个DCT系数块,对大于2的系数进行升序排序得到正序列{p′1,p′2,…,p′k},即2<p′1≤p′2≤…≤p′k;对小于‑1的系数进行降序排序得到负序列{n′1,n′2,…,n′t},即‑1>n′1≥n′2≥…≥n′t;根据正负跳跃点位置信息i和j,得到正负跳跃点p′i和n′j;最后根据公式(4)和(5)恢复DCT系数:
[0049]
[0050]
[0051] S94:使用熵编码器将恢复的DCT系数块编码,得到恢复的JPEG图像。
[0052] 相对于现有技术而言,本发明的有益效果如下:
[0053] 本发明充分利用跳跃序列特点和多层信息藏入策略,实现了JPEG的高容量高质量可逆信息隐藏。针对跳跃序列的特点,即跳跃序列和后续序列之间间隔至少1个跨度,本发明先将每个DCT系数块的正/负跳跃序列向右/左移动以腾出空间藏信息,而保持后续序列不动。然后选用值为0和‑1的系数进行多层的信息藏入。相比于传统的面向JPEG的可逆信息隐藏方法,本发明一方面充分利用跳跃序列的特点,减少不必要的系数扩张,改进了图像品质;另一方面采用多层藏入的方式,提升了藏量。

附图说明

[0054] 图1为基于跳跃序列的面向JPEG的可逆信息隐藏方法步骤示意图;
[0055] 图2为嵌入过程的例子。
[0056] 图3为提取过程的例子。
[0057] 图4为图像恢复过程的例子。
[0058] 图5为隐秘图像效果图。

具体实施方式

[0059] 下面结合附图,对本发明的具体实施方案作进一步详细描述。基于跳跃序列的面向JPEG的可逆信息隐藏方法,其具体步骤描述如图1中步骤1~步骤7所示。
[0060] 步骤1:使用熵解码器对待嵌入秘密信息的原始JPEG图像OI进行解析,从而获取到若干8×8的DCT系数块;
[0061] 针对每一个DCT系数块执行步骤2~步骤6,形成隐秘DCT系数块。其中在每个DCT块藏入信息的具体实施如图2所示,具体描述如下:
[0062] 步骤2:针对当前的DCT系数块,对块中大于1的AC系数进行升序排序得到正序列{p1,p2,…,pk},即1<p1≤p2≤…≤pk;对块中小于0的AC系数进行降序排序得到负序列{n1,n2,…,nt},即0>n1≥n2≥…≥nt。
[0063] 本实施例中,得到正序列{2,2,3,5,35},负序列{‑1,‑1,‑2,‑3,‑7,‑17}。
[0064] 步骤3:在正序列{p1,p2,…,pk}中找到正跳跃点pi,1≤i≤k,记录正跳跃点位置i。将跳跃点自身及其之前的系数往右移动一个位置,即值均加1得到{p1+1,…,pi+1},跳跃点之后的系数{pi+1,pi+2,…,pk}保持不变。
[0065] 其中正跳跃点pi定义如下:从左往右扫描正序列,第一个符合条件(1)的即为正跳跃点:
[0066] pi+1>pi+1    (1)。
[0067] 本实施例中,正跳跃点位置为3,预处理得到序列{3,3,4,5,35}。
[0068] 步骤4:在负序列{n1,n2,…,nt}中找到负跳跃点nj,1≤j≤t,记录正跳跃点位置j。将跳跃点自身及其之前的系数往左移动一个位置,即值均减1得{n1‑1,…,nj‑1},将跳跃点之后的系数{nj+1,nj+2,…,nt}保持不变。
[0069] 其中负跳跃点nj定义如下:从左往右扫描负序列,第一个符合条件(2)的即为负跳跃点:
[0070] nj>nj+1+1    (2)。
[0071] 本实施例中,负跳跃点位置为4,预处理得到序列{‑2,‑2,‑3,‑4,‑7,‑17}。
[0072] 步骤5:用Zig‑Zag方式取出DCT系数块中的0和1序列得{c1,c2,…,cr},使得其中len1为DCT系数块中最后一个非0系数自身及其之前的序列中0和1的数量, 表示向下取整。
[0073] 步骤6:将序列{c1,c2,…,cr}按顺序平均分组,每组7个系数,然后在每组进行多层秘密信息的藏入,实现整个图像的信息隐藏过程。本步骤的具体过程如下:
[0074] 步骤6.1:将序列{c1,c2,…,cr}平均分组,每组7个系数,记为序列组{ch,1,ch,2,…,ch,7},其中h=1,2,…,r/7。
[0075] 本实施例中,获取到如下3个序列分组:
[0076] Group 1: 1 1 0 0 0 0 0Group 2: 1 1 0 1 0 0 0
Group 3: 0 0 0 0 0 0 0
[0077] 步骤6.2:将待藏入当前DCT系数块中的秘密信息分组,每组3个比特,并转为八进制数,得到八进制数序列{d1,d2,…,dm},di表示第i组秘密信息的八进制数,di=0,1,…,7,i=1,2,…,m。
[0078] 本实施例中,秘密信息100 010 110 011 110转换为八进制数4 2 6 3 6。
[0079] 步骤6.3:从八进制数序列左侧开始,顺序提取一个待藏入数di,按顺序将其藏入第一组序列组{ch,1,ch,2,…,ch,7}中,通过修改序列组中第di个系数 达到藏入目的,藏入规则如下:
[0080] 若di=0,则序列组不做任何修改;
[0081] 若di≠0,则按公式(3)进行藏入,其中 表示隐秘系数:
[0082]
[0083] 本实施例中,将八进制数序列中第1个八进制数4藏入Group1中,则通过修改第4位系数来藏入信息,根据藏入规则,将第4位的0改为‑1。
[0084] 步骤6.4:在八进制数序列中从左到右顺序提取下一个待藏入数dj,若dj>di且di≠0,则继续在当前序列组藏入,否则藏入到下一个序列组中,藏入规则与步骤6.3中的藏入规则相同。
[0085] 本实施例中,八进制数序列中下一个要藏入的数为2,由于2<4,则藏入到下一个Group,即Group2。根据藏入规则,将Group2中第2位的1改为2。
[0086] 步骤6.5:不断重复步骤6.4,直到完成信息藏入。
[0087] 例如,下一个要藏入的数为6,因大于前一个藏入的数2,则继续藏入Group2中,根据藏入规则,将Group2中第6位的0改为‑1。继续将后续的信息藏入,得到藏入秘密信息的组如下:
[0088]Group 1: 1 1 0 ‑1 0 0 0
Group 2: 1 2 0 1 0 ‑1 0
Group 3: 0 0 ‑1 0 0 ‑1 0
[0089] 经过上述步骤,将秘密信息藏入DCT块中,得到隐秘DCT块。
[0090] 步骤7:使用熵编码器将隐秘DCT系数块编码成隐秘JPEG图像OI′。
[0091] 本发明充分利用跳跃序列特点和多层信息藏入策略,实现了JPEG的高容量高质量可逆信息隐藏,在嵌入容量和图像品质方面优于其他现有方法。参见图5所示,为采用该方法对一系列JPEG图像进行信息隐藏后得到的隐秘JPEG图像效果图,本方法获得的隐秘图像具有更好的视觉效果。
[0092] 原始JPEG图像经过上述信息隐藏方法得到嵌入秘密信息的隐秘JPEG图像OI′后,可以从隐秘的JPEG图像中重新提取嵌入的秘密信息,其提取过程参见图3所示,下面具体描述其实现方式:
[0093] 步骤8.1:使用熵解码器对隐秘JPEG图像OI′进行解析,从而获取到若干8×8的隐秘DCT系数块;对每个隐秘DCT系数块进行下列秘密信息提取:
[0094] 步骤8.2:用Zig‑Zag方式顺序取出隐秘DCT块中的‑1,0,1和2序列得到{c′1,c′2,…,c′r},使得 其中len1为最后一个非0系数自身及其之前的序列中‑1,0,1和2的数量, 表示向下取整;
[0095] 步骤8.3:将序列{c′1,c′2,…,c′r}平均分组,每组7个系数,记为序列组{c′h,1,c′h,2,…,c′h,7},其中h=1,2,…,r/7。
[0096] 本实施例中,获取到如下3个分组:
[0097]
[0098]
[0099] 步骤8.4:按顺序从序列组{c′h,1,c′h,2,…,c′h,7}中提取秘密信息,具体如下:
[0100] 若序列中不存在‑1和2,则提取秘密信息0,即d′=0;
[0101] 若序列中存在‑1或2,以‑1或2在序列中的位置p代表秘密信息,即d′=p;
[0102] 本实施例中,从Group1提取出4,从Group2中提取出2和6,从Group3提取出3和6。
[0103] 步骤8.5:将步骤8.4中提取出的八进制转为二进制即为最终的秘密信息。
[0104] 本实施例中,得到秘密信息:100 010 110 011 110。
[0105] 进一步的,本发明还能从隐秘JPEG图像OI′中恢复原始JPEG图像,其图像恢复过程参见图4所示,下面具体描述其实现方式:
[0106] 步骤9.1:使用解码器对隐秘JPEG图像OI′进行解析,从而获取到一个个8×8的隐秘DCT系数块;
[0107] 步骤9.2:针对每一个DCT系数块,将所有‑1恢复为0,所有2恢复为1;
[0108] 步骤9.3:针对每一个DCT系数块,对大于2的系数进行升序排序得到正序列{p′1,p′2,…,p′k},即2<p1≤p2≤…≤pk;对小于‑1的系数进行降序排序得到负序列{n′1,n′2,…,n′t},即‑1>n′1≥n′2≥…≥n′t;根据正负跳跃点位置信息i和j,得到正负跳跃点p′i和n′j;最后,根据如下公式(4)和(5)恢复DCT系数。
[0109]
[0110]
[0111] 本实施例中,得到正序列{3,3,4,5,35},负序列{‑2,‑2,‑3,‑4,‑7,‑17},根据正负跳跃的位置信息(分别为3和4),得到正负跳跃点分别为4和‑4,于是根据公式(5)和(6)恢复DCT系数为{2,2,3,5,35}和{‑1,‑1,‑2,‑3,‑7,‑17}。
[0112] 步骤9.4:使用熵编码器将恢复的DCT系数块编码,得到恢复的JPEG图像。
[0113] 相比于传统的面向JPEG的可逆信息隐藏方法,本发明一方面充分利用跳跃序列的特点,减少不必要的系数扩张,改进了图像品质;另一方面采用多层藏入的方式,提升了藏量。表1给出了将本方法应用在不同质量因子(QF:Quality Factor)的JPEG图像时所取得的藏量和藏入信息后的图像品质。
[0114] 表1本方法的藏量和对应的图像品质(藏量单位:bits;PSNR单位:dB)
[0115]
[0116] 从上述结果中可以看出,本方法在QF高的JPEG图像中可以取得高藏量,同时图像品质还可以保持在PNSR大于30dB。而一幅图像的PSNR大于30dB时,人类肉眼是看不出来异常的。
[0117] 以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。