APP下载

基于插值技术和多层折叠的可逆数据隐藏算法

2022-06-14陈艺樊梦婷熊祥光

科学技术与工程 2022年14期
关键词:直方图插值秘密

陈艺, 樊梦婷, 熊祥光

(贵州师范大学大数据与计算机科学学院, 贵阳 550025)

随着互联网技术的飞速发展,数据安全越来越受到人们的高度重视,尤其是在一些诸如医学、军事通信、遥感等特殊的应用领域,不仅需要数据的安全性和保密性,更需要数据的完整性。传统的数据隐藏技术无法满足新的需求。因此,人们提出了可逆数据隐藏(reversible data hiding,RDH)技术。该技术可将秘密数据嵌入到载体信号中,并且能够完整地提取嵌入的秘密数据和确保载体信号无损地恢复,这在特殊的应用领域非常实用,目前受到学术界和工业界的广泛关注。

近年来,研究者们提出了多种RDH方法,在确保能提取嵌入的秘密数据和恢复原始信号的前提下,不断地提高嵌入性能和抗解密能力。Fridrich等[1]提出了基于图像无损压缩的RDH算法,该算法的主要原理是对原始图像进行无损压缩以得到冗余空间,然后将秘密数据嵌入到冗余空间中。虽然该算法的秘密数据嵌入过程非常简单,但是嵌入容量有限,限制了该算法的实际应用。后来,RDH技术得到了广泛研究。一般来说,根据秘密数据嵌入策略的不同,RDH技术大致可分为三类:基于差值扩展(differential expansion,DE)的可逆数据隐藏算法[2-5]、基于直方图平移(histogram shifting,HS)的可逆数据隐藏算法[6-10]和基于插值技术(interpolation technology,IT)的可逆数据隐藏算法[12-16]。

Tian[2]最先提出基于DE的RDH算法,通过像素对之间的差值进行扩展以嵌入秘密数据。与基于压缩技术的RDH算法相比,虽然有效地提高了嵌入性能,但是嵌入秘密数据后的图像可能会出现像素值溢出,需对这部分像素值进行溢出处理,影响纯嵌入容量的大小。Ou等[3]利用两个相邻的预测误差来生成一个由预测误差对组成的序列进行秘密数据嵌入,提高了算法的整体性能。Dragoi等[4]研究了局部预测在差值扩展可逆数据隐藏中的应用,提出了一种新的基于四元差值扩展的多层嵌入方法,Arham等[5]提出一种改进的算法来减少像素中的差值,从而提高数据隐藏的容量和视觉质量。随后Ni等[6]提出基于HS的RDH算法,该算法利用载体图像像素直方图的特点进行秘密数据嵌入。虽然该算法具有很好的视觉质量,但是总体来看该算法的性能不是很好,嵌入容量不高。后来,基于HS思想,一系列改进算法[7-11]相继被提出。例如,Luo等[7]采用插值预测技术将秘密数据嵌入预测误差直方图中;Thodi等[11]结合DE和HS两种方法的优点,提出新的预测误差扩展方案,将秘密数据嵌入到预测误差直方图中,提高了算法的整体性能。

