基于混沌理论和直方图移位的JPEG可逆数据隐藏方法

文档序号:34648043发布日期:2023-06-29 18:43阅读:26来源:国知局
基于混沌理论和直方图移位的JPEG可逆数据隐藏方法

本发明涉及可逆数据隐藏,具体涉及一种基于混沌理论和直方图移位的jpeg可逆数据隐藏方法。


背景技术:

1、rdh(reversible data hiding)又称可逆或无损数据隐藏技术,它可以将数据在不知不觉中隐藏到数字图像中,更重要的是,在提取嵌入数据的同时,可以完全重建原始图像而没有任何失真,具有广泛的应用场景。另一方面在日常生活中使用的各种数字图像格式中,jpeg是最受欢迎的。因此jpeg图像的可逆数据隐藏(rdh)对于许多应用(如档案管理和图像认证)非常重要和有用。然而,jpeg图像中的rdh比未压缩图像要困难得多,因为jpeg图像中的信息冗余比未压缩图像要少,而且压缩域中的任何修改都可能导致宿主图像失真。此外除了未压缩图像必须考虑的嵌入容量和保真度(视觉质量)外,嵌入信息后的jpeg文件(标记文件)的存储大小也应考虑在内。

2、目前,主要有三种jpeg图像可逆数据隐藏方案:

3、第一种方法是基于对jpeg量化表的修改,《ahigh capacity lossless datahiding scheme for jpeg images》提出将量化表中的部分元素除以一个整数,然后将相应的量化后的dct系数乘以相同的整数,可以为嵌入信息创建空间。第二种方法是是基于修改huffman表,《data embedding in jpeg bitstream by code mapping》指出编码器实际上只使用了jpeg编码空间的一小部分,可以通过将已使用的变长编码(vlc)映射到未使用的vlc来实现数据嵌入。第三种方法是基于量化dct系数修改,《reversible data hiding forjpeg images based on histogram pairs》提出了一种基于直方图对的jpeg图像rdh方法。该方法利用最优搜索策略对量化后的dct系数直方图进行移位,取得了较好的性能。

4、对于基于jpeg量化表的修改进行数据嵌入虽然容易获得较高的嵌入容量和高视觉质量,但是正如我们所知,jpeg文件的原始量化表在文件大小和编码图像的感知质量之间提供了相当大的权衡。这种方法可能不可避免地破坏文件大小和宿主jpeg图像感知质量之间的平衡。一般来说,标记后的jpeg文件的存储大小可能会显著增加。

5、基于修改huffman表来进行数据隐藏既能保证嵌入数据后标记jpeg图像的视觉质量,又能保持图像的存储大小。然而,该方法的嵌入能力是相当有限的,一般情况下,一些尺寸为512×512的标准测试图像只能嵌入数百位,极大地限制了该方案的应用场景。此外,这种方法只能应用于用非优化的霍夫曼表编码的jpeg图像。

6、修改量化dct系数进行数据嵌入是目前最受欢迎的方法,在过去的很多年已经得到了相当多的关注。《reversible data hiding for jpeg images based on histogrampairs》在嵌入过程中只选择低频和中频dct系数来嵌入数据,取得了较好的性能,但是在系数选择以及文件大小保存方面还有优化的空间,需要更好地去处理嵌入容量、视觉质量和文件大小保存相对应的基本问题。


技术实现思路

1、针对现有技术的不足,为了在嵌入容量、视觉质量和文件大小保存之间取得良好的平衡,本发明提出一种基于混沌理论和直方图移位的jpeg可逆数据隐藏方法,首先选用分段线性混沌系统pwlcm作为伪随机数生成器生成伪随机密钥序列用于加强信息嵌入的隐蔽性;其次采用一种新的量化dct系数块选择策略,在绝对值为1的ac系数(dct变换后得到的交流分量简称ac系数,直流分量简称dc系数)中嵌入秘密数据,理论上具有较好的嵌入容量并且对文件大小保存和视觉质量也未造成太大的影响。

2、为实现上述技术效果,本发明提出的一种基于混沌理论和直方图移位的jpeg可逆数据隐藏方法,包括以下步骤:

3、步骤1:根据jpeg图像使用混沌系统生成伪随机序列;包括:

4、步骤1.1:将jpeg图像作为sha-256哈希函数的输入用来生成256位随机散列值;

5、步骤1.2:分别统计256位散列值奇位数上值为1的个数odd、偶位数上值为1的个数even;

6、步骤1.3:根据得到的odd、even修改pwlcm混沌系统的初始值a0和控制参数p0,公式如下

