VRAE
论文全称:Reversible data hiding in encrypted image with local-correlation-based classification and adaptive encoding strategy.
方法总述:
首先,图像所有者利用块级加密方法,包括块级逐位异或运算和块置换,获得加密图像。
然后,对于加密图像,数据隐藏者首先使用基于局部相关性的分类机制将块划分为不同的类型,然后根据不同的类型,采用不同的方法(包括空间的空出、自适应编码的策略和分层处理)实现数据的嵌入。
最后,接收者根据不同的密钥可以恢复原始图像以及获得附加数据(秘密信息)。
具体方法操作
图像加密
对图像进行块的预处理
原始图像 | 块内像素索引 | ||
---|---|---|---|
原始图像的大小 | 块的集合 | ||
块的大小 | 第个块里的第个像素 | ||
块的个数 | 像素的位平面索引 | ||
块的索引 | 的8位二进制表示 |
将像素的二进制表示转换为十进制公式如下:
索引像素的第个位平面公式如下:
块级加密
R | 流密码序列 |
流密码的8位二进制表示 | |
进行流加密后的值 | |
加密后的8位二进制表示 |
方法:流密码。
根据流密码生成器生成,对于第个块,就使用对块内每一个像素进行加密(也就是说块内的每一个像素使用同一个流密码加密)。
第序列的二进制转化为十进制的公式:
加密时,将和进行按位异或运算:
也就是在各个位平面上进行如下操作:
加密后的二进制序列转化为十进制序列公式:
块置换
得到所有的流加密块之后,进行块的置换,得到置换图像。注意,只打乱块的顺序,保留块内的像素值顺序。
基于局部相关性的分类机制
首先需要对进行处理,才能进行后续操作。首先先将分成个不重叠的块得到,同样,每一个块内包含个像素值,每一个块内的像素都可以集合成一个一维块序列。
由于异或和块置换的操作,保留了图像的像素相关性,因此图像存在从最高有效位开始的相同的连续高阶位平面(ICHOBPs),其数量被定义为局部相关性(即高位平面应该是由几个连续的0组成),用表示,也表征了该块的冗余空间。
确定的值需要对块内的像素进行排序,找到最大值记为、最小值记为,二者异或得到:
定义就是从高位到底位第一个数值为1的位置,而。(证明省略)
的取值范围是0-8,简单的摒弃8,所以用3位二进制就可以表示。
二进制编码作为辅助信息替换块内前三个像素的LSB值。所以原始的最低位平面值进行保存嵌入,具体嵌入情形如下:
根据 的值就可以建立局部的像素相关机制。
多层处理机制
主空置空间操作
解释:每一个块都通过上一步的操作得到了,并将其包含的位平面作为冗余空间,这个冗余空间就是主空置空间(Primary Vacating Room (PVR))。如下图中三个黄色的位平面就是主空置空间。
举例,也是对上一节计算的解释:
针对 (a)这个块,、,二者进行异或计算
所以,故=3,二进制表示为'011'。
自适应编码策略
目的:进一步提高嵌入容量。
多层处理机制的概率图如下:
接下来做详细介绍。
第一种情况
假设4个MSB可以用来嵌入附加数据,当读取到的时(图中黄色),剩余的可利用空间定义为为3或2(图中白色),蓝色区域不进行嵌入。
为了获取每个中可用的空间,将所有像素集合得到,假设集合内有 不同的像素。【猜想一:因为每个位平面的数值要么是0要么是1,假设当时,还有三位可嵌入的空间,也就是说有8种不同的二进制编码方式,每一个块内包含的编码方式的种类就是的值】
如果与预先设定的阈值(文献中设定2)相同,那就使用自适应编码策略,如果不同就只使用黄色区域腾出的空间。【阈值的设定也是利用了像素之间的局部相关性】假设,代表中只用两种不同的像素值(分别设为、)时才使用自适应编码策略。
自适应编码策略:
编码为1、编码为0;
通过扫描块中的每一个像素,就可以获得的值,针对每一个像素,根据下列式子进行赋值:
如果,也就是还有4-1=3个位平面的可嵌入空间,上式只是对第七个位平面进行了编码,剩下的第六和第五位平面的值用0替换;如果,也就是还有4-2=2个位平面的可嵌入空间,上式只是对第六个位平面进行了编码,剩下的第六和第五位平面的值用0替换。
【But,以为例,如果适用自适应编码策略,说明第块内有种不同的种类,分别属于、,如果,第7个位平面编码为1,如果呢?同一个块内,不可能即等于1又等于2,如何表示?示例的意思就是相反即可】
绿色被编码为,只需要一个位平面进行表示。所以通过自适应编码策略腾出了白色的可嵌入空间。
为了图像达到可逆的目的,需要将是否适用自适应编码、以及、的种类作为辅助信息进行嵌入,辅助信息的总体结构如下:
值的确定:确保腾出的空间可以增加可嵌入容量,否则辅助信息过长会起到适得其反的效果。
也就是当表示可使用自适应编码。由于再前面介绍了需要嵌入到前三个像素中,所以替换第四个像素中的最低位,原始的值根据下式嵌入:
、的辅助信息用表示,其长度计算,例如当时,。如果腾出的空间大于辅助信息需要的空间则将嵌入到第五个像素的LSB中。
第二种情况
当读取到时。
像素值大于128的值得集合 | |
像素值小于128的值得集合 | |
LM | 位置标记图(Location map) |
、 | 扫描方式 |
、的结果类型 |
,也就是和出现的情况一般是图像纹理变化较大的边缘位置,而这些边缘位置有可能是竖直的、也有可能是水平的。所以用两种策略来生成LM,并减小相应的尺寸。
如果只有一种结果则设为,即或者,然后记录扫描顺序和,并把相应的方法定义为;
如果、不止一种结果,则不改变像素的最高位,该方法定义为;
最后,利用PVR分别为、腾出空间。
同时,如果嵌入空间比辅助信息空间大,使用LSB存储辅助信息来恢复原始图像,如果LSB不够使用第二层,具体辅助结构如下图:
确定是否使用块(0不可嵌) | |
确定LM的生成方式(0:) | |
标记扫描方式(1列0行) | |
的ICHOBP(相同的连续高阶位平面) | |
的ICHOBP(相同的连续高阶位平面) |
如果 ,辅助信息只包含和
数据嵌入
根据LSB前三位像素嵌入的来进行相应的策略进行数据嵌入。
当,只使用PVR,废话少说,给一个具体的例子~
,(b)中红色是PVR产生的可嵌入空间,蓝色最低位平面的值;(c)中蓝色部分就是嵌入的最低位值,橙色部分嵌入的编码【图中橙色有误】;(d)中绿色是嵌入的秘密信息;(e)是给出了一个可嵌入空间被秘密信息替代的例子。
当 时,通过确定块是否使用自适应编码策略,如果直接跳过这个块;否则,通过下式将有效载荷嵌入到相应的空间中
直接上例子~以可嵌入的MSB设置为4为例
(a)加密块的二进制表示;(b)红色可用来嵌入数据的空间、蓝色是LSB的值、橙色是的编码值,顺便可以查看一下765三位位置上的扫描结果只有两种,;(c)将编码为1、将编码为0,紫色是自适应编码策略腾出的可嵌入空间,紫色和蓝色之间的黑色就是的信息;(d)将辅助信息嵌入到中,原始的值替换的值,图中的两个框框,另外、的值被嵌入到LSBs中。图中橙色部分,由于LSB不够,所以还利用了次LSB的空间,也就是第一个像素倒数第二个橙色的位置,而蓝色就是LSB被替换过的原始值,紫色还是可用的嵌入空间。
当 时,(a)加密区块的像素值,(b)加密区块的二进制表示,橙色是的编码表示。
通过块内二进制的扫描发现只有一种,所以。利用PVR分别为、腾出空间得到,,,显然有足够的空间来嵌入辅助信息,所以。
(c)红色是可嵌入空间,橙色按照顺序分别是、、、、的信息,蓝色是、的编码信息(图片有误);(d)中绿色保存的是嵌入辅助信息位置的原始值。
数据提取和图像恢复
根据所持有的密钥的不同进行提取和恢复即可。