High Capacity Reversible Data Hiding in Encrypted Images Based on Adaptive MSB Prediction【2022】

VRAE

一、研究背景

1、封面图象以像素为单位进行加密,破坏了相邻像素的相关性,不能再用来腾出空间嵌入数据。

2、通过引用预测误差的RDHEI方法,所有像素被分为合格集合和禁止集合,通过密钥从合格集合中伪随机地选择若干像素,进行数据嵌入。这种伪随机选择像素进行信息隐藏的模式使得不同的数据隐藏密钥会产生不同的嵌入容量。另外这种方法不能将恢复图像和提取信息进行分离,需要在图像解密之后提取秘密信息。

二、方法概括

首先以逐块方式加密覆盖图像,使得块内像素的相关性被保留。接下来,所有的块被排列以完成最终的加密。

在数据嵌入过程中,块内左上角的像素用于预测其他像素,从而腾出嵌入空间。然后,选择可用的块,并重新排列所有的块,以确保可逆性。

合法接受者根据拥有的不同密钥进行解密获得信息。

三、方法流程

A图像加密

1、块级流加密

首先将原始图像M\times N进行非重叠分块处理,每一个块的大小为2\times 2,所有像素块的数量n可以计算为

 然后将所有像素转化为8为二进制:

 其中(i,j)是块的索引,m是块内按行对像素的索引,k是转化为8位二进制之后对每一位的索引,即b_m^k(i,j)表示,位于(i,j)块的第m个像素的第k个bit位。

接着使用加密密钥生成一个大小为(\left \lfloor \frac{M}{2} \right \rfloor,\left \lfloor \frac{N}{2} \right \rfloor)的伪随机矩阵,将矩阵内的所有元素分解成8位二进制。

最后,根据生成的伪随机矩阵对原始图像进行流加密操作

 根据公式可得,块内的像素使用同一个序列进行加密。

但是,块级加密使得每个加密块与原始图像具有高度相似的复杂性,通过复杂性分析在一定程度上可以揭示图像内容。因此,还需要加密得第二步块置换操作。

本文进行的复杂性过程如下:

首先,将加密后的图像分成2\times 2大小的非重叠块。对于每个块,首先计算由P_a表示的所有像素的平均值。

接下来,计算每个像素与P_a之间的差。对于所有差异小于等于预定义阈值的平滑块,像素都变为255。对于其他块,所有像素都变为0。

以Lena图像为例,设定阈值为10,进行复杂性分析结果如图:

(a)原始图像(b)加密的原始图像(c)复杂性分析

2、块置换

对经过第一阶段得块内元素流加密之后,再将图像分成2\times 2大小的非重叠块,使用加密密钥进行块置换,生成最终的加密图像。再次使用复杂性分析发现难以获得原始图像信息(c),所以加密是有效的。

B自适应MSB预测(AMP)

信息隐藏者接收到加密图像之后需要腾出空间进行数据嵌入。

将图像分成 2\times 2 的不重叠像素块,所以每个像素块拥有4个像素(被分成八位,也就是用二进制来表示),将它们标注为P,C_1,C_2,C_3 ,如图所示。

 P用于预测C_1,C_2,C_3,并用作像素数据载体。 

d_i=dif(P,C_i),i=1,2,3

根据上式分别获得三个变量 d_1,d_2,d_3 ,其中 dif(\cdot )返回的是P,C从高位到低位【从左到右依次为87654321位】索引首个不同表示的所在位置。举个例子: 

171=(101_(0_) 1011)_2

 180=(101_(1_)0100)_2

dif(171,180)=5

从高到低索引,发现()内的不同,其位置属于第五个位置,故dif=5。

获得d_1,d_2,d_3之后,可以计算md的值: 

md=8-max(d_1,d_2,d_3)

 得到md的值之后,将其分解为三位【12345678的八个位置依次表示为000-111】。e_1,e_2,e_3表示 C_1,C_2,C_3 的预测误差 = 8-md LSBs

然后就可以重构像素位:

 其中p占8位(保留预测像素的像素值)、md占3位(指示多少位是相同的信息),e总共占 3\times(8-md)n_c3\times (md-1),总共是32位。

 所以可以将所有的像素块分为四种,第一种空出的空间d=7被辅助信息填满,第二种误差为0d=0腾出大量的空间,第三种根据相同的位置d\in [1,6]确定腾出的空间,第四种d=8不能嵌入,如图:

 

 md=1表示第一个位置,所以表示为000,一个的预测误差就占了8-md =7个LSBs,总共就是3×7=21位,所以嵌入空间为0.

 md=8,最后一个位置表示为111,意味着此像素块所有的像素值都相同,预测误差为0,所以可以嵌入3×(8-1)=21bit的信息

 md=5,md第五个位置表示为100,预测误差就是8-5=3个LSBs,共占9个,所以能够嵌入12bits。

md=0,这种类型的像素块将从数据嵌入中排除。 

C数据隐藏

首先将图像分成 2\times 2 的不重叠像素块,选择md> 0的像素块作为可用块进行信息嵌入。同时为了将这些嵌入数据的块与其他的块分开,生成一个大小为\left \lfloor \frac{M}{2} \right \rfloor\times \left \lfloor \frac{N}{2} \right \rfloor的二进制矩阵作为可用块的位置映射【目的确保可逆】。1表示可用,0表示不可用。

然后进行块重新排列,可用块按照栅格扫描顺序收集,不可用块按照逆向栅格扫描顺序收集。如图

(a)原始图像对应的块的顺序(b)位置映射,标记的可嵌入和不可嵌入块(c)A可用块集合,B不可用块集合

 数据隐藏者使用加密密钥对数据进行加密。然后进行嵌入,通过算数压缩编码压缩位置映射,以及压缩后的长度信息作为辅助信息需要保存到最开始的几个可用块中,剩下的位置嵌入加密后的附加数据。

如图,给出一个嵌入附加数据“111”的实例:

 进行数据重构后的像素就变成了

53——0011 0101        63——0011 1111        23——0001 0111

D数据提取和图像恢复

恢复图像:被标记的图像被分割成大小为  2\times 2 的不重叠块。对于前几个块,将四个像素分解获得位置映射,从中恢复出P和md,接着是误差和隐藏数据

根据md的提示将p进行截断,再和e_i进行连接,获得了  C_1,C_2,C_3的值。

  • 41
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值