基于局部相关的分类和自适应编码策略在加密图像中的可逆数据隐藏【2023】with local-correlation-based classification and adaptive....

VRAE

论文全称:Reversible data hiding in encrypted image with local-correlation-based classification and adaptive encoding strategy.

方法总述:

首先,图像所有者利用块级加密方法,包括块级逐位异或运算和块置换,获得加密图像。

然后,对于加密图像,数据隐藏者首先使用基于局部相关性的分类机制将块划分为不同的类型,然后根据不同的类型,采用不同的方法(包括空间的空出、自适应编码的策略和分层处理)实现数据的嵌入。

最后,接收者根据不同的密钥可以恢复原始图像以及获得附加数据(秘密信息)。

具体方法操作 

图像加密

对图像进行块的预处理

字母表示

I_0

原始图像j(1\leqslant j\leqslant n\times n)块内像素索引
N\times N原始图像的大小\left \{ O_1,O_2,...,O_m \right \}块的集合
n\times n块的大小P_{i,j}i个块里的第j个像素
m块的个数k(1\leqslant k\leqslant 8)像素的位平面索引
i(1\leqslant i\leqslant m)块的索引P_{i,j,k}P_{i,j}的8位二进制表示

将像素的二进制表示转换为十进制公式如下:

索引像素P_{i,j}的第k个位平面公式如下:

块级加密

字母表示
R流密码序列
r流密码的8位二进制表示
E进行流加密后的值
e加密后的8位二进制表示

方法:流密码。

根据流密码生成器生成R(m\times 8),对于第O_i个块,就使用R_i对块内每一个像素进行加密(也就是说块内的每一个像素使用同一个流密码R_i加密)。

R_i序列的二进制转化为十进制的公式:

 加密时,将P_{i,j}R_i进行按位异或运算:

也就是在各个位平面上进行如下操作:

 加密后的E_{i,j}二进制序列转化为十进制序列公式:

 块置换

得到所有的流加密块之后,进行块的置换,得到置换图像I_e。注意,只打乱块的顺序,保留块内的像素值顺序。

基于局部相关性的分类机制

首先需要对I_e进行处理,才能进行后续操作。首先先将I_e分成m个不重叠的块得到\left \{ B_1,B_2,...,B_m \right \},同样,每一个块内包含n\times n个像素值\left \{ E_{i,1},E_{i,2} ,...,E_{i,n\times n}\right \},每一个块内的像素都可以集合成一个一维块序列B_i

由于异或和块置换的操作,保留了图像的像素相关性,因此图像存在从最高有效位开始的相同的连续高阶位平面(ICHOBPs),其数量被定义为局部相关性(即高位平面应该是由几个连续的0组成),用num_i表示,也表征了该块的冗余空间。

确定num_i的值需要对B_i块内的像素进行排序,找到最大值记为\bar{E}_i、最小值记为\underline{E}_i,二者异或得到X_i

 定义f就是\chi _{i,k}从高位到底位第一个数值为1的位置,而num_i=8-f。(证明省略)

num_i的取值范围是0-8,简单的摒弃8,所以用3位二进制就可以表示。

二进制编码作为辅助信息替换B_i块内前三个像素的LSB值。所以原始的最低位平面值进行保存嵌入,具体嵌入情形如下:

根据 num_i的值就可以建立局部的像素相关机制。

多层处理机制 

主空置空间操作

解释:每一个块都通过上一步的操作得到了num_i,并将其包含的位平面作为冗余空间,这个冗余空间就是主空置空间(Primary Vacating Room (PVR))。如下图中三个黄色的位平面就是主空置空间。

举例,也是对上一节计算num_i的解释:

针对 (a)这个块,\overline{E}_i=50=\left ( 00110010 \right )_2\underline{E}_i=32=\left ( 00100000 \right )_2,二者进行异或计算

\overline{E}_i\bigoplus \underline{E}_i=00010010

所以f=5,故num_i=3,二进制表示为'011'。

自适应编码策略

目的:进一步提高嵌入容量。

多层处理机制的概率图如下:

接下来做详细介绍。 

第一种情况

假设4个MSB可以用来嵌入附加数据,当读取到的num_i = 1or2时(图中黄色),剩余的可利用空间定义为M_i为3或2(图中白色),蓝色区域不进行嵌入。

为了获取每个m_{i,j}中可用的空间,将所有像素集合得到M_{i}=\left \{ m_{i,1},m_{i,2},..., m_{i,j}\right \},假设集合内有 \lambda _i 不同的像素m_{i,j}。【猜想一:因为每个位平面的数值要么是0要么是1,假设当num_i=1时,还有三位可嵌入的空间,也就是说有8种不同的二进制编码方式,每一个块内包含的编码方式的种类就是\lambda _i的值

如果\lambda _i与预先设定的阈值T(文献中设定2)相同,那就使用自适应编码策略,如果不同就只使用黄色区域腾出的空间。【阈值的设定也是利用了像素之间的局部相关性】假设T=2,代表M_i中只用两种不同的像素值(分别设为M_1M_2)时才使用自适应编码策略。

自适应编码策略:

M_1编码为1、M_2编码为0;

通过扫描块中的每一个像素,就可以获得m_{i,j}的值,针对每一个像素,根据下列式子进行赋值:

