云存储开销小的加密图像多位平面可逆数据隐藏方法转让专利

申请号 : CN201811273206.6

文献号 : CN109462714B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 和红杰陈帆董梦瑶

申请人 : 成都优图有真像信息技术有限公司

摘要 :

一种云存储开销小的加密图像多位平面可逆数据隐藏方法,其操作主要是:使用像素差值预测的方法得到差值图像,将差值图像按比特分类,用替代可变比特的方式嵌入信息;嵌入信息的操作与像素的位置无关,使得图像异或置乱和DES加密操作能用于加密图像,提高了加密图像的安全性;像素差值预测的方法有效的压缩原始图像,使部分像素的高位平面产生大量空间,自适应寻找合适的阈值范围;对阈值之内的可变像素采用位平面嵌入的方法实现了一个像素可嵌入多比特信息;采用稀疏矩阵压缩算法压缩像素分类矩阵,有效提高了隐写容量;根据用户的需求生成相应大小的加密图像,节省了用户的云存储开销,扩展了算法的应用范围。

权利要求 :

1.一种云存储开销小的加密图像多位平面可逆数据隐藏方法,包括如下步骤:A、图像加密

A1、预测误差像素的生成:

将原始图像X,X={xi,j|i=1,2,...,M,j=1,2,...,N}中的第i行第j列的原始像素xi,j,按下式变换得到第i行第j列的预测误差像素x'i,j,式中,||.||代表四舍五入运算,M为原始图像X的行数,也即i的最大值,N为原始图像X的列数,也即j的最大值;

由预测误差像素x'i,j得到预测误差图像X',X'={x'i,j|i=1,2,...,M,j=1,2,...,N};

A2、溢出标识列表的生成:

将预测误差图像X'中的第i行第j列的预测误差像素x′i,j,按下式规范到[-127,+127]之内,得到第i行第j列的差值像素x″i,j,由差值像素x″i,j得到差值图像为X″,X″={x″i,j|i=1,2,...,M,j=1,2,...,N};

[-127,+127]范围之外的预测误差像素x'i,j为被规范的预测误差像素,其坐标列表记为溢出标识列表Map,Map={mk|mk=(s,i,j),k=1,2,...,K};其中s代表符号位,s=0代表负数,s=1代表正数;k为被规范的预测误差像素的序号,K为被规范的预测误差像素的个数;

将原始图像X的行数M的二进制表示的位数记为nM, 为向上取整运算;log2(.)表示以2为底的对数运算;

将原始图像X的列数N的二进制表示位数记为nN,

将溢出标识列表Map依次串连成一维向量,得到溢出列表比特流 溢出列表比特流的长度记为nm,nm=(nM+nN+1)×K;

A3、像素分类矩阵的生成:

将差值图像X″中取值在区间[-2y-1+1,2y-1]内的差值像素x″i,j,称为可变像素lp,即lp=x″i,j∈[-2y-1+1,2y-1];其中,y为嵌入时的不变位数,y=1,2,...7;p为可变像素的序号;然后,将所有的可变像素lp串联成可变像素线性列表Lc,Lc={lp|lp,p=1,2,...,P};P为差值图像X″中可变像素lp的个数;

将差值图像X″中除可变像素lp外的差值像素x″i,j称为不变像素lu;将差值图像X″中所有的不变像素lu串联为不变像素线性表Lu:Lu={lu|lu∈[-127,-2y-1+1)U(2y-1,+127],u=1,2,...,U};其中,u为不变像素lu的序号,U为差值图像X″中不变像素lu的个数,U=M×N-P;

进而得到差值图像X″的嵌入比特数C:

C=(8-y)×P-M×N-nm;其中y为可变像素lp嵌入加密信息时的不变位数y,其取值为1,

2,...7;

将可变像素lp嵌入加密信息时的不变位数y的不同分别代入上式,得到相应的差值图像X″的嵌入比特数C,找出这些嵌入比特数C的最大值,记为差值图像X″的最大嵌入比特数Cmax;对应的可变像素lp嵌入加密信息时的不变位数y的取值记为最大嵌入比特数的不变位数ymax;即:Cmax=(8-ymax)×P-M×N-nm;

根据最大嵌入比特数Cmax对应的差值图像X″中的差值像素x″i,j是否是可变像素lp,得到差值像素x″i,j的分类元素ti,j,即分类元素ti,j的值为1,则差值图像X″中对应位置的像素x″i,j为可变像素lp,否则,差值图像X″中对应位置的像素x″i,j为不变像素;

进而得到最大嵌入比特数像素分类矩阵Tmax:

Tmax={ti,j|i=1,2,...,M,j=1,2,...,N};

A4、分类压缩向量的生成:

将最大嵌入比特数像素分类矩阵Tmax,分成 个4×4的二进制块TS,S为二进制块TS的序号;然后采用基于二进制块压缩的方法将二进制块TS压缩成二进制压缩块T′S,二进制压缩块T′S的长度ls的计算如下式:其中,G-I表示全为1的二进制块TS,Bad表示无法压缩的的二进制块TS,G-II表示其他二进制块TS;其中qe为其他二进制块G-II中第e个像素0的位置占用的比特数,r为其他二进制块G-II中像素0的个数,v为其他二进制块G-II中像素0的个数r占用的比特数;∑.为求和运算;

最后将所有的二进制压缩块T′S依序串联成一维的分类压缩向量 分类压缩向量 的长度L由下式确定:

A5、最大嵌入比特数的修正:

根据分类压缩向量 的长度L,得到修正后的最大嵌入比特数C'max为:C'max=(8-ymax)×P-L-nm,即C'max=Cmax+M×N-L;

A6、可变像素的编码:

将差值图像X″中与最大嵌入比特数Cmax对应的可变像素线性列表Lc,命名为最大嵌入比特数的可变像素线性列表将最大嵌入比特数的可变像素线性列表 中的可变像素lp按下式进行编码得到编码后的可变像素l′p:

