CN105430228A - 一种编码分组的可逆信息隐藏方法 - Google Patents

一种编码分组的可逆信息隐藏方法 Download PDF

Info

Publication number
CN105430228A
CN105430228A CN201510866003.8A CN201510866003A CN105430228A CN 105430228 A CN105430228 A CN 105430228A CN 201510866003 A CN201510866003 A CN 201510866003A CN 105430228 A CN105430228 A CN 105430228A
Authority
CN
China
Prior art keywords
sig
information
leftrightarrow
code set
carrier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510866003.8A
Other languages
English (en)
Other versions
CN105430228B (zh
Inventor
俞春强
张显全
唐振军
张师超
何南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guizhou Boring Technology Service Co.,Ltd.
Shenzhen Hongyue Information Technology Co ltd
Original Assignee
Guangxi Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangxi Normal University filed Critical Guangxi Normal University
Priority to CN201510866003.8A priority Critical patent/CN105430228B/zh
Publication of CN105430228A publication Critical patent/CN105430228A/zh
Application granted granted Critical
Publication of CN105430228B publication Critical patent/CN105430228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32101Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N1/32144Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title embedded in the image data, i.e. enclosed or integrated in the image, e.g. watermark, super-imposed logo or stamp
    • H04N1/32149Methods relating to embedding, encoding, decoding, detection or retrieval operations
    • H04N1/32267Methods relating to embedding, encoding, decoding, detection or retrieval operations combined with processing of the image
    • H04N1/32272Encryption or ciphering

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种编码分组的可逆隐藏信息方法,将隐藏信息比特流中2bit作为一个单位转换为1位十进制的数字,对转换后的十进制信息进行编码分组,共有16种不同的编码,建立了每组编码的隐藏算法,得到编码组与载体信息一一对应关系。隐藏信息时,对隐藏信息编码组出现的次数进行统计并排序,将出现频数大的编码组隐藏在所需载体数较少的载体信息中,提高隐藏容量。在提取秘密信息时,可根据对应关系提取编码组,将编码组解码得到隐藏信息,并恢复载体信息,采用本发明的可逆隐藏信息方法,具有较高的隐藏容量。

Description

一种编码分组的可逆信息隐藏方法
技术领域
本发明涉及图像处理和信息安全领域,具体是一种编码分组的可逆信息隐藏方法。
背景技术
近年来,随着计算机网络的普及,信息安全问题越来越突出。加密作为传统的信息安全手段,如果加密信息在存储和传输过程中被攻击者截获,加密后的密文会引起攻击者的注意。信息隐藏作为保证信息安全的一种方法,通过信息隐藏,存储和传输的是隐藏秘密信息后的载密信息,载密信息与一般信息一样,不会引攻击者的注意。可逆信息隐藏成为近年的研究热点,在军事和医疗等信息安全保护中具有重要的应用价值。
可逆信息隐藏是接收方收到载密信息后,在载密信息中提取秘密信息并能无损的恢复出原始的载体信息。已有的可逆信息隐藏方法包括基于无损压缩方法、基于差分扩展方法和基于直方图偏移方法。基于无损压缩方法是将图像中的部分信息通过无损压缩算法压缩,得到隐藏空间隐藏秘密信息,提取秘密信息后对压缩信息解压恢复出原始图像。基于差分扩展方法中,两个相邻像素为1组隐藏1位秘密信息,修改相邻两个像素使他们差值与2的模等于秘密信息,差值与2的商为原来两个像素的差值;恢复时先计算两个相邻像素的差值,用差值恢复秘密信息,修改两个像素使他们的差等于这个差值,实现图像的恢复。直方图偏移方法中,统计载体图像的直方图,找出直方图中峰值点和最小值点,在峰值点对应像素中隐藏信息,修改图像中最小值点与峰值点之间像素的值,使他们的值不等于像素隐藏信息后的值;恢复时先根据记录的峰值提取秘密信息,再改变像素值介于峰值和最小值之间的像素,实现载体图像的恢复。在现有的几类可逆信息隐藏方法中,基于直方图的可逆信息隐藏算法应用较多,但这些算法隐藏容量都不大。
发明内容
本发明的目的在于提供一种编码分组的可逆信息隐藏方法,通过对二进制隐藏信息进行编码分组,得到十进制编码组,将十进制编码隐藏在载体序列中,还设定一待隐藏值,在载体序列中选择与该隐藏值相等的元素用于隐藏编码组,将频数较大的编码组隐藏在较少载体中,提高隐藏容量,并修改与该隐藏值不相等的元素,实现可逆信息隐藏。
实现本发明目的的技术方案是:
一种编码分组的可逆信息隐藏方法,包括如下步骤:
1、对隐藏信息进行编码分组,将二进制隐藏信息转换成十进制编码,对十进制编码两两分组;
具体是将二进制隐藏信息比特流中2bit作为一个单位转换为1位十进制的数字,若二进制隐藏信息的个数为奇数,则最后一位单独转成十进制数字;设转换后的隐藏信息十进制数字编码为C={c1,c2,c3,…,cm},则有0≤ci≤3,将C两两进行分组,若m为奇数,则在C中增加一个编码cm+1,且使cm+1=cm,cm+1与cm构成一编码组;为了准确提取隐藏信息,设置标记信息flag,判断是否增加编码,若增加编码cm+1,flag=1,否则flag=0,将flag作为密钥发送给接收方,接收方可根据flag的取值确定嵌入是否增加额外的编码,准确提取隐藏信息;设(ck-1,c2k)为待隐藏编码组,由于0≤ci≤3,则(c2k-1,c2k)有16种组合,分别为(0,0)、(0,1)、(0,2)、(0,3)、(1,0)、(1,1)、(1,2)、(1,3)、(2,0)、(2,1)、(2,2)、(2,3)、(3,0)、(3,1)、(3,2)、(3,3)。
2、对两两分组的十进制编码进行可逆信息隐藏;
设隐藏载体信息一维序列为S,设定一待隐藏值K,在载体序列中求出所有值为K的元素并记录元素下标信息,设值为K的元素序列为L={l1,l2,l3,…,ln},将隐藏信息编码组(c2k-1,c2k)隐藏在L中,由于隐藏时可能需要对L中元素加1或减1,设置一变量sig,当K≥0时,sig=1,否则sig=-1,li+sig为修改后的值;设隐藏后的元素为l'i,根据(c2k-1,c2k)取值情况确定隐藏方法。
具体如下:
(1)(0,0)的隐藏
从L中取li,li+1,li+2连续3个元素作为载体信息,隐藏方法如下:
l'i+j=li+j(0≤j≤2)
(0,0)对应含密信息组为(K,K,K),下一组编码从li+3开始隐藏;
(2)(1,1)、(2,2)和(3,3)的隐藏
从L中取li,li+1,li+2,li+3连续4个值为K的元素作为载体,隐藏方法如下:
l i + j ′ = l i + j , j ≠ c 2 k - 1 l i + j + s i g , j = c 2 k - 1 , ( 0 ≤ j ≤ 3 )
隐藏后编码组与信息组的对应关系为:
(1,1)对应含密信息组为(K+sig,K,K,K);
(2,2)对应含密信息组为(K,K+sig,K,K),
(3,3)对应含密信息组为(K,K,K+sig,K),下一组编码从li+4开始隐藏;
(3)其他编码组的隐藏
设m=max(c2k-1,c2k),从L中取li,li+j,…,li+m+1连续m+2个元素作为载体信息,其中li+m+1为标志位,通过l'i+m+1确定c2k-1和c2k的大小关系,令 l i + m + 1 &prime; = l i + m + 1 c 2 k - 1 > c 2 k l i + m + 1 + s i g c 2 k - 1 < c 2 k , 隐藏方法如下:
l i + j &prime; = l i + j , j &NotElement; { c 2 k , c 2 k + 1 } l i + j + s i g , j &Element; { c 2 k , c 2 k + 1 } , ( 0 &le; j &le; m )
隐藏后编码组与信息组的对应关系为:
(0,1)对应含密信息组为(K+sig,K+sig,K+sig);
(1,0)对应含密信息组为(K+sig,K+sig,K);
(0,2)对应含密信息组为(K+sig,K,K+sig,K+sig);
(2,0)对应含密信息组为(K+sig,K,K+sig,K);
(1,2)对应含密信息组为(K,K+sig,K+sig,K+sig);
(2,1)对应含密信息组为(K,K+sig,K+sig,K);
(0,3)对应含密信息组为(K+sig,K,K,K+sig,K+sig);
(3,0)对应含密信息组为(K+sig,K,K,K+sig,K);
(1,3)对应含密信息组为(K,K+sig,K,K+sig,K+sig);
(3,1)对应含密信息组为(K,K+sig,K,K+sig,K);
(2,3)对应含密信息组为(K,K,K+sig,K+sig,K+sig);
(3,2)对应含密信息组为(K,K,K+sig,K+sig,K);
下一组编码从li+m+2开始隐藏。
从上可得到编码组与隐藏载体的一一对应关系,按需要载体数从小到大进行排序,当载体数相同时按修改载体信息量从小到大排序,排序后的对应关系如下:
(0,0)f(K,K,K)(在3个载体数据隐藏4位信息并且不修改原始载体信息);
(1,0)f(K+sig,K+sig,K)(在3个载体数据隐藏4位信息修改2个原始载体信息);
(0,1)f(K+sig,K+sig,K+sig)(在3个载体数据隐藏4位信息修改3个原始载体信息);
( 1 , 1 ) f ( K + s i g , K , K , K ) ( 2 , 2 ) f ( K , K + s i g , K , K ) ( 3 , 3 ) f ( K , K , K + s i g , K ) (在4个载体数据隐藏4位信息修改1个原始载体信息);
( 2 , 0 ) f ( K + s i g , K , K + s i g , K ) ( 2 , 1 ) f ( K , K + s i g , K + s i g , K ) (在4个载体数据隐藏4位信息修改2个原始载体信息);
( 0 , 2 ) f ( K + s i g , K , K + s i g , K + s i g ) ( 1 , 2 ) f ( K , K + s i g , K + s i g , K + s i g ) (在4个载体数据隐藏4位信息修改3个原始载体信息);
5个载体数据隐藏4位信息修改2个原始载体信息);
( 1 , 3 ) f ( K , K + s i g , K , K + s i g , K + s i g ) ( 0 , 3 ) f ( K + s i g , K , K , K + s i g , K + s i g ) ( 2 , 3 ) f ( K , K , K + s i g , K + s i g , K + s i g (在5个载体数据隐藏4位信息修改3个原始载体信息);
隐藏相同位数的信息,若需要的载体信息数量越少,则隐藏容量越大;当载体数量相同时,载体修改量越小,则对载体图像改变越小。
为了得到较大的隐藏容量和较好的隐藏效果,统计隐藏信息编码组的频数并按编码组频数进行排序,设频数降序排列16个编码组为m1,m2,…,m16,将频数降序排列16个编码组作为密钥发送给接受方;将编码组进行变换,使频数大编码组隐藏所需的载体信息少,提高隐藏容量和质量。
编码组变换及对应载体隐藏后的关系如下:
m 1 &LeftRightArrow; ( 0 , 0 ) f ( K , K , K ) ;
m 2 &LeftRightArrow; ( 1 , 0 ) f ( K + s i g , K + s i g , K ) ;
m 3 &LeftRightArrow; ( 0 , 1 ) f ( K + s i g , K + s i g , K + s i g ) ;
m 4 &LeftRightArrow; ( 1 , 1 ) f ( K + s i g , K , K , K ) ;
m 5 &LeftRightArrow; ( 2 , 2 ) f ( K , K + s i g , K , K ) ;
m 6 &LeftRightArrow; ( 3 , 3 ) f ( K , K , K + s i g , K ) ;
m 7 &LeftRightArrow; ( 2 , 0 ) f ( K + s i g , K , K + s i g , K ) ;
m 8 &LeftRightArrow; ( 2 , 1 ) f ( K , K + s i g , K + s i g , K ) ;
m 9 &LeftRightArrow; ( 0 , 2 ) f ( K + s i g , K , K + s i g , K + s i g ) ;
m 10 &LeftRightArrow; ( 1 , 2 ) f ( K , K + s i g , K + s i g , K + s i g ) ;
m 11 &LeftRightArrow; ( 3 , 0 ) f ( K + s i g , K , K , K + s i g , K ) ;
m 12 &LeftRightArrow; ( 3 , 1 ) f ( K , K + s i g , K , K + s i g , K ) ;
m 13 &LeftRightArrow; ( 3 , 2 ) f ( K , K , K + s i g , K + s i g , K ) ;
m 14 &LeftRightArrow; ( 1 , 3 ) f ( K , K + s i g , K , K + s i g , K + s i g ) ;
m 15 &LeftRightArrow; ( 0 , 3 ) f ( K + s i g , K , K , K + s i g , K + s i g ) ;
m 16 &LeftRightArrow; ( 2 , 3 ) f ( K , K , K + s i g , K + s i g , K + s i g ) ;
通过上述方法将编码组隐藏在L中,若L剩余元素个数小于5时,则剩余元素不隐藏信息。编码组隐藏在值为K的元素中得到含有编码组信息序列L′,L′中元素的值为K或K+sig,为实现可逆隐藏需对S中值不为K的元素进行修改,使含有隐藏信息的元素与不含有隐藏信息的元素不重叠,根据L′中的元素值对S中隐藏信息位进行修改,设S中没有隐藏信息位修改后的值为s'i,修改方法如下:
通过以上处理可实现可逆信息隐藏。
3、提取隐藏信息恢复载体信息
设载密序列为S′,由隐藏方法可知,值为K或K+sig的元素中含有秘密信息,在S′中求出所有值为K或K+sig的元素,在这些元素中根据隐藏算法提取隐藏信息;设元素序列为L′={l'1,l'2,…,l'n},在L′中从l1'开始,取连续的3个元素l'i,l'i+1,l'i+2,根据下面4种情况提取编码组;
(1)若e=0,可知在l'i,l'i+1,l'i+2中没有元素被修改,则提取编码组如下:
c 2 k - 1 = 0 c 2 k = 0
下一组编码提取从l'i+3开始提取;
(2)若e=1,则在l'i,l'i+1,l'i+2中修改了1个元素,需根据di+3的取值情况提取编码组:
①di+3=0,说明隐藏时在l'i,l'i+1,l'i+2,l'i+3中修改了1个元素,则c2k-1=c2k≠0,若di+j=1(0≤j≤2),则提取编码组如下:
c 2 k - 1 = j + 1 c 2 k = j + 1
下一组编码提取从l'i+4开始;
②若di+3=1,说明隐藏时在l'i,l'i+1,l'i+2,l'i+3中修改了2个元素,在这4个元素中,必存在a,b(0≤a,b≤3)使得l'i+a=1,l'i+b=1,然后根据元素大小标记位l'i+4取值提取编码组;
当di+4=0,则c2k-1>c2k,提取编码组如下:
c 2 k - 1 = m a x ( a , b ) c 2 k = m i n ( a , b )
当di+4=1,则c2k-1<c2k,提取编码组为:
c 2 k - 1 = m i n ( a , b ) c 2 k = m a x ( a , b )
下一组编码提取从l'i+5开始;
(3)若e=2,说明隐藏时在l'i,l'i+1,l'i+2中修改了2个元素,可由下述两种情况提取编码组:
①若 d i = 1 d i + 1 = 1 d i + 2 = 0 , l'i+2为编码组两个元素大小标记位,由于di+2=0,可知c2k-1>c2k,提取编码组如下:
c 2 k - 1 = 1 c 2 k = 0
下一组编码提取从l'i+3开始;
②若 d i = 1 d i + 1 = 0 d i + 2 = 1 d i = 0 d i + 1 = 1 d i + 2 = 1 则需根据元素大小标记位l'i+3取值提取编码组,隐藏时修改了2个元素,必存在a,b(0≤a,b≤2)使得l'i+a=1,l'i+b=1。当di+3=0,说明c2k-1>c2k,提取编码组如下:
c 2 k - 1 = m a x ( a , b ) c 2 k = m i n ( a , b )
当di+3=1,说明c2k-1<c2k,提取编码组如下:
c 2 k - 1 = m i n ( a , b ) c 2 k = m a x ( a , b )
下一组编码提取从l'i+4开始;
(4)若e=3,可知 d i = 1 d i + 1 = 1 d i + 2 = 1 , l'i+2为编码组两个元素大小标记位,由于di+2=1,可知c2k-1<c2k,提取编码组如下:
c 2 k - 1 = 0 c 2 k = 1
下一组编码提取从l'i+3开始;若L′剩余元素少于5个,则结束提取;
根据编码组变换关系恢复原始隐藏编码如下:
m 1 &LeftRightArrow; ( 0 , 0 ) ; m 2 &LeftRightArrow; ( 1 , 0 ) ; m 3 &LeftRightArrow; ( 0 , 1 ) ; m 4 &LeftRightArrow; ( 1 , 1 ) ; m 5 &LeftRightArrow; ( 2 , 2 ) ; m 6 &LeftRightArrow; ( 3 , 3 ) ; m 7 &LeftRightArrow; ( 2 , 0 ) ; m 8 &LeftRightArrow; ( 2 , 1 ) ; m 9 &LeftRightArrow; ( 0 , 2 ) ; m 10 &LeftRightArrow; ( 1 , 2 ) ; m 11 &LeftRightArrow; ( 3 , 0 ) ; m 12 &LeftRightArrow; ( 3 , 1 ) ; m 13 &LeftRightArrow; ( 3 , 2 ) ; 最后将提取的编码组转化成二进制隐藏信息,对S'中元素进行修改恢复载体信息,修改方法如下:
通过修改可恢复载体信息。
本发明的优点:本发明提供一种编码分组的可逆信息隐藏方法,可将频数较大的编码组隐藏在较少数量的载体信息,具有较高的隐藏容量。且本方法可应用于各种基于直方图的可逆信息隐藏算法中,具有较好的适用性。
附图说明
图1是隐藏图像;
图2是载体图像;
图3是隐藏信息;
图4是载密图像;
图5是提取后的秘密信息;
图6恢复的原始图像。
具体实施方式
下面结合附图和实施例对本发明内容作进一步的详细说明,但不是对本发明的限定。
实施例
假设隐藏信息为{1011101100010000010110111011},首先将二进制隐藏信息转换成十进制编码,对十进制编码两两分组;
统计编码组的频数并按频数从大到小排序如下;
编码组 频数
(2,3) 4
(0,1) 2
(0,0) 1
统计结果:(2,3)出现4次,(0,1)出现2次,(0,0)出现1次。
根据编码组的隐藏方法:
(2,3)隐藏后的载体信息为(K,K,K+sig,K+sig,K+sig):
(0,1)隐藏后的载体信息为(K+sig,K+sig,K+sig);
(0,0)隐藏后的载体信息为(K,K,K);但(2,3)出现的频数最大,(0,1)出现的频数次之,(0,0)出现的频数最少,需对编码进行变换,频数大的编码需要的载体少,变换关系为 ( 2 , 3 ) &LeftRightArrow; ( 0 , 0 ) ; ( 0 , 1 ) &LeftRightArrow; ( 1 , 0 ) ; ( 0 , 0 ) &LeftRightArrow; ( 0 , 1 ) , 最后可得到如下的编码组与载体隐藏后对应关系
编码组 隐藏后信息
(2,3) (K,K,K)
(0,1) (K+sig,K+sig,K);
(0,0) (K+sig,K+sig,K+sig)
假设载体序列如下:
0 1 2 0 0 3 4 0 0 0 0 5 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 1
其中,待隐藏值为K=0,从载体序列中选出所有值为K的元素如下:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
根据对应关系将编码组逐一隐藏在值为K的元素中,隐藏结果如下表所示:
0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0
由于隐藏后元素为K或K+sig,需对载体序列中值不为K的元素进行修改,大于K的元素都加sig,最后可得到载密序列如下表所示(其中黑体的元素含有秘密信息):
0 2 3 0 0 4 5 0 0 0 1 6 1 0 1 1 3 1 1 1 0 0 0 3 0 0 0 0 2 2
由上述例子可知21个载体信息可以隐藏28位隐藏信息,1个载体信息平均可以隐藏1.3位隐藏信息。
提取隐藏信息时,可根据载密序列和嵌入方法提取秘密信息,恢复原始载体序列。
载密序列如下(其中黑体的元素含有秘密信息):
0 2 3 0 0 4 5 0 0 0 1 6 1 0 1 1 3 1 1 1 0 0 0 3 0 0 0 0 2 2
由嵌入方法可知,载密序列中值为0或1的元素含有隐藏信息,提取含密元素如下表所示:
0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0
设上述含密元素序列为L′,从L′顺序提取若干个元素提取编码组, L 1 &prime; = 0 L 2 &prime; = 0 L 3 &prime; = 0 可知这3个元素嵌入时没有被修改,可提取编码组(0,0), L 4 &prime; = 0 L 5 &prime; = 0 L 6 &prime; = 0 , 可提取编码组(0,0), L 7 &prime; = 1 L 8 &prime; = 1 L 9 &prime; = 0 , 其中L'9为标志位,可提取编码组(1,0), L 10 &prime; = 1 L 11 &prime; = 1 L 12 &prime; = 1 , 其中L'12为标志位,可提取编码组(0,1), L 13 &prime; = 1 L 14 &prime; = 1 L 15 &prime; = 0 , 可提取编码组(1,0), L 16 &prime; = 0 L 17 &prime; = 0 L 18 &prime; = 0 , 可提取编码组(0,0), L 19 &prime; = 0 L 20 &prime; = 0 L 21 &prime; = 0 , 可提取编码组(0,0)。对编码组进行变换, ( 0 , 0 ) &LeftRightArrow; ( 2 , 3 ) ; ( 1 , 0 ) &LeftRightArrow; ( 0 , 1 ) ; ( 0 , 1 ) &LeftRightArrow; ( 0 , 0 ) , 得到编码组信息(2,3)(2,3)(0,1)(0,0)(0,1)(2,3)(2,3),最后将编码组解码得到二进制隐藏信息。
由于隐藏时,对值为K元素加一或不变,对值大于K的元素加一,恢复原始载体序列时,需对大于K的元素减一,得到载体序列如下:
0 1 2 0 0 3 4 0 0 0 0 5 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 1
与原始载体序列相同。
参照图1,为位图格式的隐藏信息,分别为100×100的cameraman图、159×271的logo图、256×256的finger图、256×256的brain图,将图像转换成二进制隐藏信息的大小分别为80000bits、334712bits、524288bits和524288bits。
表1隐藏相同容量本发明与直方图所需载体数对比
隐藏图像 隐藏容量 直方图方法需载体数 本发明需载体数
cameraman.bmp 80000bits 80000 77380
logo.bmp 334712bits 334712 296697
finger.bmp 524288bits 524288 504198
brain.bmp 524288bits 524288 459849
隐藏容量是将隐藏图像转换成二进制信息的比特数,直方图方法中一个载体只能隐藏1位比特,而本发明的方法一个载体平均可隐藏的比特数大于1,表1为本发明与直方图方法所需载体个数的对比,从表1中可以看出隐藏相同容量的信息本发明需要的载体个数比直方图少,本发明具有较高的隐藏容量。
参照图2为载体图像,其中像素值168用于隐藏信息,K=168。
参照图3为文本形式的隐藏信息。
参照图4为载密图像,同样具有较好的视觉效果。
参照图5为提取出的秘密信息,与隐藏的秘密信息是相同的。
参照图6为无损恢复出的原始图像。

Claims (1)

1.一种编码分组的可逆信息隐藏方法,其特征是包括如下步骤:
步骤一:对隐藏信息进行编码分组,将二进制隐藏信息转换成十进制编码,对十进制编码两两分组;
具体是将二进制隐藏信息比特流中2bit作为一个单位转换为1位十进制的数字,若二进制隐藏信息的个数为奇数,则最后一位单独转成十进制数字;设转换后的隐藏信息十进制数字编码为C={c1,c2,c3,…,cm},则有0≤ci≤3,将C两两进行分组,若m为奇数,则在C中增加一个编码cm+1,且使cm+1=cm,cm+1与cm构成一编码组;为了准确提取隐藏信息,设置标记信息flag,判断是否增加编码,若增加编码cm+1,flag=1,否则flag=0,将flag作为密钥发送给接收方,接收方可根据flag的取值确定嵌入是否增加额外的编码,准确提取隐藏信息;设(ck-1,c2k)为待隐藏编码组,由于0≤ci≤3,则(c2k-1,c2k)有16种组合,分别为(0,0)、(0,1)、(0,2)、(0,3)、(1,0)、(1,1)、(1,2)、(1,3)、(2,0)、(2,1)、(2,2)、(2,3)、(3,0)、(3,1)、(3,2)、(3,3);
步骤二:对两两分组的十进制编码进行可逆信息隐藏;
设隐藏载体信息一维序列为S,设定一待隐藏值K,在载体序列中求出所有值为K的元素并记录元素下标信息,设值为K的元素序列为L={l1,l2,l3,…,ln},将隐藏信息编码组(c2k-1,c2k)隐藏在L中,由于隐藏时可能需要对L中元素加1或减1,设置一变量sig,当K≥0时,sig=1,否则sig=-1,li+sig为修改后的值;设隐藏后的元素为l′i,根据(c2k-1,c2k)取值情况确定隐藏方法;
具体如下:
(1)(0,0)的隐藏
从L中取li,li+1,li+2连续3个元素作为载体信息,隐藏方法如下:
l′i+j=li+j(0≤j≤2)
(0,0)对应含密信息组为(K,K,K),下一组编码从li+3开始隐藏;
(2)(1,1)、(2,2)和(3,3)的隐藏
从L中取li,li+1,li+2,li+3连续4个值为K的元素作为载体,隐藏方法如下:
l i + j &prime; = l i + j , j &NotEqual; c 2 k - 1 l i + j + s i g , j = c 2 k - 1 , ( 0 &le; j &le; 3 )
隐藏后编码组与信息组的对应关系为:
(1,1)对应含密信息组为(K+sig,K,K,K);
(2,2)对应含密信息组为(K,K+sig,K,K),
(3,3)对应含密信息组为(K,K,K+sig,K),下一组编码从li+4开始隐藏;
(3)其他编码组的隐藏
设m=max(c2k-1,c2k),从L中取li,li+j,…,li+m+1连续m+2个元素作为载体信息,其中li+m+1为标志位,通过l′i+m+1确定c2k-1和c2k的大小关系,令 l i + m + 1 &prime; = l i + m + 1 c 2 k - 1 > c 2 k l i + m + 1 + s i g c 2 k - 1 < c 2 k , 隐藏方法如下:
l i + j &prime; = l i + j , j &NotElement; { c 2 k , c 2 k + 1 } l i + j + s i g , j &Element; { c 2 k , c 2 k + 1 } , ( 0 &le; j &le; m )
隐藏后编码组与信息组的对应关系为:
(0,1)对应含密信息组为(K+sig,K+sig,K+sig);
(1,0)对应含密信息组为(K+sig,K+sig,K);
(0,2)对应含密信息组为(K+sig,K,K+sig,K+sig);
(2,0)对应含密信息组为(K+sig,K,K+sig,K);
(1,2)对应含密信息组为(K,K+sig,K+sig,K+sig);
(2,1)对应含密信息组为(K,K+sig,K+sig,K);
(0,3)对应含密信息组为(K+sig,K,K,K+sig,K+sig);
(3,0)对应含密信息组为(K+sig,K,K,K+sig,K);
(1,3)对应含密信息组为(K,K+sig,K,K+sig,K+sig);
(3,1)对应含密信息组为(K,K+sig,K,K+sig,K);
(2,3)对应含密信息组为(K,K,K+sig,K+sig,K+sig);
(3,2)对应含密信息组为(K,K,K+sig,K+sig,K);
下一组编码从li+m+2开始隐藏;
从上可得到编码组与隐藏载体的一一对应关系,按需要载体数从小到大进行排序,当载体数相同时按修改载体信息量从小到大排序,排序后的对应关系如下:
(0,0)f(K,K,K)(在3个载体数据隐藏4位信息并且不修改原始载体信息);
(1,0)f(K+sig,K+sig,K)(在3个载体数据隐藏4位信息修改2个原始载体信息);
(0,1)f(K+sig,K+sig,K+sig)(在3个载体数据隐藏4位信息修改3个原始载体信息);
( 1 , 1 ) f ( K + s i g , K , K , K ) ( 2 , 2 ) f ( K , K + s i g , K , K ) ( 3 , 3 ) f ( K , K , K + s i g , K ) (在4个载体数据隐藏4位信息修改1个原始载体信息);
( 2 , 0 ) f ( K + s i g , K , K + s i g , K ) ( 2 , 1 ) f ( K , K + s i g , K + s i g , K ) (在4个载体数据隐藏4位信息修改2个原始载体信息);
( 0 , 2 ) f ( K + s i g , K , K + s i g , K + s i g ) ( 1 , 2 ) f ( K , K + s i g , K + s i g , K + s i g ) (在4个载体数据隐藏4位信息修改3个原始载体信息);
( 3 , 0 ) f ( K + s i g , K , K , K + s i g , K ) ( 3 , 1 ) f ( K , K + s i g , K , K + s i g , K ) ( 3 , 2 ) f ( K , K , K + s i g , K + s i g , K ) (在5个载体数据隐藏4位信息修改2个原始载体信息);
( 1 , 3 ) f ( K , K + s i g , K , K + s i g , K + s i g ) ( 0 , 3 ) f ( K + s i g , K , K , K + s i g , K + s i g ) ( 2 , 3 ) f ( K , K , K + s i g , K + s i g , K + s i g ) (在5个载体数据隐藏4位信息修改3个原始载体信息);
隐藏相同位数的信息,若需要的载体信息数量越少,则隐藏容量越大;当载体数量相同时,载体修改量越小,则对载体图像改变越小;为了得到较大的隐藏容量和较好的隐藏效果,统计隐藏信息编码组的频数并按编码组频数进行排序,设频数降序排列16个编码组为m1,m2,…,m16,将频数降序排列16个编码组作为密钥发送给接受方;将编码组进行变换,使频数大编码组隐藏所需的载体信息少,提高隐藏容量和质量;
编码组变换及对应载体隐藏后的关系如下:
m 1 &LeftRightArrow; ( 0 , 0 ) f ( K , K , K ) ;
m 2 &LeftRightArrow; ( 1 , 0 ) f ( K + s i g , K + s i g , K ) ;
m 3 &LeftRightArrow; ( 0 , 1 ) f ( K + s i g , K + s i g , K + s i g ) ;
m 4 &LeftRightArrow; ( 1 , 1 ) f ( K + s i g , K , K , K ) ;
m 5 &LeftRightArrow; ( 2 , 2 ) f ( K , K + s i g , K , K ) ;
m 6 &LeftRightArrow; ( 3 , 3 ) f ( K , K , K + s i g , K ) ;
m 7 &LeftRightArrow; ( 2 , 0 ) f ( K + s i g , K , K + s i g , K ) ;
m 8 &LeftRightArrow; ( 2 , 1 ) f ( K , K + s i g , K + s i g , K ) ;
m 9 &LeftRightArrow; ( 0 , 2 ) f ( K + s i g , K , K + s i g , K + s i g ) ;
m 10 &LeftRightArrow; ( 1 , 2 ) f ( K , K + s i g , K + s i g , K + s i g ) ;
m 11 &LeftRightArrow; ( 3 , 0 ) f ( K + s i g , K , K , K + s i g , K ) ;
m 12 &LeftRightArrow; ( 3 , 1 ) f ( K , K + s i g , K , K + s i g , K ) ;
m 13 &LeftRightArrow; ( 3 , 2 ) f ( K , K , K + s i g , K + s i g , K ) ;
m 14 &LeftRightArrow; ( 1 , 3 ) f ( K , K + s i g , K , K + s i g , K + s i g ) ;
m 15 &LeftRightArrow; ( 0 , 3 ) f ( K + s i g , K , K , K + s i g , K + s i g ) ;
m 16 &LeftRightArrow; ( 2 , 3 ) f ( K , K , K + s i g , K + s i g , K + s i g ) ;
通过上述方法将编码组隐藏在L中,若L剩余元素个数小于5时,则剩余元素不隐藏信息;编码组隐藏在值为K的元素中得到含有编码组信息序列L′,L′中元素的值为K或K+sig,为实现可逆隐藏需对S中值不为K的元素进行修改,使含有隐藏信息的元素与不含有隐藏信息的元素不重叠,根据L′中的元素值对S中隐藏信息的位进行修改,设S中没有隐藏信息位修改后的值为s′i,修改方法如下:
通过以上处理可实现可逆信息隐藏;
步骤三:提取隐藏信息恢复载体信息
设载密序列为S′,由隐藏方法可知,值为K或K+sig的元素中含有秘密信息,在S′中求出所有值为K或K+sig的元素,在这些元素中根据隐藏算法提取隐藏信息;设元素序列为L′={l′1,l′2,…,l′n}, 在L′中从l′1开始,取连续的3个元素l′i,l′i+1,l′i+2,根据下面4种情况提取编码组;
(1)若e=0,可知在l′i,l′i+1,l′i+2中没有元素被修改,则提取编码组如下:
c 2 k - 1 = 0 c 2 k = 0
下一组编码提取从l′i+3开始提取;
(2)若e=1,则在l′i,l′i+1,l′i+2中修改了1个元素,需根据di+3的取值情况提取编码组:
①di+3=0,说明隐藏时在l′i,l′i+1,l′i+2,l′i+3中修改了1个元素,则c2k-1=c2k≠0,若di+j=1(0≤j≤2),则提取编码组如下:
c 2 k - 1 = j + 1 c 2 k = j + 1
下一组编码提取从l′i+4开始;
②若di+3=1,说明隐藏时在l′i,l′i+1,l′i+2,l′i+3中修改了2个元素,在这4个元素中,必存在a,b(0≤a,b≤3)使得l′i+a=1,l′i+b=1,然后根据元素大小标记位l′i+4取值提取编码组;
当di+4=0,则c2k-1>c2k,提取编码组如下:
c 2 k - 1 = m a x ( a , b ) c 2 k = m i n ( a , b )
当di+4=1,则c2k-1<c2k,提取编码组为:
c 2 k - 1 = m i n ( a , b ) c 2 k = m a x ( a , b )
下一组编码提取从l′i+5开始;
(3)若e=2,说明隐藏时在l′i,l′i+1,l′i+2中修改了2个元素,可由下述两种情况提取编码组:
①若 d i = 1 d i + 1 = 1 d i + 2 = 0 , l′i+2为编码组两个元素大小标记位,由于di+2=0,可知c2k-1>c2k,提取编码组如下:
c 2 k - 1 = 1 c 2 k = 0
下一组编码提取从l′i+3开始;
②若 d i = 1 d i + 1 = 0 d i + 2 = 1 d i = 0 d i + 1 = 1 d i + 2 = 1 则需根据元素大小标记位l′i+3取值提取编码组,隐藏时修改了2个元素,必存在a,b(0≤a,b≤2)使得l′i+a=1,l′i+b=1。当di+3=0,说明c2k-1>c2k,提取编码组如下:
c 2 k - 1 = m a x ( a , b ) c 2 k = m i n ( a , b )
当di+3=1,说明c2k-1<c2k,提取编码组如下:
c 2 k - 1 = m i n ( a , b ) c 2 k = m a x ( a , b )
下一组编码提取从l′i+4开始;
(4)若e=3,可知 d i = 1 d i + 1 = 1 d i + 2 = 1 , l′i+2为编码组两个元素大小标记位,由于di+2=1,可知c2k-1<c2k,提取编码组如下:
c 2 k - 1 = 0 c 2 k = 1
下一组编码提取从l′i+3开始;若L′剩余元素少于5个,则结束提取;
根据编码组变换关系恢复原始隐藏编码如下:
m 1 &LeftRightArrow; ( 0 , 0 ) ; m 2 &LeftRightArrow; ( 1 , 0 ) ; m 3 &LeftRightArrow; ( 0 , 1 ) ; m 4 &LeftRightArrow; ( 1 , 1 ) ; m 5 &LeftRightArrow; ( 2 , 2 ) ; m 6 &LeftRightArrow; ( 3 , 3 ) ; m 7 &LeftRightArrow; ( 2 , 0 ) ; m 8 &LeftRightArrow; ( 2 , 1 ) ; m 9 &LeftRightArrow; ( 0 , 2 ) ; m 10 &LeftRightArrow; ( 1 , 2 ) ; m 11 &LeftRightArrow; ( 3 , 0 ) ; m 12 &LeftRightArrow; ( 3 , 1 ) ; m 13 &LeftRightArrow; ( 3 , 2 ) ; m 14 &LeftRightArrow; ( 1 , 3 ) ; m 15 &LeftRightArrow; ( 0 , 3 ) ; m 16 &LeftRightArrow; ( 2 , 3 ) ; 最后将提取的编码组转化成二进制隐藏信息,对S'中元素进行修改恢复载体信息,修改方法如下:
通过修改可恢复载体信息。
CN201510866003.8A 2015-12-01 2015-12-01 一种编码分组的可逆信息隐藏方法 Active CN105430228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510866003.8A CN105430228B (zh) 2015-12-01 2015-12-01 一种编码分组的可逆信息隐藏方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510866003.8A CN105430228B (zh) 2015-12-01 2015-12-01 一种编码分组的可逆信息隐藏方法

Publications (2)

Publication Number Publication Date
CN105430228A true CN105430228A (zh) 2016-03-23
CN105430228B CN105430228B (zh) 2018-03-20

Family

ID=55508144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510866003.8A Active CN105430228B (zh) 2015-12-01 2015-12-01 一种编码分组的可逆信息隐藏方法

Country Status (1)

Country Link
CN (1) CN105430228B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818266A (zh) * 2017-10-26 2018-03-20 浙江财经大学 基于像素置换的自适应可逆信息隐藏方法
CN110827187A (zh) * 2018-08-13 2020-02-21 厦门雅迅网络股份有限公司 一种信息隐写以及恢复方法
CN114915698A (zh) * 2022-05-23 2022-08-16 广西师范大学 一种基于行编码的可逆信息隐藏方法
CN117173000A (zh) * 2023-09-08 2023-12-05 广州市科帕电子科技有限公司 一种基于四进制编码的信息隐藏方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094483A (en) * 1997-08-06 2000-07-25 Research Foundation Of State University Of New York Secure encryption and hiding of data and messages in images
CN102164366A (zh) * 2011-01-30 2011-08-24 广西师范大学 基于jpeg图像信息隐藏的手机信息安全通信方法
CN103501400A (zh) * 2013-10-16 2014-01-08 广西师范大学 基于抛物线插值图像的可逆信息隐藏方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094483A (en) * 1997-08-06 2000-07-25 Research Foundation Of State University Of New York Secure encryption and hiding of data and messages in images
CN102164366A (zh) * 2011-01-30 2011-08-24 广西师范大学 基于jpeg图像信息隐藏的手机信息安全通信方法
CN103501400A (zh) * 2013-10-16 2014-01-08 广西师范大学 基于抛物线插值图像的可逆信息隐藏方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
陈芳,王冰: "基于文本字体的信息隐藏算法", 《计算机技术与发展》 *
雷芸等: "一种JPEG图像的信息隐藏算法", 《广西师范大学学报(自然科学版) 》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818266A (zh) * 2017-10-26 2018-03-20 浙江财经大学 基于像素置换的自适应可逆信息隐藏方法
CN107818266B (zh) * 2017-10-26 2020-07-14 浙江财经大学 基于像素置换的自适应可逆信息隐藏方法
CN110827187A (zh) * 2018-08-13 2020-02-21 厦门雅迅网络股份有限公司 一种信息隐写以及恢复方法
CN110827187B (zh) * 2018-08-13 2023-10-31 厦门雅迅网络股份有限公司 一种信息隐写以及恢复方法
CN114915698A (zh) * 2022-05-23 2022-08-16 广西师范大学 一种基于行编码的可逆信息隐藏方法
CN114915698B (zh) * 2022-05-23 2023-08-08 深圳市分享信息系统有限公司 一种基于行编码的可逆信息隐藏方法
CN117173000A (zh) * 2023-09-08 2023-12-05 广州市科帕电子科技有限公司 一种基于四进制编码的信息隐藏方法及系统

Also Published As

Publication number Publication date
CN105430228B (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
Jo et al. A digital image watermarking scheme based on vector quantisation
CN109462714B (zh) 云存储开销小的加密图像多位平面可逆数据隐藏方法
Zhang et al. Reference sharing mechanism for watermark self-embedding
Zhang et al. Optimal transition probability of reversible data hiding for general distortion metrics and its applications
CN105430228A (zh) 一种编码分组的可逆信息隐藏方法
CN103268588A (zh) 基于载体图像校验码的加密域无损可逆信息隐藏方法
CN103501400B (zh) 基于抛物线插值图像的可逆信息隐藏方法
Wang et al. An encoding method for both image compression and data lossless information hiding
CN101080013A (zh) 一种基于预测编码的jpeg无损压缩图像隐写方法
CN104284190A (zh) 一种基于ambtc高低均值最优化的压缩图像隐写编码方法
CN105227962A (zh) 一种基于数据差值的无损信息隐藏方法
JP7143973B2 (ja) 秘密データの隠蔽方法、これを実施するプログラム、及び秘密データ通信システム
Elshoush et al. A new high capacity and secure image realization steganography based on ASCII code matching
Yang et al. Huffman-code strategies to improve MFCVQ-based reversible data hiding for VQ indexes
CN114745475A (zh) 一种鲁棒的加密图像可逆信息隐藏方法
Nguyen et al. A reversible data hiding scheme based on (5, 3) Hamming code using extra information on overlapped pixel blocks of grayscale images
Chang et al. A novel data-hiding and compression scheme based on block classification of SMVQ indices
CN115379066A (zh) 基于自适应压缩编码的加密图像可逆数据加密解密方法
Zhang et al. Efficient data hiding with histogram-preserving property
Rahmani et al. A low distortion reversible data hiding scheme for search order coding of VQ indices
Akhtar et al. An improved module based substitution steganography method
Wang et al. Multi-dimensional and multi-level histogram-shifting-imitated reversible data hiding scheme
Jana et al. An efficient data hiding scheme using hamming error correcting code
Roy et al. Video Steganography Using Karhunen-Loève Transform
Varghese et al. A survey on joint data-hiding and compression techniques based on SMVQ and image inpainting

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230117

Address after: 518000 708, Huiyi building, No. 9, Zhongxin Road, Taoyuan community, Dalang street, Longhua District, Shenzhen, Guangdong

Patentee after: Shenzhen Hongyue Information Technology Co.,Ltd.

Address before: 541004 No. 15 Yucai Road, Qixing District, Guilin, the Guangxi Zhuang Autonomous Region

Patentee before: Guangxi Normal University

Effective date of registration: 20230117

Address after: No. 008, Nursery Base, 1-1-1, Building 8, Nanshan Highland, No. 153, Qingshuijiang Road, Huanghe Sub-district Office, Guiyang Economic Development Zone, Guizhou Province, 550000

Patentee after: Guizhou Boring Technology Service Co.,Ltd.

Address before: 518000 708, Huiyi building, No. 9, Zhongxin Road, Taoyuan community, Dalang street, Longhua District, Shenzhen, Guangdong

Patentee before: Shenzhen Hongyue Information Technology Co.,Ltd.