基于编码压缩的加密图像可逆信息隐藏方法与流程

文档序号:13240788阅读:1530来源:国知局
基于编码压缩的加密图像可逆信息隐藏方法与流程

本发明涉及信息安全领域和计算机技术领域,特别是一种基于编码压缩的加密图像可逆信息隐藏方法。



背景技术:

加密图像的可逆信息隐藏方法是在不知道原始载体图像的情况下,直接将秘密信息嵌入到加密图像中,并在解密及信息提取后能够无损恢复出原始载体图像。载体图像以密文的形式传输或存储,同时确保载体图像和秘密信息安全性。在军事、商业、医疗和司法证据等对载体图像要求较高的领域具有广泛应用。例如,患者的医学图像加密后上传到医院的服务器或云中,管理者可将图像的相关信息,如所有者信息、拍摄时间、拍摄部位等嵌入到对应的密文中,通过提取嵌入信息和比对相应的关键词,可实现对密文图像的快速检索。

目前加密图像可逆信息隐藏大致可分为两类:第一类是未对原始图像进行预处理,直接对原始图像加密,将秘密信息隐藏在加密图像中。如通过对每个加密图像块最低3位有效位取反来嵌入1bit数据,接收端提取秘密信息后,利用空间相关性恢复载体图像。这类方法隐藏容量较小,并且恢复的载体图像可能存在错误,不能完全实现可逆隐藏。为此,研究人员利用低密度校验码(ldpc)、stc编码和湿纸编码等方法无损压缩加密图像像素二进制位,将秘密信息隐藏压缩空间,实现完全可逆隐藏。这种方法压缩率不高,隐藏容量较小。第二类是在加密之前对原始图像预处理,这类方法大多可实现完全可逆隐藏。首先对预处理后的图像加密,再进行隐藏。如加密之前,计算图像平滑像素,将秘密信息隐藏在平滑像素低位。由于像素低位被修改,因此平滑像素有多种可能值,计算与临近像素均值最接近的值,该值为原始平滑像素,实现无损恢复。

但是,现有的几类加密图像可逆信息隐藏方法,算法隐藏容量较小,并且恢复的图像与原始图像可能存在误差,不能完全实现可逆隐藏,实际应用价值较小。



技术实现要素:

本发明的目的在于提供一种基于编码压缩的加密图像可逆信息隐藏方法,应用预测算子计算预测值,确定图像预测差值,并对预测差值无损压缩,得到较大隐藏容量。

本发明基于编码压缩的加密图像可逆信息隐藏方法,在加密之前将原始图像分为预测区域和非预测区域,计算预测区域像素预测值得到预测差值,对预测差值进行无损压缩,得到压缩数据;然后,随机生成载体数据,将非预测像素、压缩数据和载体数据进行加密重构图像。为了正确恢复原始图像,需确定码表隐藏信息,将码表信息和秘密信息一起隐藏在载体数据中实现可逆隐藏。对于载密图像,首先在载体数据中提取秘密信息,然后对非预测像素和压缩数据进行解密,根据码表信息将压缩数据进行解压得到预测差值,最后根据非预测像素和预测差值无损恢复原始图像。

本发明基于编码压缩的加密图像可逆信息隐藏方法,具体步骤如下:

(1)确定载体数据

设原始未压缩的灰度图像i的大小为h×w,i(i,j)(0≤i(i,j)≤255,1≤i≤h,1≤j≤w)表示图像的像素值,图像像素预测区域为ω={(i,j):3≤i≤h,3≤j≤w-1};

对于像素i(i,j),若则不对i(i,j)进行预测;

若(i,j)∈ω,则采用agsp预测算子对像素进行预测,设当前像素i(i,j)的预测值为i'(i,j),原始像素与预测值的差值为d(i,j),则d(i,j)=i'(i,j)-i(i,j),f为非预测像素与预测差值数据组成大小为h×w的矩阵,则有:

f中非预测像素为原始图像的前两行、前两列和最后一列,设非预测像素二进制串为e0,大小为l0,则有:

l0=(2×w+3×(h-2))×8=16×w+24×h-48

利用huffman编码对f中预测差值数据进行压缩,设压缩后的二进制串为e1,其长度为l1,由于原载体图像的大小为h×w×8,令:

r=h×w×8-l1-l0

随机生成大小为r的二进制串,将e0、e1和大小为r的二进制串重构得到图像数据g,通过秘钥seed生成大小为h×w×8伪随机二进制串c,将c中的二进制串与g中的二进制串进行异或运算得到加密图像,随机生成大小为r的二进制串加密后成为载体数据。

(2)确定码表隐藏信息

由于对图像进行huffman压缩,因此需要压缩的码表才能正确恢复图像,码表由编码和其对应值两部分组成,设c={c1,c2,…,cn}为编码,编码对应值为e={e1,e2,…,en},通过对码表进行隐藏,在恢复图像时提取码表对原始图像进行恢复;

由于每个编码的长度不相同,提取时需要知道每个编码的长度,因此需要隐藏每个编码的长度信息,并将这些信息转换成二进制数据进行信息隐藏;

(2.1)计算编码长度隐藏信息

为了能正确提取编码长度,隐藏每个编码的长度信息位数都要相同,设bi(1≤i≤n)为编码ci的长度,bi的隐藏二进制串为ri,令:

m1=max{b1,b2,…,bn}

设m1的二进制位数为k1,则有:

将bi(1≤i≤n)转换为二进制串,若这些二进制串长度不足k1位,则对高位补0,使bi的二进制位长度都为k1,这样可得编码长度bi的k1位二进制隐藏信息ri。

(2.2)计算编码对应值隐藏信息