将所有的编码后的可变像素l′p串联得到编码后的可变像素线性列表L′max;

A7、不变像素的处理:

将差值图像X″中与最大嵌入比特数Cmax对应的不可变像素线性列表Lu,命名为最大嵌入比特数的不变像素线性列表对最大嵌入比特数的不变像素线性列表 中的不变像素像素Lu按下式进行符号位修改,得到修改后的不变像素l'u,

进而得到修改后的不变像素线性列表为,Lu′={l'u|u=1,2,...,U};

A8、不变比特流的生成:

将每个不变像素l'u转换成8比特的二进制序列,并将所有不变像素的二进制序列串联起来构成不变像素比特流将A6步的编码后的可变像素线性列表L′max中的编码后的可变像素l′p转换成8比特的二进制序列,并取出二进制序列中与编码后的可变像素l′p不变位对应的二进制值,将所有的编码后的可变像素l′p不变位对应的二进制值串联起来构成可变像素不变位比特流将不变像素比特流 与可变像素不变位比特流 串联构成不变比特流Y:A9、固定列不变生成初始加密图像:

根据密钥Ke对不变二进制比特流Y依次进行DES加密、置乱加密,得到加密不变二进制比特流Y’;再将加密不变二进制比特流Y’按8比特为一组生成一个十进制加密像素,进而得到加密不变像素序列Lu″;将加密不变像素序列Lu″组合构成Mx×N大小的初始加密图像Xb′,Xb'={xb'i,j|i=1,2,...Mx,j=1,2,...,N};Mx的值为加密不变像素序列Lu″的长度除以原始图像X的列数N的商,且Mx<M;

A10、加密图像的生成:

用户再根据密钥Ke对分类压缩向量 做异或加密,得到加密分类压缩向量根据用户设定的嵌入比特数w,生成长度为w的一维全0向量,并根据密钥Ke对该一维全0向量按位异或,得到长度为w比特的随机序列Rw;再将加密分类压缩向量 A2步的溢出矩阵比特序列 随机序列Rw串联,得到串联序列;并根据密钥Ke对串联序列置乱,随后,在置乱后的串联序列的末尾串联20比特全0序列,并将设定的嵌入比特数w的二进制数替换末尾的20比特全0序列,得到加密图像比特流B;

最后,将加密图像比特流B以每8比特为一组生成一个十进制像素值;进而得到加密像素序列;再将加密像素序列与A9步的初始加密图像Xb'串联得到加密图像序列,将加密图像序列合成大小为M'x×N的加密图像Xb″;Xb″={xb″i,j|i=1,2,...,Mx,j=1,2,...,N};M'x的值为加密图像序列的长度除以原始图像X的列数N的商,且M'x<M;最后将加密图像Xb″传送给云端;

B、信息隐藏

云管理者得到加密图像Xb″,并在加密图像Xb″中嵌入预设的秘密信息S';云管理者再将加密图像Xb″按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制,得到二进制加密图像比特流Q;同时读取二进制加密图像比特流Q末尾的20比特二进制值,并将

20比特二进制值转换为十进制数,得到嵌入比特数w;

用秘密信息S'替换二进制加密图像比特流Q的倒数第20+w比特至倒数21比特,得到含有秘密信息的二进制加密图像比特流Q’,再将含有秘密信息的二进制加密图像比特流Q’重新按8比特为一组合成十进制像素值序列;将十进制像素值序列构生成含秘密信息的加密图像X″',X″'={x″'i,j|i=1,2,...,M’x,j=1,2,...,N};

C、秘密信息提取

接收者得到含有秘密信息的加密图像X″',首先将X″'按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制比特序列,还原出含有秘密信息的二进制加密图像比特流Q’;读取含有秘密信息的二进制加密图像比特流Q’末尾20比特的二进制值,再将末尾20比特的二进制值转换为十进制数,得到嵌入比特数w;读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w比特至倒数第21比特,得到云管理者嵌入的秘密信息S';

D、图像解密及恢复

D1、提取像素分类矩阵T及溢出像素标记矩阵Map:

接收者读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm比特至倒数第

21+w比特的二进制值,并将其依次转换为十进制数,还原得到溢出像素标记列表Map;

读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm+L比特至倒数21+w+nm比特的二进制值,还原得到压缩后的加密分类压缩向量 对压缩后的加密分类压缩向量根据秘钥Ke按位异或置乱解密,得到压缩后的分类压缩向量 对压缩后的分类压缩向量 进行基于二进制块压缩的解压操作,解压得到 个4×4的二进制块TS,再将这些二进制块TS依序重组,得到最大嵌入比特数像素分类矩阵Tmax;

D2、图像解密

读取含有秘密信息的二进制加密图像比特流Q’中的第1比特至倒数第21+w+nm+L比特,还原得到加密不变二进制比特流Y’;对加密不变二进制比特流Y’根据加密密钥Ke进行置乱解密及DES解密得到不变二进制比特流Y;读取不变二进制比特流Y的前P×ymax比特,还原得到可变像素不变位比特流可变像素不变位比特流 每ymax个比特分为一组,将每组中高8-ymax位补0构成8比特二进制值组;最后将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到编码后的可变像素线性列表L′max;

读取不变二进制比特流Y中第P×ymax+1比特至末尾,还原得到不变像素比特流 将不变像素比特流 每8比特为一组合成十进制像素,将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到修改后的不变像素线性列表为Lu';

由编码后的可变像素线性列表L′max通过A6步的逆操作,得到最大嵌入比特数的可变像素线性列表由修改后的不变像素线性列表为Lu′通过A7步的逆操作,得到最大嵌入比特数的不变像素线性列表D3、恢复原始图像

将最大嵌入比特数的不变像素线性列表 与最大嵌入比特数的可变像素线性列表依据像素分类标识矩阵T中0与1的位置,恢复得到差值图像X″,X″={x″i,j|i=1,2,...,M,j=1,2,...,N};

