RRBE
总结
方法
基于多MSB预测和Huffman编码的大容量算法。
思路
首先,对原始图像每个像素的多个MSB进行自适应预测,并采用Huffman编码进行标记。
然后,通过流密码对标记后的图像进行加密。
最后,利用多MSB替换的方法,将空出的空间用于嵌入秘密信息。
方法实现
1、标签映射的生成
前置知识之中值边缘检测器(MED)
中值边缘检测器的作用:通过像素周围的三个像素
计算
的预测值
.
预测值得确定:
具体操作
对的原始图像使用中值边缘检测器(MED)进行像素预测得到
。然后将
和
通过下式转化为八位二进制序列,标记为
和
,其中
。
然后从高位(MSB)到低位(LSB)依次比较 和
的值,相同值的位数就是
像素的标签。因为我们把真实像素值和预测像素值转换成八位二进制,所以像素的标签(假设为
)就会出现9种情况,即
。
上标tMSB表示的是像素的前t个MSB。
当原始图像的像素值可以通过预测值获得的时候,我们就可以在该位置进行信息嵌入。所以通过标签 的产生,我们就可以在该像素嵌入
位的秘密信息。【前t个相同的位通过预测值就可以得到,第
位虽然不同,但是可以通过预测值的位置取反获得原始的真实值】
举个例子:
所以像素可以嵌入五位秘密信息。
注意:第一行第一列作为参考像素,不参与秘密信息的嵌入
2、图像加密
方式
流密码加密。
具体操作
首先使用密钥生成伪随机矩阵
,转化为8位二进制得到
,然后与对应位置原像素的8位二进制进行异或计算,得到加密像素的8位二进制表示
。
再通过下式,将二进制还原成十进制,得到加密像素,可以输出加密图像
。
3、Huffman编码
通过第一步生成的标签映射,我们可以计算出嵌入秘密信息的总量。
首先根据所要嵌入的图像,生成标签,然后统计各个标签所对应的像素个数,以像素个数为标准对标签进行Huffman编码,从大到小依次编码为,通过这种方式使标签转化成二进制。
以Lena(512×512)图像为例,如下表:-1为参考像素的个数。
进一步可以计算得到总的标签映射对应的二进制长度
:其中
是标签为
的数量,
是 标签
对应的Huffman编码的长度。
4、标签映射的嵌入
一方面标签的存在就是为了还原原始图像,所以我们首先将标签嵌入到加密图像里,然后再嵌入秘密信息。另一方面,将标签嵌入到图像中后,剩下的额外空间才会被用来嵌入秘密信息。
将Huffman编码规则(二进制序列的长度)和二进制序列作为辅助信息。由于在还原像素的时候,我们需要知道当前像素的标签值,所以需要将标签嵌入到当前像素的前一个像素内,因此将部分辅助信息存储到第一行第一列的参考像素中。最后,根据标签图,将剩余的辅助信息和被替换的参考像素通过多MSB替换嵌入到加密图像中,得到最终的加密图像,嵌入公式如下:
其中是
中当前像素
的标签值,
是要嵌入的辅助信息。
5、数据隐藏
数据隐藏之前需要从加密图像获得Huffman编码规则和标签映射。首先就是提取第一行和第一列的辅助信息提取Huffman编码规则和辅助信息长度,然后根据已有的规则和辅助信息长度得到当前像素的标签值
,提取出
bit的辅助信息。在得到所有的辅助信息后,我们可以根据Huffman编码规则恢复标签图。最后根据下式将用密钥
加密过的数据嵌入到剩余像素中,也就是图像加密保留的空间。最终得到了嵌有附加数据的加密图像
。
6、数据提取和图像恢复
首先,合法的接收者会从获得Huffman编码规则和标签映射,然后通过获得的标签可以提取参考像素以及附加数据,以上这些操作不需要密钥。
若接收者有附加数据密钥,可以直接从
中获得秘密信息,但是不能重建原始图像。
若接收者有图像加密密钥,利用密钥生成伪随机矩阵
,对图像进行解密,此时解密的图像中除了参考像素,其余每个像素的前
位与原始图像不同(由于嵌入了附加信息)。然后从上到下从左到右依次扫描除了参考像素之外的其它像素,根据MED来预测
的预测像素
,然后再依据标签
就可以获得原始像素
。重建过程如下式:
若接收者有和
则可以通过以上操作同时获得加密数据和原始图像。
学习笔记,禁止转载,如有侵权,联系立删!
多多指教~