Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】

方法总述:

首先,将原始图像分成大小相等的块,并计算原始图像的预测误差。

然后,分别对预测误差的8个位平面执行重排和位流压缩。

最后,对腾出空间后的图像进行流密码加密,并通过多LSB(最低有效位)替换将附加数据嵌入到腾出的空间中。

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第1张图片

方法具体介绍

为腾出附加数据(要嵌入的信息)空间要进行像素预测和位平面的重排以及压缩。

1、像素预测

使用中值预测器(MED)进行像素预测。

具体方法见下图以及公式:

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第2张图片

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第3张图片

根据m\times n的原始图像的像素值及其位置(i,j),就可以对x进行预测得到px,接着计算预测误差ex

然后,将ex的绝对值通过下式转化为8位二进制(k表示8个位平面):

由于预测误差ex会出现正值和负值两种情况,因此在最高位平面(MSB)进行标记,1代表负值0代表正值。

由于最高位平面需要标记正负号,所以剩下的7位能表示最大十进制127,因此当预测误差ex超过\left [ -127,127 \right ]的范围定义为溢出像素,依然使用其原始像素值,并且溢出像素的个数和它所处的位置会作为附加信息被记录下来。

2、位平面重排

上一步得到的预测误差通过8位二进制表示,得到了八个位平面,将位平面划分为相等大小的块。然后利用不同的块扫描方式进行扫描

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第4张图片

 扫描方式如图,总共有四种模式,用2位二进制表示分别标记为00、01、10、11。需要对每一个位平面都进行上面四种方式的重排。下一节会有例子

3、位平面压缩

使用Bit-Stream Compression(BSC)对每个位平面的四种扫描结果序列进行编码处理,进而得到压缩结果,

编码(就是为了得到最短的压缩结果)分为两种情况,设 L :连续0或连续1的个数;L_{pre}:编码的前缀;L_{mid}:编码的中间值;L_{tai}:编码的后缀;L_{fix}:自定义参数;lL_{mid}的长度

具体公式:

  1. L<4L_{pre}=0L_{mid}的值是从当前比特向后截取的长度为L_{fix}的重新排列的比特流。
  2. L\geqslant 4:首先根据公式  l=\left \lfloor log_2L \right \rfloor  计算l的值,L_{pre}l-1个连续的1组成,并以0结尾;L_{mid}=(L-2^l)_2;如果连续值是0,则L_{tai}的值取0,如果连续值是1,则L_{tai}的值取1

以下图为例作为介绍

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第5张图片

 原始图像可以用序列:000 000  000 001 000 000 100 000 000 000 000 000(36bits)表示

设置L_{fix}=4

位平面的重排类型00,块的大小3×3

000 000 000 000 001 000 100 000 000 000 000 000

L=14(14个连续的0),L>4,计算l=\left \lfloor log_2L \right \rfloor=3,所以L_{pre}=110L_{mid}=(L-2^l)=6,转化为二进制L_{mid}=110 ,恰好l=3,不需要补0;L_{tai}=0

综上:C_1=1101100

L=1(1个连续的1),L<4,所以L_{pre}=0,因为L_{fix}=4,所以L_{mid}=1000

综上:C_2=01000

L=1(1个连续的1),L<4,所以L_{pre}=0,因为L_{fix}=4,所以L_{mid}=1000

综上:C_3=01000

L=14(14个连续的0),L>4,计算l=\left \lfloor log_2L \right \rfloor=3,所以L_{pre}=110L_{mid}=(L-2^l)=6,转化为二进制L_{mid}=110 ,恰好l=3,不需要补0;L_{tai}=0

综上:C_4=1101100

所以第一种重排列的位平面最终的压缩结果为C=1101100 01000 01000 1101100  (24bits)

位平面的重排类型01,块的大小3×3

000 000 000 100 000 000 000 001 000 000 000 000

L=9(9个连续的0),L>4,计算l=\left \lfloor log_2L \right \rfloor=3,所以L_{pre}=110L_{mid}=(L-2^l)=1,转化为二进制L_{mid}=001 ,恰好l=3,不需要补0;L_{tai}=0

综上:C_1=1100010

L=1(1个连续的1),L<4,所以L_{pre}=0,因为L_{fix}=4,所以L_{mid}=1000

综上:C_2=01000

L=10(10个连续的0),L>4,计算l=\left \lfloor log_2L \right \rfloor=3,所以L_{pre}=110L_{mid}=(L-2^l)=2,转化为二进制L_{mid}=010 ,恰好l=3,不需要补0;L_{tai}=0

综上:C_3=1100100

L=1(1个连续的1),L<4,所以L_{pre}=0,因为L_{fix}=4,所以L_{mid}=1000

综上:C_4=01000

L=9(9个连续的0),L>4,计算l=\left \lfloor log_2L \right \rfloor=3,所以L_{pre}=110L_{mid}=(L-2^l)=1,转化为二进制L_{mid}=001 ,恰好l=3,不需要补0;L_{tai}=0

综上:C_5=1100010

所以第二种重排列的位平面最终的压缩结果为C=1100010 01000 1100100 01000 1100010  (31bits)

~~~~~~~~剩下的两种不再做介绍,依次类推即可~~~~~~~~~~

如果剩下两种重排列压缩均小于24位的话,就选择00类型作为该平面的压缩方式,并且标签为00。

经过以上操作,可以压缩的位平面如下图所示:

其中Flag标记该位平面是否能够压缩,Type label标记的是重排列的类型,Compressed bit-plane是压缩之后的比特流,剩下的Vacated embedding room就是腾出的空间。

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第6张图片

为了能够还原图像以及提取附加数据,需要嵌入块的大小、L_{fix}、溢出像素的数量的位置作为辅助信息,放在MSB位平面上,压缩的bit流放在LSB位平面上,空出的位置用0填充。

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第7张图片

3、图像加密

 利用密钥K_{en}生成伪随机矩阵H(m\times n)转化为8位的二进制,形成八个位平面与原图像像素取异或,进行加密。

4、在加密图像中隐藏数据 

 首先提取放置在LSB平面上的压缩比特流的数量,并且可以根据所提取的信息获得空出空间的位置。然后,采用数据隐藏密钥K_d来加密附加数据。最后,加密后的附加数据通过LSB替换嵌入到空出来的多LSB平面中。

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第8张图片

5、数据提取和图像恢复

分三种情况:只拥有K_d,只拥有K_{en},同时拥有K_dK_{en}

Reversible Data Hiding in Encrypted Images Based on Pixel Prediction and Bit-Plane Compression【2020】_第9张图片

你可能感兴趣的:(信息隐藏,计算机视觉,人工智能,安全,图像处理)