一、预测误差分类置乱图像加密解密简介
1 引 言 加密域可逆信息隐藏 (Reversible data hiding in encrypted image, RDH-EI) 是一种加密原始图像后, 在密文图像中可逆地隐藏附加信息, 并且在信息提取后, 原始图像可以被无损重建的技术。随着人们对隐私保护的需求不断增加, 加密域可逆信息隐藏受到广泛关注。
目前已有的RDH-EI算法可以分为加密前腾出空间 (VRBE) 和加密后腾出空间 (VRAE) 两类。基于加密后腾出空间 (VRAE) 的RDH-EI算法, 用户端除图像加密外无需进行其他操作, 信息隐藏者在密文图像中直接进行信息隐藏, 方便用户操作。Zhang提出基于压缩密文数据的可分离RDH-EI算法, 其嵌入率为0.01 bpp。Huang以图像块为单位进行位置置乱, 利用传统可逆信息隐藏算法使嵌入率达到0.3 bpp。由于加密后的图像无法通过压缩或预测来产生冗余空间, 因此加密后腾出空间 (VRAE) 算法的嵌入信息量较少。
与加密后腾出空间 (VRAE) 相比, 加密前腾出空间 (VRBE) 算法在加密前对明文图像进行预处理, 这虽然增加了内容所有者的负担, 但可以极大地提高嵌入容量。2013年, Ma等提出首个可分离加密前腾出空间算法, 该算法在XOR加密原始图像前估计部分像素, 并将秘密信息嵌入到估计误差 (estimating error) 中 在保证加密图像安全性的同时, 为了进一步提高嵌入容量, 本文提出了一种基于预测误差和分类置乱的加密域可逆信息隐藏算法。提出的算法通过预测误差使像素大多集中在0附近, 可变像素高6位平面存在冗余空间。利用这些冗余空间可以在一个可变像素中嵌入6比特信息, 从而提高嵌入容量。相比于Xu, 提出算法的嵌入率平均可增加1 bpp。由于嵌入的信息与像素位置无关, 可采用分类置乱的加密方式提高加密图像的安全性。
2 本文算法 本文算法框架如图1所示, 明文拥有者首先由原始图像得到预处理图像, 根据加密秘钥对预处理图像分类加密生成加密图像。信息隐藏者得到加密图像后在加密图像中隐藏秘密信息。接收者得到含有秘密信息的加密图像后根据所持有的秘钥得到相应的数据。若接收者拥有隐藏秘钥则可以提取秘密信息;若接收者拥有加密秘钥则可以提取出分类向量T及溢出矩阵Map并恢复原始图像。 图1 算法框架
2.1 预处理 预处理过程首先对图像进行预测误差, 目前已经有许多预测误差技术被提出, 常用的如文献中的预测技术。本文选择文献中的预测方法估计并插值非采样像素点。将大小为M×N的原始图像I分为采样像素和非采样像素, 如图2 (a) 和 (b) , 其中, 白色像素为非采样像素NSP (Non-Sample Pixels) , 黑色像素为采样像素 (Sample Pixels) 。
估计非采样像素点NSP § (1≤p≤0.75×M×N) 分为两步。第一步, 非采样像素值位于四个采样像素的中心NSP § =I (2i, 2j) (1≤i≤M, 1≤j≤N) (图2中①类像素) , 这些像素点先被预测。第二步, 结合采样像素及第一步预测后得到的非采样像素预测剩余的非采样像素 (图2 (b) 中②类像素) 。在得到预测值后, 将属于NSP像素的原始像素值与预测像素相减得到预测误差E (i, j) (1≤i≤M, 1≤j≤N) (E (i, j) 表示为图2中的白色像素①和②) 。得到预测误差图像后的操作步骤如下:
(1) 像素分类。选定的阈值范围为[Tn, Tp]其中Tn<0, Tp>0。预测误差图像中阈值范围之内的像素称为可变像素, 阈值之外的像素称为不变像素, 可变像素用于嵌入数据。不变像素又分为两类:采样像素和非采样像素。这样像素被分为三类, 如图3 (a) 所示:
① 可变像素, (图3 (a) 中的黑点像素) ② 第一类不变像素 (非采样像素, 图3 (a) 中的白点像素) ③ 第二类不变像素 (采样像素, 图3a中黑色块) 图2 预测过程 (2) 生成像素分类向量T。T为二进制一维向量T={ti|1≤i≤0.75×M×N}, T向量元素的先后顺序标记了像素的位置信息。T中的元素值代表了像素的类型。即当ti=0时, 代表预处理图像中的可变像素, 当ti=1时, 代表第一类不变像素。T向量用于记录可变像素与第一类不变像素的位置信息。
记录位置信息后将三类像素按顺序排列。排列顺序如图3b, 可变像素在最前方, 接着是第一类不变像素, 最后是采样像素。 图3 像素分类与重排 (3) 可变像素编码。对可变像素进行编码, 以阈值为[-2, 1]为例, Eb (i, j) 表示编码后的差值, 编码规则如公式1。编码后的可变像素值范围在[0, 3]之内。
Eb (i, j) =E (i, j) +2 E (i, j) ∈[-2, 1] (1)
编码后的可变像素后n位保持不变, 前8-n位用于嵌入T向量及信息。n的计算方法如公式 (2) 。公式中??表示上取整。 (4) 规范第一类不变像素:已知灰度图像的素值[0, 255]可以用八位二进制比特来表示, 将灰度图像中最高位来表示符号位, 0表示负数, 1表示正数。这样插值图像中不变像素的表示范围 (0) 1111111到 (1) 1111111, 即[-127, +127]。在[-127, +127]之外的像素值用Map来记录其位置信息, Map={mk|mk= (s, i, j) , k=1, 2, …, K}, 其中s代表符号位, s=0代表负数, s=1代表正数, K为溢出像素的个数。并用公式3将其规范到[-127, +127]之内。 因为可变像素与不变像素的映射关系不同, 可变像素通过编码来解决负数问题, 不变像素通过上述映射关系来解决负数问题, 为了能完全恢复图像需要保证编码前的可变像素与映射后的不变像素不重叠, 阈值范围为[Tn, Tp] (Tn<0, Tp>0) , 阈值之外的像素[-127, Tn-1]和[Tp+1, +127]经过上述映射后变为[|Tn-1|, 127]、[Tp+129, 255]。为了能满足[Tn, Tp]内的像素与映射后的不变像素不重叠, 阈值的选取需要满足以下条件:Tn<0, Tp>0, 且|Tn-1|>Tp。
最后将生成的像素分类向量T和溢出矩阵Map嵌入到编码后的可变像素高8-n位平面, 得到预处理图像X。
2.2 图像分类加密 图像加密采用分类置乱与异或加密结合的方法提高安全性。因为预处理图像在像素分类时将像素分为三类:可变像素、第一类不变像素、采样像素 (第二类不变像素) 三类。原始图像大小为M×N, 首先对对这三类像素分别置乱。置乱过程如下:
(1) 在预处理时得到的T为二进制一维向量T={ti|1≤i≤0.75×M×N}。用L1代表可变像素, L2代表第一类不变像素, L3代表第二类不变像素。用Xi, j代表预处理图像的所有像素, 像素分类如公式4。 N1, N2代表可变像素和第一类不变像素的个数。N3代表L3的元素个数, 预处理图像大小为M×N那么N1+N2+N3=M×N。
(2) 三个一维向量分别使用三个随机秘钥进行置乱加密, 将这三个随机秘钥连接起来组成一个秘钥L。如公式 (6) 。 L=Key1 (L1) ∪Key2 (L2) ∪Key3 (L3) (5) 置乱后预处理图像像素值范围在[0, 255], 可以用八位二进制数来表示。对置乱后预处理图像按位异或加密, 加密过程如公式 (6) , 式中ri, j, k表示八位伪随机序列, bi, j, k表示置乱后的像素值。Bi, j, k表示异或加密后的图像。 Bi, j, k=bi, j, k?ri, j, k (6) 最终得到的加密图像为X′, 攻击者在没有得到置乱秘钥L和异或加密伪随机序列的情况下均不可获得原始图像。
2.3 信息嵌入 接收者得到加密图像后需要对加密图像嵌入信息, 嵌入信息后的加密图像为X"。嵌入信息在可变像素的高8-n位平面嵌入。嵌入方法是用秘密信息替代加密图像中可变像素的第7-m位到第n+1位。n的计算公式如公式 (1) 所示, 这里m代表T所占用的位平面的个数, 即T向量的长度为3/4 (M×N) , 已知预处理图像中可变像素的个数为N1, 则图像的嵌入率Rate如公式 (7) 。 令α=N1/ (M×N) , α即可变像素在所有像素中所占的比例, 则嵌入率可以表示为:
Rate=α (8-n) -0.75bpp (8)
2.4 信息提取及图像恢复 接收者得到含有秘密信息的加密图像X"需要提取秘密信息及无损的恢复出原始图像。对加密图像中可变像素的前8-n位提取信息, 提取出的信息包含了T向量、嵌入的秘密信息和溢出矩阵Map。
恢复图像时首先根据置乱秘钥对加密图像三类像素置乱恢复, 并对整个加密图像异或解密, 解密时可变像素只取后n位。解密后的像素值用E′ (i, j) 表示, 因为处理过程中对可变像素进了编码, 为了能完全恢复图像需对可变像素解码, 解码后的像素值用E′j (i, j) 表示, 解码的过程如公式9 (这里仍然以阈值为[-2, 1]为例) 。 E′j (i, j) =E′ (i, j) -2 E′ (i, j) ∈[0, 3] (9) 接着根据T向量恢复可变像素与第一类不变像素的位置。最后根据Map中记录的溢出像素的位置恢复溢出像素。恢复过程为如公式 (10) 。 经过上述步骤可以恢复出预处理阶段的预测误差图像, 对于预测误差图像的恢复文献[9]中图像恢复阶段已经详细说明, 在此不再论述。
二、部分源代码
三、运行结果
四、matlab版本及参考文献
1 matlab版本 2014a
2 参考文献 [1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020. [2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013. [3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013. [4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015. [5]屈凌峰,和红杰,陈帆.基于预测误差分类置乱的图像加密域可逆信息隐藏[J].光电子·激光. 2019,30(02)
|