将差值图像X″中的差值像素x″i,j,根据溢出矩阵Map,Map={mk|mk=(s,i,j),k=1,

2,...,K},得到预测误差像素x’i,j,;

进而得到预测误差图像预测误差图像X',X'={x'i,j|i=1,2,...,M,j=1,2,...,N};

对预测误差图像X'进行A1步的逆操作,得到原始图像X。

说明书 :

云存储开销小的加密图像多位平面可逆数据隐藏方法

技术领域

[0001] 本发明涉及一种图像加密域可逆信息隐藏方法。

背景技术

[0002] 随着网络和云服务的发展,数字图像数据以明文存储在云端很难满足用户对隐私保护的需求,因此,上传数字图像数据的加密版本成为了用户隐私保护的有效手段;另一方面,云服务提供者需在加密的数字图像中隐藏附加信息以便于密文数字图像的管理。兼顾用户隐私保护和密文图像管理的需求,图像加密域可逆数据隐藏(RDH-EI:Reversible Data Hiding in Encrypted Image)技术引起了越来越多的关注。
[0003] 在接收端,根据实际需求,合法的信息提取者可以从密文图像中提取附加信息,进而根据需要解密得到原始明文图像;这种密文数字图像中的附加信息隐藏、附加信息无损提取及图像无损恢复,即为图像加密域可逆数据隐藏(RDH-EI);
[0004] 近年来,人们对RDH-EI算法的可逆性、隐藏容量、和安全性进行了深入研究,提出了多种RDH-EI算法;目前已有的相关算法可分为加密前腾出空间(VRBE) 和加密后腾出空间(VRAE)两类;基于加密后腾出空间(VRAE)的RDH-EI算法中,用户端除图像加密外无需进行其他操作,云端的信息隐藏者在密文图像中直接进行信息隐藏;由于加密后的图像无法通过压缩或预测图像来产生冗余空间提高加密图像的嵌入容量,因此加密后腾出空间(VRAE)的算法仅在嵌入信息量较少的情景下适用。
[0005] 与VRAE算法相比,加密前腾出空间(VRBE)算法在明文域腾出空间用于隐藏信息,这虽然增加了明文所有者的负担;但是可以极大的提高嵌入信息量;扩大了RDH-EI的使用范围;
[0006] 2016年,文献1(D.Xu,R.Wang.Separable and error-free reversible data hiding in encrypted images[J].Signal Process.,2016,123:9-21)提出一种基于预测误差的加密前预留空间RDH-EI算法;文献1算法的信息嵌入采用的是直方图平移和差值扩展技术,这种方法一个像素仅能嵌入1比特信息,最大嵌入容量0.75bpp;但该算法加密图像存在信息泄露的风险(加密图像泄露了原始图像的部分轮廓信息)。
[0007] 文献2(Yi Shuang,Zhou Yicong.Binary-block embedding for reversible data hiding in encrypted images[J].Signal Processing,2017,133:40-51)提出基于二进制块嵌入(Binary-block embedding,BBE)的RDH-EI算法;该算法基于BBE将原始图像中低位平面的比特嵌入较高位平面中,预留LSBs(Least significant bit)位平面用于信息隐藏,容量可达到2bpp左右;
[0008] 应用于云存储场景的RDH-EI算法,用户在上传、存储和下载时往往希望加密后的图像文件越小越好,这样不但能提高图片上传和下载的效率,同时节省了用户云存储的开销;上述提到的文献均没有考虑到加密图像在云存储场景所占用的空间问题;目前有研究者提出对图像进行JPEG压缩,但是这种压缩方法是有损压缩,其图像无法完全无损恢复,很难满足特定场景的应用,如医疗、军事和司法领域;如何在保证较高的嵌入容量以及安全性下,减小加密图像的文件大小,并能无损恢复是目前是RDH-EI技术的迫切需要。

发明内容

[0009] 本发明的目的是提供一种云存储开销小的加密图像多位平面可逆数据隐藏方法,该方法对图像的加密安全、简单通用,附加信息的最大隐写容量大,便于云端对密文图像的管理,并能根据用户需求来调节、减小密文图像的大小,节省用户的云存储开销。
[0010] 本发明实现其发明目的所采用的技术方案为,一种云存储开销小的加密图像多位平面可逆数据隐藏方法,包括如下步骤:
[0011] A、图像加密
[0012] A1、预测误差像素的生成:
[0013] 将原始图像X,X={xi,j|i=1,2,…,M,j=1,2,…,N}中的第i行第j列的原始像素xi,j,按下式变换得到第i行第j列的预测误差像素x′i,j,
[0014]
[0015] 式中,║·║代表四舍五入运算,M为原始图像X的行数,也即i的最大值, N为原始图像X的列数,也即j的最大值;
[0016] 由预测误差像素x′i,j得到预测误差图像X′,X′={x′i,j|i=1,2,…,M,j= 1,2,…,N};
[0017] A2、溢出标识列表的生成:
[0018] 将预测误差图像X′中的第i行第j列的预测误差像素x′i,j,按下式规范到 [-127,+127之内,得到第i行第j列的差值像素x″i,j,
[0019]
[0020] 由差值像素x″i,j得到差值图像为X″,X″={x″i,j|i=1,2,…,M,j= 1,2,…,N};
[0021] [-127,+127]范围之外的预测误差像素x′i,j为被规范的预测误差像素,其坐标列表记为溢出标识列表Map,Map={mk|mk=(s,i,j),k=1,2,…,K};其中s代表符号位,s=0代表负数,s=1代表正数; k为被规范的预测误差像素的序号,K为被规范的预测误差像素的个数;
[0022] 将原始图像X的行数M的二进制表示的位数记为nM, 为向上取整运算;log2(·)表示以2为底的对数运算;
[0023] 将原始图像X的列数N的二进制表示位数记为nN,nN=[log2(N)];
[0024] 将溢出标识列表Map依次串连成一维向量,得到溢出列表比特流 溢出列表比特流 的长度记为nm,nm=(nM+nN+1)×K;
[0025] A3、像素分类矩阵的生成:
[0026] 将差值图像X″中取值在区间[-2y-1+1,2y-1]内的差值像素x″i,j,称为可变像素lp,即lp=x″i,j∈[-2y-1+1,2y-1];其中,y为嵌入时的不变位数,y= 1,2,…7;p为可变像素的序号;然后,将所有的可变像素lp串联成可变像素线性列表Lc,Lc={lp|lp,p=1,2,…,P};P为差值图像X″中可变像素lp的个数;
[0027] 将差值图像X″中除可变像素lp外的差值像素x″i,j称为不变像素lu;将差值图像X″中所有的不变像素lu串联为不变像素线性表Lu:
[0028] Lu={lu|lu∈[-127,-2y-1+1)∪(2y-1,+127],u=1,2,…,U};其中,u 为不变像素lu的序号,U为差值图像X″中不变像素lu的个数,U=M×N-P;
[0029] 进而得到差值图像X″的嵌入比特数C:
[0030] C=(8-y)×P-M×N-nm;其中y为可变像素lp嵌入加密信息时的不变位数y,其取值为1,2,…7;
[0031] 将可变像素lp嵌入加密信息时的不变位数y的不同分别代入上式,得到相应的差值图像X″的嵌入比特数C,找出这些嵌入比特数C的最大值,记为差值图像X″的最大嵌入比特数Cmax;对应的可变像素lp嵌入加密信息时的不变位数y的取值记为最大嵌入比特数的不变位数ymax;即:Cmax= (8-ymax)×P-M×N-nm;
[0032] 根据最大嵌入比特数Cmax对应的差值图像X″中的差值像素x″i,j是否是可变像素lp,得到差值像素x″i,j的分类元素ti,j,
[0033]
[0034] 即分类元素ti,j的值为1,则差值图像X″中对应位置的像素x″i,j为可变像素 lp,否则,差值图像X″中对应位置的像素x″i,j为不变像素;
[0035] 进而得到最大嵌入比特数像素分类矩阵Tmax:
[0036] Tmax={ti,j|i=1,2,…,M,j=1,2,…,N};
[0037] A4、分类压缩向量的生成:
[0038] 将最大嵌入比特数像素分类矩阵Tmax,分成 个4×4的二进制块TS,-S 为二进制块TS的序号;然后采用基于二进制块压缩的方法将二进制块TS压缩成二进制压缩块T′S,二进制压缩块T′S的长度ls的计算如下式:
[0039]
[0040] 其中,G-I表示全为1的二进制块TS,Bad表示无法压缩的的二进制块 TS,G-II表示其他二进制块TS;其中qe为其他二进制块G-II中第e个像素0 的位置占用的比特数,r为其他二进制块G-II中像素0的个数, v为其他二进制块G-II中像素0的个数r占用的比特数;∑.为求和运算;
[0041] 最后将所有的二进制压缩块T′S依序串联成一维的分类压缩向量 分类压缩向量的长度L由下式确定:
[0042]
[0043] A5、最大嵌入比特数的修正:
[0044] 根据分类压缩向量 的长度L,得到修正后的最大嵌入比特数C′max为: C′max=(8-ymax)×P-L-nm,即C′max=Cmax+M×N-L;
[0045] A6、可变像素的编码:
[0046] 将差值图像X″中与最大嵌入比特数Cmax对应的可变像素线性列表Lc,命名为最大嵌入比特数的可变像素线性列表
[0047]
[0048] 将最大嵌入比特数的可变像素线性列表 中的可变像素lp按下式进行编码得到编码后的可变像素l'p:l'p=lp+|-2ymax-1+1|(p=1,2,…,P);
[0049] 将所有的编码后的可变像素l′p串联得到编码后的可变像素线性列表L′max[0050] A7、不变像素的处理:
[0051] 将差值图像X″中与最大嵌入比特数Cmax对应的不可变像素线性列表Lu,命名为最大嵌入比特数的不变像素线性列表
[0052]
[0053] 对最大嵌入比特数的不变像素线性列表 中的不变像素像素Lu按下式进行符号位修改,得到修改后的不变像素l′u,
[0054]
[0055] 进而得到修改后的不变像素线性列表为,Lu′={l′u|u=1,2,…,U};
[0056] A8、不变比特流的生成:
[0057] 将每个不变像素l′u转换成8比特的二进制序列,并将所有不变像素的二进制序列串联起来构成不变像素比特流
[0058] 将A6步的编码后的可变像素线性列表L′max中的编码后的可变像素l′p转换成8比特的二进制序列,并取出二进制序列中与编码后的可变像素l′p不变位对应的二进制值,将所有的编码后的可变像素l′p不变位对应的二进制值串联起来构成可变像素不变位比特流[0059] 将不变像素比特流 与可变像素不变位比特流 串联构成不变比特流Y;
[0060] A9、固定列不变生成初始加密图像:
[0061] 根据密钥Ke对不变二进制比特流Y依次进行DES加密、置乱加密,得到加密不变二进制比特流Y’;再将加密不变二进制比特流Y’按8比特为一组生成一个十进制加密像素,进而得到加密不变像素序列Lu″;将加密不变像素序列Lu″组合构成Mx×N大小的初始加密图像Xb′,Xb′={xb′i,j|i=1,2,…Mx,j= 1,2,…,N};Mx的值为加密不变像素序列Lu″的长度除以原始图像X的列数N 的商,且Mx<M;
[0062] A10、加密图像的生成:
[0063] 用户再根据密钥Ke对分类压缩向量 做异或加密,得到加密分类压缩向量[0064] 根据用户设定的嵌入比特数w,生成长度为w的一维全0向量,并根据密钥Ke对该一维全0向量按位异或,得到长度为w比特的随机序列Rw;再将加密分类压缩向量 A2步的溢出矩阵比特序列 随机序列Rw串联,得到串联序列;并根据密钥Ke对串联序列置乱,随后,在置乱后的串联序列的末尾串联20比特全0序列,并将设定的嵌入比特数w的二进制数替换末尾的20 比特全0序列,得到加密图像比特流B。
[0065] 最后,将加密图像比特流B以每8比特为一组生成一个十进制像素值;进而得到加b密像素序列;再将加密像素序列与A9步的初始加密图像X ′串联得到加密图像序列,将加密图像序列合成大小为M'x×N的加密图像Xb″; Xb″={xb″i,j|i=1,2,…,Mx,j=1,2,…,N};
M′x的值为加密图像序列的长度除以原始图像X的列数N的商,且M′x<M;最后将加密图像Xb″传送给云端;
[0066] B、信息隐藏
[0067] 云管理者得到加密图像Xb″,并在加密图像Xb″中嵌入预设的秘密信息S′;云管理者再将加密图像Xb″按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制,得到二进制加密图像比特流Q;同时读取二进制加密图像比特流Q末尾的20比特二进制值,并将20比特二进制值转换为十进制数,得到嵌入比特数w;
[0068] 用秘密信息S′替换二进制加密图像比特流Q的倒数第20+w比特至倒数21 比特,得到含有秘密信息的二进制加密图像比特流Q’,再将含有秘密信息的二进制加密图像比特流Q’重新按8比特为一组合成十进制像素值序列;将十进制像素值序列构生成含秘密信息的加密图像X″′,X″′={x″′i,j|i=1,2,...,M’x,j= 1,2,…,N};
[0069] C、秘密信息提取
[0070] 接收者得到含有秘密信息的加密图像X″′,首先将X″′按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制比特序列,还原出含有秘密信息的二进制加密图像比特流Q’;读取含有秘密信息的二进制加密图像比特流Q’末尾20比特的二进制值,再将末尾20比特的二进制值转换为十进制数,得到嵌入比特数w;读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w 比特至倒数第21比特,得到云管理者嵌入的秘密信息S′;
[0071] D、图像解密及恢复
[0072] D1、提取像素分类矩阵T及溢出像素标记矩阵Map:
[0073] 接收者读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm比特至倒数第21+w比特的二进制值,并将其依次转换为十进制数,还原得到溢出像素标记列表Map;
[0074] 读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm+L比特至倒数21+w+nm比特的二进制值,还原得到压缩后的加密分类压缩向量 对压缩后的加密分类压缩向量 根据秘钥Ke按位异或置乱解密,得到压缩后的分类压缩向量 对压缩后的分类压缩向量 进行基于二进制块压缩的解压操作,解压得到 个4×4的二进制块TS,再将这些二进制块TS依序重组,得到最大嵌入比特数像素分类矩阵Tmax;
[0075] D2、图像解密
[0076] 读取含有秘密信息的二进制加密图像比特流Q’中的第1比特至倒数第 21+w+nm +L比特,还原得到加密不变二进制比特流Y’;对加密不变二进制比特流Y’根据加密密钥Ke进行置乱解密及DES解密得到不变二进制比特流Y;读取不变二进制比特流Y的前P×ymax比特,还原得到可变像素不变位比特流
[0077] 可变像素不变位比特流 每ymax个比特分为一组,将每组中高8-ymax位补0构成8比特二进制值组;最后将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到编码后的可变像素线性列表L’max;
[0078] 读取不变二进制比特流Y中第P×ymax+1比特至末尾,还原得到不变像素比特流将不变像素比特流 每8比特为一组合成十进制像素,将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到修改后的不变像素线性列表为Lu';
[0079] 由编码后的可变像素线性列表L’max通过A6步的逆操作,得到最大嵌入比特数的可变像素线性列表
[0080] 由修改后的不变像素线性列表为Lu′通过A7步的逆操作,得到最大嵌入比特数的不变像素线性列表
[0081] D3、恢复原始图像
[0082] 将最大嵌入比特数的不变像素线性列表 与最大嵌入比特数的可变像素线性列表 依据像素分类标识矩阵T中0与1的位置,恢复得到差值图像 X″,X″={x″i,j|i=1,2,…,M,j=1,2,…,N};
[0083] 将差值图像X″中的差值像素x″i,j,根据溢出矩阵Map, Map={mk|mk=(s,i,j),k=1,2,…,K},得到预测误差像素x’i,j,;
[0084]
[0085] 进而得到预测误差图像预测误差图像X',X′={x′i,j|i=1,2,…,M,j= 1,2,…,N};
[0086] 对预测误差图像X′进行A1步的逆操作,得到原始图像X。
[0087] 与现有技术相比,本发明的有益效果是:
[0088] 一、由于加密图像都是随机噪声,难以通过一般的压缩算法来减小其文件大小;本发明通过减小加密图像的像素个数,来达到减小文件大小的目的;用户端通过预测误差压缩明文图像,将压缩后产生的冗余空间与不可压缩的图像信息分离,图像信息保持不变;用户可以根据自己的容量需求决定图像的像素数量从而减小加密图像的文件大小,并且能够无损的重建原始图像;合理利用了加密图像的嵌入容量,提高了算法的实用性;
[0089] 二、本发明在加密前对图像进行差值预测,实现了对图像的压缩,产生了大量的冗余空间可用于嵌入信息,自适应寻找最佳阈值使隐写容量最大化;与文献1和文献2相比,本发明采用多位平面嵌入的方法实现了一个像素嵌入多比特信息,自适应产生的像素分类矩阵Tmax采用稀疏矩阵压缩,在不降低时间复杂度的情况下进一步提高嵌入容量;测试表明,对常用测试图像Lena,嵌入率达到2.77比特每像素,相对于文献1和文献2在嵌入容量方面有明显的优势;
[0090] 三、本发明对“加密域可逆信息隐藏”中的原始图像采用比特分类加密的方法,即对可变比特置乱异或加密,不变比特由于不需要嵌入信息,根据用户所需要的安全等级可以采用任何传统的加密方法对其进行加密;若应用于军事等场合,可采用DES分组加密的方法对不变比特加密,生成的加密图像既破坏了原始图像的统计特性,又实现对像素位置的保护,同时由于加密图像的大小与原始图像的大小不同,保护了图像的尺寸信息,提高了加密图像安全性;
[0091] 总之,本发明用户根据自己的需要控制加密图像的大小,合理利用资源,节省用户云存储开销,具有很强的实用性;加密前对像素采用新颖的预测方法,极大地提高了图像的最大嵌入容量;采用比特分类加密的方法对不同类型的比特使用不同的加密方法,提高了图像内容保护的安全性;
[0092] 下面结合附图和具体实施方式对本发明作进一步的详细说明;

附图说明

[0093] 图1a为本发明仿真实验使用的Baboon原始图像。
[0094] 图1b为本发明仿真实验得到的Baboon加密图像。
[0095] 图2a为本发明仿真实验使用的Lena原始图像。
[0096] 图2b为本发明仿真实验得到的Lena加密图像。
[0097] 图3a为用30张异或加密图像采用COA攻击图2a异或加密的结果。
[0098] 图3b为用30张本发明加密图像采用COA攻击图2b加密图像的结果。
[0099] 图4a为本发明仿真实验得到的Baboon解密恢复图像。
[0100] 图4b为本发明仿真实验得到的Lena解密恢复图像。
[0101] 图5为用50张加密图像COA攻击结果与原始图像PSNR值对比图。
[0102] 图6本发明与文献1、文献2算法的100幅测试图像的最大隐写容量对比图。
[0103] 图7本发明与文献1、文献2算法的100幅测试图像的加密图像文件大小对比图。

具体实施方式

[0104] 实施例
[0105] 本发明的一种具体实施方式是,一种云存储开销小的加密图像多位平面可逆数据隐藏方法,包括如下步骤:
[0106] A、图像加密
[0107] A1、预测误差像素的生成:
[0108] 将原始图像X,X={xi,j|i=1,2,…,M,j=1,2,…,N}中的第i行第j列的原始像素xi,j,按下式变换得到第i行第j列的预测误差像素x′i,j,
[0109]
[0110] 式中,║·║代表四舍五入运算,M为原始图像X的行数,也即i的最大值, N为原始图像X的列数,也即j的最大值;
[0111] 由预测误差像素x′i,j得到预测误差图像X′,X′={x′i,j|i=1,2,…,M,j= 1,2,…,N};
[0112] A2、溢出标识列表的生成:
[0113] 将预测误差图像X′中的第i行第j列的预测误差像素x′i,j,按下式规范到 [-127,127之内,得到第i行第j列的差值像素x″i,j,
[0114]
[0115] 由差值像素x″i,j得到差值图像为X″,X″={x″i,j|i=1,2,…,M,j=1,2,…,N};
[0116] [-127,+127]范围之外的预测误差像素x′i,j为被规范的预测误差像素,其坐标列表记为溢出标识列表Map,Map={mk|mk=(s,i,j),k=1,2,…,K};其中s代表符号位,s=0代表负数,s=1代表正数; k为被规范的预测误差像素的序号,K为被规范的预测误差像素的个数;
[0117] 将原始图像X的行数M的二进制表示的位数记为nM, 为向上取整运算;log2(·)表示以2为底的对数运算;
[0118] 将原始图像X的列数N的二进制表示位数记为nN,
[0119] 将溢出标识列表Map依次串连成一维向量,得到溢出列表比特流 溢出列表比特流 的长度记为nm,nm=(nM+nN+1)×K;
[0120] A3、像素分类矩阵的生成:
[0121] 将差值图像X″中取值在区间[-2y-1+1,2y-1]内的差值像素x″i,j,称为可变像素lp,即lp=x″i,j∈[-2y-1+1,2y-1];其中,为嵌入时的不变位数,y= 1,2,…7;p为可变像素的序c c号;然后,将所有的可变像素lp串联成可变像素线性列表L ,L={lp|lp,p=1,2,…,P};P为差值图像X″中可变像素lp的个数;
[0122] 将差值图像X″中除可变像素lp外的差值像素x″i,j称为不变像素lu;将差值图像X″中所有的不变像素lu串联为不变像素线性表Lu:
[0123] Lu={lu|lu∈[-127,-2y-1+1)∪(2y-1,+127],u=1,2,…,U};其中,u 为不变像素lu的序号,U为差值图像X″中不变像素lu的个数,U=M×N-P;
[0124] 进而得到差值图像X″的嵌入比特数C:
[0125] C=(8-y)×P-M×N-nm;其中y为可变像素lp嵌入加密信息时的不变位数y,其取值为1,2,…7;
[0126] 将可变像素lp嵌入加密信息时的不变位数y的不同分别代入上式,得到相应的差值图像X″的嵌入比特数C,找出这些嵌入比特数C的最大值,记为差值图像X″的最大嵌入比特数Cmax;对应的可变像素lp嵌入加密信息时的不变位数y的取值记为最大嵌入比特数的不变位数ymax;即:Cmax= (8-ymax)×P-M×N-nm;
[0127] 根据最大嵌入比特数Cmax对应的差值图像X″中的差值像素x″i,j是否是可变像素lp,得到差值像素x″i,j的分类元素ti,j,
[0128]
[0129] 即分类元素ti,j的值为1,则差值图像X″中对应位置的像素x″i,j为可变像素 lp,否则,差值图像X″中对应位置的像素x″i,j为不变像素;
[0130] 进而得到最大嵌入比特数像素分类矩阵Tmax:
[0131] Tmax={ti,j|i=1,2,…,M,j=1,2,…,N};
[0132] A4、分类压缩向量的生成:
[0133] 将最大嵌入比特数像素分类矩阵Tmax,分成 个4×4的二进制块TS,S 为二进制块TS的序号;然后采用基于二进制块压缩的方法将二进制块TS压缩成二进制压缩块T′S,二进制压缩块T′S的长度ls的计算如下式:
[0134]
[0135] 其中,G-I表示全为1的二进制块TS,Bad表示无法压缩的的二进制块 TS,G-II表示其他二进制块TS;其中qe为其他二进制块G-II中第e个像素0 的位置占用的比特数,r为其他二进制块G-II中像素0的个数, v为其他二进制块G-II中像素0的个数r占用的比特数;∑.为求和运算;
[0136] 最后将所有的二进制压缩块T′S依序串联成一维的分类压缩向量 分类压缩向量的长度L由下式确定:
[0137]
[0138] A5、最大嵌入比特数的修正:
[0139] 根据分类压缩向量 的长度L,得到修正后的最大嵌入比特数C′max为: C′max=(8-ymax)×P-L-nm,即C′max=Cmax+M×N-L;
[0140] A6、可变像素的编码:
[0141] 将差值图像X″中与最大嵌入比特数Cmax对应的可变像素线性列表Lc,命名为最大嵌入比特数的可变像素线性列表
[0142]
[0143] 将最大嵌入比特数的可变像素线性列表 中的可变像素lp按下式进行编码得到编码后的可变像素l′p:
[0144] 将所有的编码后的可变像素l′p串联得到编码后的可变像素线性列表L′max[0145] A7、不变像素的处理:
[0146] 将差值图像X″中与最大嵌入比特数Cmax对应的不可变像素线性列表Lu,命名为最大嵌入比特数的不变像素线性列表
[0147]
[0148] 对最大嵌入比特数的不变像素线性列表 中的不变像素像素Lu按下式进行符号位修改,得到修改后的不变像素l′u,
[0149]
[0150] 进而得到修改后的不变像素线性列表为,Lu′={l′u|u=1,2,…,U};
[0151] A8、不变比特流的生成:
[0152] 将每个不变像素l′u转换成8比特的二进制序列,并将所有不变像素的二进制序列串联起来构成不变像素比特流
[0153] 将A6步的编码后的可变像素线性列表L′max中的编码后的可变像素l′p转换成8比特的二进制序列,并取出二进制序列中与编码后的可变像素l′p不变位对应的二进制值,将所有的编码后的可变像素l′p不变位对应的二进制值串联起来构成可变像素不变位比特流[0154] 将不变像素比特流 与可变像素不变位比特流 串联构成不变比特流 Y;
[0155] A9、固定列不变生成初始加密图像:
[0156] 根据密钥Ke对不变二进制比特流Y依次进行DES加密、置乱加密,得到加密不变二进制比特流Y’;再将加密不变二进制比特流Y’按8比特为一组生成一个十进制加密像素,进而得到加密不变像素序列Lu″;将加密不变像素序列Lu″组合构成Mx×N大小的初始加密图像Xb′,Xb′={xb′i,j|i=1,2,…Mx,j= 1,2,…,N};Mx的值为加密不变像素序列Lu″的长度除以原始图像X的列数N 的商,且Mx<M;
[0157] A10、加密图像的生成:
[0158] 用户再根据密钥Ke对分类压缩向量 做异或加密,得到加密分类压缩向量[0159] 根据用户设定的嵌入比特数w,生成长度为w的一维全0向量,并根据密钥Ke对该一维全0向量按位异或,得到长度为w比特的随机序列Rw;再将加密分类压缩向量 A2步的溢出矩阵比特序列 随机序列Rw串联,得到串联序列;并根据密钥Ke对串联序列置乱,随后,在置乱后的串联序列的末尾串联20比特全0序列,并将设定的嵌入比特数w的二进制数替换末尾的20 比特全0序列,得到加密图像比特流B。
[0160] 最后,将加密图像比特流B以每8比特为一组生成一个十进制像素值;进而得到加密像素序列;再将加密像素序列与A9步的初始加密图像Xb′串联得到加密图像序列,将加密图像序列合成大小为M′x×N的加密图像Xb″; Xb″={xb″i,j|i=1,2,…,Mx,j=1,2,…,N};M′x的值为加密图像序列的长度除以原始图像X的列数N的商,且M′x<M;最后将加密图像Xb″传送给云端;
[0161] B、信息隐藏
[0162] 云管理者得到加密图像Xb″,并在加密图像Xb″中嵌入预设的秘密信息S′;云管理者再将加密图像Xb″按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制,得到二进制加密图像比特流Q;同时读取二进制加密图像比特流Q末尾的20比特二进制值,并将20比特二进制值转换为十进制数,得到嵌入比特数w;
[0163] 用秘密信息S′替换二进制加密图像比特流Q的倒数第20+w比特至倒数21 比特,得到含有秘密信息的二进制加密图像比特流Q’,再将含有秘密信息的二进制加密图像比特流Q’重新按8比特为一组合成十进制像素值序列;将十进制像素值序列构生成含秘密信息的加密图像X″′,X″′={x″′i,j|i=1,2,...,M’x,j= 1,2,…,N};
[0164] C、秘密信息提取
[0165] 接收者得到含有秘密信息的加密图像X″′,首先将X″′按列串联成一维向量,并将一维向量中的所有加密像素值转换成二进制比特序列,还原出含有秘密信息的二进制加密图像比特流Q’;读取含有秘密信息的二进制加密图像比特流Q’末尾20比特的二进制值,再将末尾20比特的二进制值转换为十进制数,得到嵌入比特数w;读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w 比特至倒数第21比特,得到云管理者嵌入的秘密信息S′;
[0166] D、图像解密及恢复
[0167] D1、提取像素分类矩阵T及溢出像素标记矩阵Map:
[0168] 接收者读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm比特至倒数第21+w比特的二进制值,并将其依次转换为十进制数,还原得到溢出像素标记列表Map;
[0169] 读取含有秘密信息的二进制加密图像比特流Q’的倒数第20+w+nm+L比特至倒数21+w+nm比特的二进制值,还原得到压缩后的加密分类压缩向量 对压缩后的加密分类压缩向量 根据秘钥Ke按位异或置乱解密,得到压缩后的分类压缩向量 对压缩后的分类压缩向量 进行基于二进制块压缩的解压操作,解压得到 个4×4的二进制块TS,再将这些二进制块TS依序重组,得到最大嵌入比特数像素分类矩阵Tmax;
[0170] D2、图像解密
[0171] 读取含有秘密信息的二进制加密图像比特流Q’中的第1比特至倒数第 21+w+nm +L比特,还原得到加密不变二进制比特流Y’;对加密不变二进制比特流Y’根据加密密钥Ke进行置乱解密及DES解密得到不变二进制比特流Y;读取不变二进制比特流Y的前P×ymax比特,还原得到可变像素不变位比特流
[0172] 可变像素不变位比特流 每ymax个比特分为一组,将每组中高8-ymax位补0构成8比特二进制值组;最后将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到编码后的可变像素线性列表L’max;
[0173] 读取不变二进制比特流Y中第P×ymax+1比特至末尾,还原得到不变像素比特流将不变像素比特流 每8比特为一组合成十进制像素,将每个8比特二进制值组转化成十进制值,再将这些十进制值串联,还原得到修改后的不变像素线性列表为Lu′;
[0174] 由编码后的可变像素线性列表L’max通过A6步的逆操作,得到最大嵌入比特数的可变像素线性列表
[0175] 由修改后的不变像素线性列表为Lu′通过A7步的逆操作,得到最大嵌入比特数的不变像素线性列表
[0176] D3、恢复原始图像
[0177] 将最大嵌入比特数的不变像素线性列表 与最大嵌入比特数的可变像素线性列表 依据像素分类标识矩阵T中0与1的位置,恢复得到差值图像 X″,X″={x″i,j|i=1,2,…,M,=1,2,…,N};
[0178] 将差值图像X″中的差值像素x″i,j,根据溢出矩阵Map, Map={mk|mk=(s,i,j),k=1,2,…,K},得到预测误差像素x’i,j,;
[0179]
[0180] 进而得到预测误差图像预测误差图像X′,X′={x′i,j|i=1,2,…,M,j= 1,2,…,N};
[0181] 对预测误差图像X′进行A1步的逆操作,得到原始图像X。
[0182] 本发明的效果可以通过以下性能分析及仿真实验测试得到验证和说明。
[0183] 仿真实验及性能分析
[0184] 实验仿真以大小为:M×N=512×512的Baboon图像和Lena为测试图像,验证本发明方法的各项性能。实验中采用Matlab提供的标准rand函数生成随机数对测试图像加密,置乱加密密钥Ke为123456,DES密钥KD为1234567887654320;
[0185] 图1a为原始的Baboon图像,图1b为利用本发明方法得到的Baboon加密图像;图2a为原始的Lena图像,图2b为利用本发明方法得到的Lena加密图像;由图1b和图2b看以看出,两个加密图像都类似随机噪声,加密效果良好,图1b和图2b在嵌入容量为10000比特的条件下图像大小分别为:440×512和 338×512,节省了用户云存储开销;
[0186] 图3a为用30张图像用同样的异或加密方法采用COA攻击图2a异或加密的结果;图3b为用30张图像用本发明加密方法采用COA攻击图2b的结果(嵌入容量为10000比特);对比图3a与图3b,可见采用异或加密的方法无法抵抗唯密文攻击(COA),而本发明加密方法可以抵抗唯密文攻击;
[0187] 图5给出了分别使用异或加密和本发明加密方法得到的50张加密图像使用唯密文攻击(COA)得到的攻击结果与原始图像的峰值信噪比(PSNR)值,由图5可以看出,仅使用异或加密的攻击结果与原始图像的PSNR值高达30,信息泄露比较严重;而使用本发明的加密方法COA攻击结果与原始图像的PSNR 值仍在10左右,不存在信息泄露;
[0188] 根据本发明的提取算法在含附加信息的加密图像和中提取秘密信息,秘密信息均能以100%概率正确提取。当接收者获得置乱加密密钥Ke、DES密钥KD和相应的加密图像,利用本发明的D、图像解密及恢复步骤可以得到与原始图像相同的恢复图像,图4a是Baboon恢复图像,图4b是Lena图像;
[0189] 图6给出了100幅测试图像(来源:ucid)分别用本发明方法和文献1算法、文献2算法,进行测试信息隐藏的最大隐写容量;其中文献1算法的最大隐写容量不应超过0.75bpp,这是因为文献1最大可嵌入像素占图像的比值最大为 0.75。由图6可以看出,本发明方法的隐写容量为1.3bpp~4.5bpp,文献1算法隐写容量为0.1bpp~0.6bpp,文献2算法隐写容量为0.5bpp~2.4bpp,对100幅测试图像,本发明方法的隐写容量均高于文献1和2算法。常用的测试图像如Lena、 Airplane、Woman、Peppers、Baboon,本发明方法的隐写容量分别为:2.77bpp、 2.81bpp、1.89bpp、2.66bpp、1.16bpp;文献2算法的隐写容量分别为:0.30bpp、
0.36bpp、0.27bpp、0.24bpp、0.11bpp。对这五幅测试图像,本发明方法最大隐写容量均远高于文献2算法;需要说明的是,图6中的隐写容量做了归一化处理(bpp:bit per pixel),即将隐写容量(比特数)除以图像的像素个数;
[0190] 图7给出100幅测试图像在嵌入容量为10000比特下,文献1、文献2、和本发明的加密图像文件大小对比。由图7可以明显看出,本发明加密图像在保证安全的条件下云存储占用空间最小,节省了用户云存储开销;
[0191] 下表为仿真实验中六幅测试图像自适应生成的最佳阈值、最佳阈值对应的不变位、以及对应的最大嵌入容量。六幅测试图像分别为:Cup、Airplane、 Lena、Peppers、Man、Baboon。
[0192]
[0193] 从表1的测试结果以看出,随着图像纹理复杂度增加,不变位ymax也随之增加,最佳阈值范围增大,最大嵌入率减小。