Jung等[12]最先提出基于IT的RDH算法,该算法先基于原始图像应用邻域均值插值(neighbor mean interpolation,NMI)方法生成插值图像;然后仅在插值像素中嵌入秘密数据,具有非常高的嵌入容量和视觉质量。后来,Lee等[13]在Jung等[12]的工作基础上,提出基于邻域像素插值(interpolation by neighboring pixels,INP)方法的可逆数据隐藏算法。该算法根据相邻像素进行加权插值,然后在插值像素中嵌入秘密数据。与文献[14]相比,嵌入容量有所提升。然而,该算法的整体性能还有进一步提升的空间。文献[14-16]对插值方法和嵌入方法进行改进,与文献[12-13]中的算法相比,性能有所提升。文献[17]采用中心折叠策略(center folding strategy,CFS)对待嵌入的秘密数据进行重编码,然后再嵌入编码后的数据。该算法通过将秘密数据进行折叠,有效地减少了嵌入秘密数据后造成的失真,在相同的嵌入容量条件下,具有更好的视觉质量。Lu等[18]将CFS和INP两种技术相结合,提出基于插值自适应的可逆数据隐藏算法。该算法先将输入图像缩小以生成原始图像,并将其分成若干不重叠的3×3像素块;然后利用INP插值方法对像素块进行插值。在嵌入秘密数据之前,对待嵌入的秘密数据采用中心折叠策略先进行编码,然后再嵌入。此外,利用分块中4个参考像素的方差来判断待嵌入秘密数据的长度,有效地提高了图像质量和隐藏能力。然而,在对秘密数据进行编码的过程中,待嵌入的秘密数据被编码成正负两部分,各部分的最大值仍然较大,直接嵌入仍会造成失真较大。Lu等[21]提出一种新的多层折叠方案,将秘密数据折叠编码成码对,再将其嵌入到插值图像的插值像素中。该编码对比原始秘密数据的编码对小,有效地降低了图像的失真。然而,该算法的性能仍然有进一步提升的空间。通过分析发现在该方案中,虽然通过多层折叠将秘密数据编码成码对,编码后的数据已较小,但是该方案并未充分利用多层折叠编码的性能,存在两个不会造成额外失真的码对。为进一步提高嵌入容量和嵌入数据后的图像质量,基于插值和改进的多层编码技术提出了一种改进的可逆数据隐藏算法。首先,提出一种改进的图像插值算法生成插值图像;其次,对待嵌入的秘密数据进行重编码。编码时考虑在每个不会造成额外失真的码对中额外嵌入一个秘密数据位以提高嵌入容量。同时,使用失真更小的中心折叠方案以进一步减小嵌入秘密数据后的失真。现以基于图像插值的多层折叠编码为研究内容,以高率失真性能为目标,以期为基于图像插值的可逆信息隐藏技术提供理论基础。

1 相关工作

1.1 NMI插值方法

Jung等[12]提出的算法先对w×h(w和h分别为图像的宽和高)的输入图像I进行下采样,生成大小为(w/2)×(h/2)的原始图像O;然后,利用插值算法将插值像素插入相邻的原始像素之间,生成与输入图像同大小的插值图像C,相应的插值方法为

C(i,j)=

(1)

式(1)中:1≤i≤w/2;1≤j≤h/2。对于插值图像C中的边界像素,用前一行和前一列对应位置上的像素进行填充即可。

1.2 文献[21]的方法

(2)

(3)

(4)

(5)

式(5)中:Nind为4比特索引码对应的十进制数。

然后,将编码后的数据Nind嵌入中心插值像素中,即

p′c=pc+Nind

(6)

式(6)中:pc为3×3分块的中心像素值;p′c为嵌入4比特索引码后的像素值。

图1 文献[21]的数据嵌入流程图Fig.1 Data embedding flowchart of reference [21]

1.3 文献[21]方法的潜在改进

对Lu等[21]的方案进行深入分析后发现:

(1)虽然使用阈值控制策略可有效地减小失真,但是不同类型的图像的嵌入容量波动较大,平滑图像的嵌入容量往往较高,而纹理丰富的图像的嵌入容量往往较低。

(2)虽然通过中心折叠编码有效降低了嵌入秘密数据后的失真,但是该方案并未充分利用编码的性能对秘密数据进行折叠编码。例如,在该方案中,有两个码对(0, 2)和(1, 2)并未使用。事实上,当嵌入3位秘密数据时,索引码indq可以设置成0

表1 嵌入3位秘密数据时的编码方案

表2 提出的编码方案和文献[21]的编码方案对比

2 本文算法

一般情况下,嵌入秘密数据后,插值像素可能会出现溢出。对于提出的算法,在插值阶段先对插值像素进行溢出处理,然后再嵌入秘密数据,使嵌入秘密数据后不会出现溢出。

2.1 图像插值方法

提出的图像插值方法如图2所示。在图2中,Oim为第i个分块中的第m(m=1,2,3,4)个像素值。

图2 提出的图像插值方法Fig.2 The proposed image interpolation method

具体的插值步骤如下。

(1)将输入图像O划分为若干2×2像素块,然后使用式(7)将第i个2×2像素块插值生成3×3的像素块。

(7)