7、

8、式中,a′0表示修改后的初始值,p′0表示修改后的控制参数值;

9、步骤1.4:将得到的a′0、p′0作为初始值对pwlcm分段线性混沌映射进行迭代计算,生成伪随机序列x;具体表述为:

10、第一次迭代计算得到的伪随机值a1表示为:

11、

12、第i+1次迭代计算得到的伪随机值ai+1表示为:

13、

14、设置最大迭代次数k,其中i=1,2,…,k,根据所有迭代过程输出的{a′0,a1,…,ak}得到伪随机序列x;

15、步骤2:通过熵解码jpeg图像获得量化后的离散余弦变换dct系数,得到dct系数块;包括:

16、步骤2.1:根据jpeg图像的存储格式,获取原始jpeg图像的压缩数据以及huffman编码表;

17、步骤2.2:对ac系数进行rle(游程编码,run length encoding)的逆操作和对dc系数进行dpcm(差分脉冲编码调制,differential pulse code modulation)的逆操作得到量化dct系数;

18、步骤2.3:通过zigzag扫描(z字型扫描)把整个图像的dct系数重新排列成8×8的dct系数块;

19、步骤3:计算每个8×8的dct系数块中dct系数绝对值为1的ac系数的数量p(对应1和-1)以及其它非零ac系数的数量q;

20、步骤4:设置块选择指标r用于将所有的8×8的dct系数块划分为两部分;包括:

21、步骤4.1:计算每个8×8的dct系数块的指标r=p/q;

22、步骤4.2:将8×8的dct系数块根据指标r进行降序排序;

23、步骤4.3:选择t=rj(j=1,2,3…n),rj表示第j个8×8的dct系数块的r指标,n为8×8的dct系数块的数量,计算出前j个8×8的dct系数块中绝对值为1的ac系数的数量pt表示第t个8×8的dct系数块中绝对值为1的ac系数的数量;

24、步骤4.4:若s≥(l+len1+len2),则确定当前的t值即为块选择的阈值,否则令j=h+1,继续执行步骤4.3~步骤4.4,其中l为秘密信息的比特数,len1表示l值需要的比特数,len2表示阈值t所需的比特数;

25、步骤4.5:将指标r不小于阈值t的所有8×8的dct系数块划分为第一部分用于数据嵌入,其余块作为第二部分;

26、步骤5:将提取信息时所需的辅助信息和要隐藏的秘密信息嵌入到8×8的dct系数块中,包括:

27、步骤5.1:用伪随机序列x置乱所有的8×8的dct系数块;具体表述为:将伪随机序列x进行升序排序,然后遍历伪随机序列,如果伪随机序列的第i'个位置的元素排序后移动到了第j'个位置,则相应地把第i'个位置的8×8的dct系数块移动到第j'个位置,然后令i'=i'+1继续遍历直到i'=n,n为8×8的dct系数块的数量;

28、步骤5.2:嵌入提取秘密信息时所需的辅助信息;具体表述为:对每个8×8的dct系数块依次zigzag扫描ac系数,将秘密信息长度l(len1位表示)和阈值t(len2位表示)嵌入到宿主图像中;嵌入信息公式如下:

29、

30、式中,ci代表非零ac系数,b代表要嵌入的信息位,b∈{0,1},代表嵌入信息后的新的ac系数;

31、步骤5.3:嵌入秘密信息;具体表述为:依次遍历每个8×8的dct系数块,如果被访问的8×8的dct系数块的r指标不小于阈值t,则zigzag扫描当前系数块的ac系数并按照公式(1)嵌入秘密信息位,否则不进行处理,继续按照从左到右从上到下的顺序访问下一个8×8的dct系数块;

32、步骤6:将所有l位秘密信息嵌入后,将置乱后的8×8的dct系数块恢复到原来的位置,并对嵌入信息后的新的系数块进行熵编码,得到标记的jpeg图像。

33、本发明的有益效果是:

34、本发明使用sha-256算法修改混沌系统的初始条件使得不同的原始图片拥有不同的伪随机序列,进一步加强了本发明信息嵌入的隐蔽性。另一方面,本文方法未修改量化块中的零ac系数,只对绝对值为1的ac系数展开以携带秘密信息,并且在信息嵌入过程中根据ac系数值为1的数量与其他非零系数的数量的比值r进行嵌入系数块的选择,很好地保存了图像的视觉质量和存储大小,而本方案的嵌入容量取决于dct系数块中绝对值为1的ac系数数量。

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