每个编码对应值是图像的预测差值,由于预测差值有正有负,有大有小,需确定最长的位数及正负情况,令:

m2=max{|e1|,|e2|,…,|en|}

将m2转化成二进制串,则该二进制串的位数为为了能正确提取编码对应值,隐藏编码二进制串的位数都要相同,且需要1位符号位,设编码对应值隐藏信息的二进制数长度为k2,则:

设pi(1≤i≤n)为ei的二进制串,pi(j)(1≤j≤k2)为ei的第j位二进制数,其中pi(1)为符号位,则:

将|ei|(1≤i≤n)转换成位二进制串,若长度不足位,则对高位补0,可得到|ei|的二进制串{pi(2),pi(3),…,pi(k2)},通过上述方法可确定ei的k2位二进制隐藏信息pi;

由编码长度、编码和对应值的二进制串可得一组编码数据{ri,ci,pi}(1≤i≤n);根据上述方法可确定huffman码表中n组编码数据,设由n组编码数据得到码表隐藏信息为e2,则:

e2={r1,c1,p1,r2,c2,p2,....,rn,cn,pn}

令:

由上可得l2位码表隐藏信息e2。

(3)编码压缩的加密图像可逆信息隐藏

在加密图像的载体数据中,先隐藏码表信息,然后隐藏秘密信息;

在码表隐藏过程中,首先隐藏编码长度r1,然后隐藏编码c1,最后隐藏对应值p1,完成码表第1组的隐藏,这样依次隐藏n组码表数据,实现码表e2的l2位信息隐藏;

码表隐藏后,剩下r-l2位空间可隐藏秘密信息,设隐藏秘密信息e3有l3位,若l3≤r-l2,则可在剩余的r-l2位中将秘密信息替换载体数据,实现对e3的隐藏,得到载密图像,最后将加密秘钥seed、k1、k2、n、l1、l2和l3作为秘钥。

(4)秘密信息提取及图像恢复

将载密图像转换成大小为h×w×8的二进制串,由隐藏过程可知,在二进制串中从第1位到第l0位为非预测数据e0;

根据秘钥li(i=1,2,3)的值,第l0+1位到l0+l1位为压缩数据e1,第l0+l1+1位到l0+l1+l2位为码表隐藏信息e2,第l0+l1+l2+1位到l0+l1+l2+l3位为隐藏的二进制秘密信息e3;

在载密图像二进制串中根据li(i=1,2,3)的值可分别提取e1、e2和e3;

在e2中根据秘钥k1、k2、n的值依次提取n组码表数据,在码表数据的提取过程中,首先提取k1位二进制串得到r1,将其转换成十进制数得到编码长度b1,再根据编码长度提取b1位二进制串得到编码c1,最后提取k2位二进制数据可得p1,将{p1(2),p1(3),…,p1(k2)}组成的二进制串转换成十进制数|e1|,根据符号位pi(1)可得e1,由此可得到第1组码表数据c1和e1;

根据上述方法可依次确定剩余n-1组码表数据{c2,…,cn}和{e1,e2,…,en},最终得到huffman码表;

通过秘钥seed对数据e0和e1解密,根据huffman码表,对压缩数据e1解压,将e1中的二进制串转化为十进制数,得到的预测差值;

根据e0确定非预测区域像素,这些像素为原始图像前两行、前两列和最后一列像素,应用agsp算子,在预测区域按从左到右,从上到下顺序计算当前像素的预测值;

通过预测差值和预测值得到原始像素值,无损恢复图像。

本发明方法应用预测像素与原始像素相近的特性。由于预测差值直方图中0及其附近的元素具有较高的频率,有利于哈弗曼压缩,相比于现有方法具有较大的隐藏容量,能完全实现可逆隐藏,实际应用价值大。

附图说明

图1为大小8×8的原始图像;

图2为采用agsp算子计算的预测值;

图3为非预测像素与预测差值数据构成的矩阵f;

图4为码表;

图5为加密图像;

图6为码表隐藏信息;

图7为载密图像。

具体实施方式

下面结合附图和实施例对本发明内容作进一步的详细说明,但不是对本发明的限定。

实施例

图1为大小8×8的原始图像,采用本发明上述方法,预测区域如图1灰色区域所示,非预测区域如图1白色区域所示。

图2为采用agsp算子计算的预测值。

图3为非预测像素与预测差值数据构成的矩阵f。

将f中的非预测区域像素转换成二进制串

e0的大小l0=(2×w+3×(h-2))×8=16×8+24×8-48=272,应用huffman编码对预测差值进行压缩得到其大小为l1=89,并得到huffman编码码表如图4所示。可得到载体数据大小r=8×8×8-272-89=151。将e0、e1和大小为r的随机数据重构得到图像数据g。通过秘钥seed生成大小为h×w×8伪随机二进制c,将c中的二进制数据与g中的二进制数据进行异或运算得到加密图像如图5。

在图4的huffman码表中,编码最大长度为m1=5,则m1的二进制位数为m2=7,则将编码长度和编码对应值转换成二进制串得到l2位码表隐藏信息e2如图6所示,l2=11×3+11×4+44=121。则l3=r-l2=151-121=30。将121位隐藏信息和30位秘密信息e3隐藏在加密图像中得到载密图像,如图7所示。

秘密信息提取及图像恢复时,将载密图像转换成二进制数据,分别提取e0、e1、e2和e3,其中e3为隐藏的秘密信息。将e0解密得到非预测区域像素,在e2依次提取码表信息,根据码表对e1解压得到预测差值,就可得到矩阵f。在f的预测区域中按从左到右,从上到下的顺序依次计算预测值i'(i,j),可得到原始像素i(i,j)=i'(i,j)-d(i,j),恢复原始图像。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1