(2)生成插值图像后,在嵌入秘密数据过程中可能会出现像素值溢出现象。在嵌入秘密数据过程中,假设在每个插值像素中嵌入3位的秘密数据,则插值像素Ci1、Ci2、Ci3和Ci4的像素值变化范围为[-2, 2]。当这些插值像素的像素值范围为[2, 253]时,嵌入秘密数据后就不会出现溢出。中心插值像素Ci0的变化范围为[-7, 8],当像素值范围为[7, 247]时,嵌入秘密数据后就不会出现溢出。因此,为了解决嵌入秘密数据后的溢出问题,利用式(8)和式(9)对生成的插值像素进行溢出处理。

(8)

(9)

2.2 数据嵌入方法

在嵌入秘密数据之前,先对秘密数据进行编码,秘密数据嵌入流程图如图3所示,详细的嵌入步骤如下。

(10)

(11)

C′q=Cq+d′q

(12)

(3)将四位索引码indq按顺序排列,通过式(13)将其转换成十进制整数sum_ind。

(13)

(4)为使嵌入秘密数据后中心插值像素Ci0的失真较小,采用偏移折叠(偏移值k_a的选取如表3所示)的方式对索引码进行折叠编码,即

sum_ind′=sum_ind-k_a

(14)

(5)将折叠后的数据sum_ind′嵌入中心像素Ci0中。当所有分块都嵌入秘密数据后,嵌入过程完成。

C′i0=Ci0+sum_ind′

(15)

嵌入的秘密数据的提取方法是嵌入方法的逆过程,限于篇幅,这里不再赘述。

图3 提出算法的流程图Fig.3 The flowchart of the proposed algorithm

图4 提出算法的数据嵌入和提取示例Fig.4 An example of data embedding and extraction of the proposed algorithm

2.3 嵌入提取示例

当嵌入秘密数据时,原始像素块O通过式(7)生成插值像素块C。对于第一个插值像素C(1,2)=51,将3位二进制秘密数据转换成十进制,即S1=(001)2=(1)10。然后,使用式(10)和式(11)将其编码成索引码ind1=0和折叠码d1=S1=2b-2=-1。最后,将折叠码嵌入到插值像素C(1,2)中,即W(1,2)=C(1,2)+d1=50。类似地,可在余下的3个插值像素C(2,1)、C(2,3)和C(3,2)中分别嵌入3位秘密数据。在这4个插值像素中嵌入秘密数据后,得到4位索引码组成的二进制位串,然后将其转换为十进制数,即sum_ind=8ind1+4ind2+2ind3+ind4=5。通过折叠后sum_ind′=sum_ind-7=-2,再将其嵌入到中心插值像素中,即W(2,2)=C(2,2)+sum_ind′=48。

提取秘密数据时,采用相同的插值方法得到相同的插值像素块C。对于嵌入秘密数据后的插值像素W(2,2),嵌入的数据为sum_ind′=W(2,2)-C(2,2)=48-60=-2,通过逆编码,可以得到编码前的4位秘密数据为 (0101)2。即4个插值像素C(1,2)、C(2,1)、C(2,3)和C(3,2)的索引码分别为0、1、0和1。插值像素C(1,2)嵌入的秘密数据为:d1=W(1,2)-C(1,2)=-1,根据得到的索引码ind1=0,可计算出秘密数据S1=2b-2+d1=(1)10=(001)2,和嵌入的3位秘密数据相同。类似地,可在C(2,1)、C(2,3)和C(3,2)三个插值像素中提取嵌入的秘密数据。

3 实验结果及分析

为测试提出算法的性能,从BossBase和BOWS-2图像数据库中各随机选取100张图像作为输入图像,待嵌入的秘密数据为伪随机产生的二值信号。采用峰值信噪比(peak signal to noise ratio,PSNR)和比特率(bit per pixel,BPP)来分别衡量嵌入秘密数据后图像失真与嵌入容量的性能。PSNR和BPP的计算公式为

(16)

(17)

式中:xi和x′i分别为输入图像和嵌入秘密数据后图像的第i个像素值;w、h和M分别为输入图像的长度、宽度和已嵌入在插值图像中的秘密数据长度。

