RRBE
本文仅供学习,切勿转载和搬运,如有侵权,联系立删~
一、背景知识
The Gradient-Adjusted Predictor(GAP,梯度调整预测器)
根据被预测像素周围的七个像素进行预测
具体流程可参考文献X. Wu and N. Memon, "Context-based, adaptive, lossless image coding," IEEE Trans. Communications, vol. 45, no. 4, pp. 437-444, April 1997.
本文利用GAP的简化版本SGAP,只使用四个相邻像素进行预测,如图一:
二、提出方法框架
内容拥有者首先对原始图像进行预处理,得到预测误差图像和误差矩阵块对应的块类型。然后对预测误差图像和矩阵块分别进行流密码加密和置乱。最后,将块类型编码并嵌入到块中以获得最终的加密图像并发送给数据隐藏器。
数据隐藏者从最终的加密图像块中提取其对应的块类型值并解码,计算剩余空间并将加密秘密数据嵌入其中,标记后的加密图像发送给接收方。
接收端对标记后的加密图像中的矩阵进行分块,提取图像中的辅助信息。根据不同的密钥,可以分别提取秘密数据和恢复原始图像。
三、详细介绍
A预处理
A.1计算预测误差
边缘像素作为参考像素保持不变,使用SGAP对其他像素进行计算,如下式,从而获得预测像素
:
除参考像素外,计算每个像素的预测误差:
抛去参考像素,留下黄色区域矩阵,如左图:
由于预测误差存在正负,所以需要记录误差标志图作为辅助信息如右图,负1正0,总长度为。因此获得了绝对值矩阵
,与参考像素共同组成预测误差图
A.2误差矩阵类型
将上一步得到的矩阵,分成
个互不重叠的
大小的块矩阵
,以下步骤用来依次处理每个
,块矩阵的像素被标记为
,其中
作为参考像素,将所有像素转化为8位二进制
再转换成十进制可通过下式:
将块内除外的像素的8位二进制序列与
的8位二进制序列进行MSB-LSB进行比较,获得相同比特的
值
,通过下图给出一个例子:
这是针对预测误差做的处理,保留块内第一位参考像素的值好像没有什么意义,反倒占用了可嵌入的空间。
A.3合并块类型以生成β映射
遍历完所有的矩阵块后,就会得到一个
序列,可以计算
序列中每个值
的频率,对纹理平滑和粗糙的图像作实验,以下表为例,
给出了一个较为普适性的结论: 统计结果表明,对于纹理简单的平滑图像,块类型主要分布在α = 4,5,6.纹理粗糙的复杂图像块类型主要分布在α = 2,3,4。因此可以进行块类型的合并来减少不必要的空间浪费。
本文提出了六种块类型,用表示:
对平滑图像:
0,1 | 0 |
2,3 | 2 |
4 | 4 |
5 | 5 |
6 | 6 |
7,8 | 7 |
对复杂图像 :
0,1 | 0 |
2 | 2 |
3 | 3 |
4 | 4 |
5,6 | 5 |
7,8 | 7 |
因此得到一个大小的
标记图。举个平滑图例子:
因此,对于标记为的块来说,所能腾出的空间是
A.4霍夫曼编码压缩![\beta](https://latex.csdn.net/eq?%5Cbeta)
以平滑图像Lena,块大小设置为2×2为例,按照出现的频率,使用{00,01,100,101,110,111}进行编码,如下表:
这样原始图像的 信息就会根据霍夫曼编码规则得到了一个
-映射。
为了恢复原始图像,需要将的霍夫曼编码规则作为辅助信息嵌入到图像中,共占用32位比特:
由此,每一小块的所腾出的空间容量和整个图像可嵌入空间
可计算为:
B图像加密
先对预测误差图进行像素级别的流密码加密,再对误差绝对值矩阵
分块进行置乱加密。
B.1流密码加密图像
使用加密密钥生成与原矩阵相同大小的伪随机矩阵
,转化成8位二进制,与原像素值对每一比特进行异或计算,得到加密的值。
B.2块置乱
使用置乱密钥生成与块个数相同的没有重复的序列
,按照这个序列打乱所有的块,得到一个新的块的排序
,进一步获得了加密图像
。注意,如果原始图像的尺寸不能被完整的分块,则不在块中的像素只进行流密码加密。
这一步的块加密除了增加图像安全性之外没有什么意义,本就是预处理得到图像的冗余空间,更何况对每一个像素进行了流加密,原始图像的空间相关性已经被破坏了
C数据隐藏
C.1嵌入块类型β值
这一步是通过内容持有者进行操作,对加密图像包含的
也分成s×s大小的小块,用块置乱密钥
将β-映射置乱到对应的矩阵块位置的,得到
。在嵌入过程中,每一个小块中的参考像素保持不变,将β-映射到其它剩余可嵌入位置,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/66c29f6f5d5ca845c72b3e431ec6df9c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c2ac66c57eb15518680d6406049e525.png)
其中蓝色区域就是可嵌入秘密信息的位置,灰色区域不变,黄色区域是小块内的参考像素,绿色区域是嵌入的β-映射。 完成所有β-映射嵌入后将得到的传给数据隐藏者。
注意,当β=0时,霍夫曼编码111,此时嵌入的β映射取代的位置是没有腾出嵌入空间的,这些被替换的原有的值就需要被记录下来!
C.2秘密数据嵌入
数据隐藏者先将进行划分块处理,再根据块中提取到的β-映射以及霍夫曼编码规则进行解码恢复类型。将秘密信息通过密钥
进行加密,嵌入到每个块中可嵌入的空间
C.3多级嵌入
开始对每一个块的参考像素下手,将其组成一个新的块参考误差像素矩阵,再分块获得二级块类型二级块参考像素,直至不能参考像素不能在进行分割成小矩阵块。
C.4辅助信息嵌入
(1)块大小的值,4比特信息;
(2)记录误差正负比特;
(3)六个霍夫曼编码规则34比特;
(4)对于β=0时嵌入的霍夫曼映射所取代的值,被称为溢出像素;
(5)多级嵌入级数;
(6)最后的嵌入坐标(m,n),长度。
边缘参考像素;连接辅助信息来替换这些像素的LSB。统计辅助信息的长度表示为,即替换参考像素
的
LSB.将长度值
和替换的LSB连接在秘密数据的前面,并且将信息流顺序地嵌入到由每个加密块空出的位平面中。获得标记的加密图像
,发送到接收者。
D数据提取和图像恢复
D.1只有数据隐藏密钥
首先从标记的加密图像的边缘像素LSB位中提取辅助信息,包括块的大小、误差正负映射、编码规则、溢出像素被替换的MSB,多级嵌入级别和最后嵌入坐标;接着根据提取的信息对标记的加密图像中划分为小块,根据小块内的β-映射获得要提取的数据个数;然后再对所有块内的参考像素进行矩阵重组,根据提取的多级嵌入级别进行秘密信息提取;最后将提取到的信息连接在一起,可以获得替换的LSB和加密的信息,通过解密即可获得原始秘密信息。
D.2只有图像加密密钥
首先从标记的加密图像的边缘像素LSB位中提取辅助信息,β-映射、溢出像素被替换的MSB、边缘像素的LSB,并还原LSB位;接着根据β-映射,将β=0块中所替换的MSB还原;将标记的加密图像中的误差矩阵划分为大小为s的块,并使用加密密钥对该块进行逆置乱以恢复加密块。使用由加密密钥
生成的M× N伪随机序列解密图像;每个块中的参考误差像素仅在嵌入之前和之后被加密。在解密之后,参考误差像素的前β MSB可以用于恢复块中剩余像素的β MSB。块内剩余像素的(8−β)LSB已通过解密恢复;由边缘像素的LSB提取的正负映射用于恢复相应位置的预测误差像素;边缘像素使用SGAP来预测目标像素值,并且添加预测误差以恢复原始图像
D.3同时拥有两个密钥
参照前两步进行操作即可。
四、实验结果分析
分别用ER(嵌入容量)、PSNR【用原始图像估计恢复图像的视觉质量】、MSE(测试方法可逆性)、SSIM(图像相似性的度量)来进行实验性能分析。