如果num_i=1,也就是还有4-1=3个位平面的可嵌入空间,上式只是对第七个位平面进行了编码,剩下的第六和第五位平面的值用0替换;如果num_i=2,也就是还有4-2=2个位平面的可嵌入空间,上式只是对第六个位平面进行了编码,剩下的第六和第五位平面的值用0替换。

【But,以num_i=1为例,如果M_i适用自适应编码策略,说明第i块内有\lambda _i=T=2种不同的m_{i,j}种类,分别属于M_1M_2,如果m_{i,j}=M_1,第7个位平面编码为1,如果m_{i,j}=M_2呢?同一个块内,num_i不可能即等于1又等于2,如何表示?示例的意思就是相反即可

绿色被编码为m_{i,j},只需要一个位平面进行表示。所以通过自适应编码策略腾出了白色的可嵌入空间。

为了图像达到可逆的目的,需要将是否适用自适应编码S_i、以及M_1M_2的种类作为辅助信息进行嵌入,辅助信息的总体结构如下:

S_i值的确定:确保腾出的空间可以增加可嵌入容量,否则辅助信息过长会起到适得其反的效果。

也就是当S_i=1表示可使用自适应编码。由于再前面介绍了num_i需要嵌入到前三个像素中,所以S_i替换第四个像素中的最低位,原始的值根据下式嵌入:

M_1M_2的辅助信息用M_{aux}表示,其长度计算,例如当num_i=1时,(4-num_i)\times T=(4-1)\times 2=6。如果腾出的空间大于辅助信息需要的空间则将M_{aux}嵌入到第五个像素的LSB中。

第二种情况

当读取到num_i=0时。

字母表示
S_G像素值大于128的值得集合
S_L像素值小于128的值得集合
LM

位置标记图(Location map)

c_xr_x扫描方式
tc_xr_x的结果类型

num_i=0,也就是S_GS_L出现的情况一般是图像纹理变化较大的边缘位置,而这些边缘位置有可能是竖直的、也有可能是水平的。所以用两种策略来生成LM,并减小相应的尺寸。

 如果只有一种结果则设为t,即c_1=c_2=c_3=...=c_n=t或者r_1=r_2=...=r_n=t,然后记录扫描顺序和t,并把相应的方法定义为LM_1

如果c_xr_x不止一种结果,则不改变像素的最高位,该方法定义为LM_2;

最后,利用PVR分别为S_GS_L腾出空间。

同时,如果嵌入空间比辅助信息空间大,使用LSB存储辅助信息来恢复原始图像,如果LSB不够使用第二层,具体辅助结构如下图:

字母表示
S_1确定是否使用块(0不可嵌)
S_2确定LM的生成方式(0:LM_2)
S_3标记扫描方式(1列0行)
num_{S_G}S_G的ICHOBP(相同的连续高阶位平面)
num_{S_L}S_L的ICHOBP(相同的连续高阶位平面)

如果 S_1=0,辅助信息只包含S_1num_i

数据嵌入

根据LSB前三位像素嵌入的num_i来进行相应的策略进行数据嵌入。

num_i\geqslant 3,只使用PVR,废话少说,给一个具体的例子~

max:50=\left (00110010 \right )_2                min:32=(00100000)_2

num_i=3=(011)_2,(b)中红色是PVR产生的可嵌入空间,蓝色最低位平面的值;(c)中蓝色部分就是嵌入的最低位值,橙色部分嵌入num_i的编码【图中橙色有误】;(d)中绿色是嵌入的秘密信息;(e)是给出了一个可嵌入空间被秘密信息替代的例子。

当 num_i=1or2时,通过e_{i,4,1}确定块是否使用自适应编码策略,如果e_{i,4,1}=0直接跳过这个块;否则,通过下式将有效载荷嵌入到相应的空间中

 直接上例子~以可嵌入的MSB设置为4为例

(a)加密块的二进制表示;(b)红色可用来嵌入数据的空间、蓝色是LSB的值、橙色是num_i的编码值,顺便可以查看一下765三位位置上的扫描结果只有两种,M_1='101',M_2='010';(c)将M_1编码为1、将M_2编码为0,紫色是自适应编码策略腾出的可嵌入空间,紫色和蓝色之间的黑色就是m_{i.j}的信息;(d)将辅助信息s=1嵌入到e_{i,4,1}中,原始的e_{i,4,1}值替换e_{i,4,8}的值,图中的两个框框,另外M_1M_2的值被嵌入到LSBs中。图中橙色部分,由于LSB不够,所以还利用了次LSB的空间,也就是第一个像素倒数第二个橙色的位置,而蓝色就是LSB被替换过的原始值,紫色还是可用的嵌入空间。

当 num_i= 0时,(a)加密区块的像素值,(b)加密区块的二进制表示,橙色是num_i= 0的编码表示。

通过块内二进制的扫描发现r_x只有一种'100',所以s_2=1,s_3=0,t=100。利用PVR分别为S_GS_L腾出空间得到,S_G=4=(100)_2S_L=2=(010)_2,显然有足够的空间来嵌入辅助信息,所以s_1=1

(c)红色是可嵌入空间,橙色按照顺序分别是num_iS_1S_2S_3t的信息,蓝色是S_GS_L的编码信息(图片有误);(d)中绿色保存的是嵌入辅助信息位置的原始值。

数据提取和图像恢复

根据所持有的密钥的不同进行提取和恢复即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值