在秘密数据嵌入过程中,因为编码时采用移位的编码策略,导致生成的索引码0和1不再是等概率分布,所以在每个分块的中心像素嵌入秘密数据时,中心折叠策略不再适合提出的算法。为了选取合适的k_a值,在随机选取的100张图像上进行实验,相应的统计结果如表3所示。从表3可以看出,当k_a=7时,嵌入秘密数据后隐秘图像的PSNR最好。因此,在下面的实验中,k_a都设置为7。

图5为本文算法与文献[21]算法在最大嵌入容量时的比较。从图5可以看出,本文算法在每张图像上嵌入的秘密数据容量是相同的,而文献[21]算法具有一定的波动。主要原因是本文算法在图像插值阶段使用了溢出处理策略,使在嵌入秘密数据时不会出现溢出,所有的插值像素都能嵌入秘密数据,使得所有图像的嵌入容量相同。然而,文献[21]算法使用自适应方案,导致不同载体图像的嵌入容量有所不同。

表3 中心像素不同折叠方案的对比

图5 每幅图像的嵌入容量比较Fig.5 Comparison of embedding capacity of each image

为测试本文算法的性能,以0.1 BPP为初始值和0.1为步长,测试在相同的BPP条件下隐秘图像的质量。在Goldhill和Airplane这两张典型图像上的实验结果如图6所示。从图6可以看出,本文算法的性能均优于同类算法,相较于文献[21]的算法,本文算法不仅在嵌入容量上有所提高,而且在嵌入相同BPP容量数据的条件下,本文算法也具有更好的PSNR值。

图6 Airplane和Goldhill两幅图像的比较结果Fig.6 Comparison of Airplane and Goldhill images

表4显示在BPP为1.3时不同算法的性能对比。从表4可以看出,提出算法的PSNR是最高的。与文献[18-21]中的算法相比,PSNR分别提高了10.26%、10.85%、6.11%和1.62%,平均提高率为7.21%。

此外,为进一步测试提出算法的优越性能,在BossBase和BOWS-2数据库中各随机选择100张图像进行实验,相应的实验结果如图7所示。从图7可以看出,在相同的BPP条件下,本文算法具有更高的PSNR值,表明本文算法具有更好的性能。

图8为插值图像和嵌入秘密数据后图像的直方图比较结果。从图8可以看出,插值图像和嵌入秘密数据后图像的直方图非常相似。因此,提出算法能够抵抗直方图隐写分析攻击。图9为插值图像和嵌入秘密数据后图像的RS(regular singular)隐写分析结果。从图9可以看出,提出算法也能抵抗RS隐写分析。

表4 不同算法在不同数据集上插值图像和隐密 图像的PSNR对比

图7 几种相似算法的比较结果Fig.7 Comparison results of several similar algorithms

图8 直方图对比分析结果Fig.8 Comparison of histogram analysis results

图9 RS隐写分析结果Fig.9 RS steganalysis results

4 结论

提出了一种基于插值技术和多层折叠的可逆数据隐藏算法,具有如下的特点。

(1)先对输入图像进行互不重叠的2×2分块,然后对每个分块利用提出的图像插值算法生成3×3 的分块。为使嵌入秘密数据时不出现溢出,在插值阶段对插值像素进行了溢出处理。

(2)对待嵌入的秘密数据进行多层折叠编码,然后再嵌入插值像素中,使插值像素的失真尽可能地降低,提高了隐秘图像的视觉质量。在 BossBase 和BOWS-2图像数据库上的大量实验结果表明,与同类算法相比,在相同的BPP条件下,提出算法在PSNR方面有显著的提高。此外,提出算法也能抵抗直方图和RS隐写分析,这些结果表明提出算法是有效的。

猜你喜欢

直方图插值秘密
符合差分隐私的流数据统计直方图发布
滑动式Lagrange与Chebyshev插值方法对BDS精密星历内插及其精度分析
基于FPGA的直方图均衡图像增强算法设计及实现
用直方图控制画面影调
基于pade逼近的重心有理混合插值新方法
混合重叠网格插值方法的改进及应用
中考频数分布直方图题型展示
愿望树的秘密(二)
我心中的秘密
第十三章 进化的秘密!