基于直方图平移的加密域可逆水印算法

2018-05-10 02:16谢晓尧彭长根
郑州大学学报(理学版) 2018年2期
关键词:直方图解密灰度

罗 昊, 谢晓尧, 彭长根,3

(1. 贵州大学 计算机科学与技术学院 贵州 贵阳 550025; 2. 贵州师范大学 贵州省信息与计算科学重点实验室 贵州 贵阳 550001; 3. 贵州省公共大数据重点实验室 贵州 贵阳 550025)

0 引言

信息内容安全技术是利用计算机从包含海量信息并且迅速变化的网络中,对特定安全主题相关信息进行自动获取、识别和分析的技术.广义的信息内容安全还包括信息内容的保密、知识产权保护、信息隐藏、隐私保护等[1],而可逆水印技术就属于信息隐藏的范畴.可逆水印技术是一种将水印隐藏到原始载体中,在提取水印以后,能够无损地恢复出原始载体的技术.该技术在医疗图像、军事图像、司法图像等不能容忍图像恢复失真的情况下,有着极其重要的作用.

近年来,云计算、大数据逐渐被人们所关注.用户可以将自己的资料上传到云端,还可以从云端下载数据供自己使用.这样在给广大用户带来极大便利的同时,也带来了数据安全和隐私保护的问题.因此,需要对原始载体进行加密处理,来保护个人的隐私数据.

随着泄密事件的不断出现,个人的隐私保护显得越来越重要,加密域可逆水印技术逐渐成为一个值得研究的热点问题.把加密技术和可逆隐藏技术结合起来,既能加强载体数据的安全性,又能保护载体的完整性.文献[2]提出了一种在载体图像加密域中取反图像像素的最低三位来隐藏数据,并在接收端利用图像的相关性来提取隐藏数据的方法.文献[3]提出了利用信源编码的方法对载体图像加密域中的像素低三位进行无损压缩,把嵌入空间腾出来,但是它们直接解密图像的PSNR值都不高.因此,本文提出了一种加密域下的直方图平移可逆水印算法,该算法既能无损地恢复原始载体,又能保证个人的隐私数据.在加密域下利用直方图平移技术[4-6]对水印进行嵌入和提取,只有拥有水印加密密钥才能成功地提取水印,只有拥有图像加密密钥才能成功地恢复原始图像,从而保证了水印和载体图像的安全性.实验结果表明,该算法针对直接解密图像的PSNR值要优于文献[2]和文献[3]中的算法.

1 图像加密方法

图像加密方法采用了文献[2]、[3]、[7]中的方法.设载体图像M为原始的灰度图像,图像大小为P×Q,图像像素值为mi,j,1≤i≤P,1≤j≤Q,每个像素值mi,j可以表示为一个八位二进制数据串.每一位数据可以表示为bi,j(k),1≤k≤8,有

(1)

首先利用产生Logistic混沌序列的方法伪随机产生长为8PQ的比特位串si,j(k),然后与bi,j(k)按位异或实现图像加密,有

ni,j(k)=bi,j(k)⊕si,j(k),

(2)

式中:ni,j(k)为加密后的数据.加密后的像素值Ni,j可以表示为

(3)

2 加密域可逆水印算法

本文算法是一种在图像加密域下的可逆水印算法,算法的框图如图1所示.

图1 算法的框图Fig.1 Sketch of the proposed scheme

该算法首先通过加密密钥k1把原始图像进行加密,得到加密以后的图像.同时,通过水印加密密钥k2对原始水印进行加密,然后利用直方图平移技术,把加密后的水印嵌入到加密的图像中.在进行水印提取时,首先提取出加密的水印,然后利用水印加密密钥k2解密出水印,在提取水印的同时,注意利用直方图平移技术恢复出加密的图像载体,然后利用加密密钥k1解密出图像载体.

3 可逆水印的嵌入和提取算法

3.1 水印的嵌入

水印的嵌入步骤如下.

1) 利用Logistic混沌序列对原始水印进行异或加密.

2) 同样利用Logistic混沌序列,应用本文第1小节的方法对原始图像载体进行加密.

3) 对步骤2)的加密图像载体生成灰度直方图h.

4) 在直方图中,找到最大值点Pmax和最小值点Pmin.Pmax,Pmin∈[0,255].

5) 若h(Pmin)>0,则可以转化为“有零点的情况”嵌入水印.h(Pmin)表示灰度值为Pmin的像素点的个数.

① [xmin,ymin]=find(E==Pmin);//E为加密后的载体图像,找到灰度值为Pmin的点的位置

② for i=1∶length(xmin)

record(xmin(i),ymin(i))=1;//利用一个与原始载体图像一样大小的位图record,记录

//Pmin在原始载体图像中出现的位置,xmin,ymin为像素点的坐标

end

③ huffmanresult←huffencode(record);//对位图record进行Huffman压缩,把压缩的结果存放

//在经过Huffman压缩的原始载体图像的副本中,huffencode表示Huffman压缩

④ for i=1∶length(xmin)

E(xmin(i),ymin(i))=Pmax;//把原始图像中像素值为Pmin的点赋值为Pmax,这样就使得

//h(Pmin)=0

end

6) 不失一般性,假定Pmax

if (E(i,j)∈(Pmax,Pmin))

E(i,j)=E(i,j)+1; //将所有灰度值为(Pmax,Pmin)的点的灰度值加1,则所有灰度值为

//Pmax+1的位置空余

end

7) [x,y]=find(E==Pmax);//按照一定的顺序扫描载体图像,把所有灰度值为Pmax的点记录下来,

//x,y为像素点的坐标.

8) if (binarywatermark(i,j)==1)

E(x(k),y(k))=E(x(k),y(k))+1; //若水印值为1,则灰度值为Pmax的点的灰度值加1

k=k+1; //k为x,y的下标

end

if (binarywatermark(i,j)==0)

k=k+1; //若水印值为0,则灰度值为Pmax的点的灰度值不变

end

3.2 水印的提取

水印的提取步骤如下.

1) 生成含有水印的图像的直方图extracth.

2) 利用与嵌入水印时相同的扫描顺序扫描图像,把每个灰度值为Pmax和Pmax+1的点的位置记录下来,放置到x,y中:

for i=1∶wM* wN //wM,wN为水印图像的长宽

if (E(x(k1),y(k1))==Pmax) //k1为x,y的下标

exwatermark(r1)=0; //如果灰度值为Pmax,则水印为0,r1为exwatermark的下标

end

if(E(x(k1),y(k1))==Pmax+1)

exwatermark(r1)=1; //如果灰度值为Pmax+1,则水印为1

E(x(k1),y(k1))=Pmax; //把该像素点的灰度值设置为Pmax

end

end

3) 利用水印加密时的Logistic混沌序列,对提取出来的秘密水印进行解密.

4) 再次扫描图像.

if (E(i,j)∈(Pmax,Pmin])

E(i,j)=E(i,j)-1; //将灰度属于(Pmax,Pmin]的点的灰度值减1

end

5)若载体副本中含有最小值点Pmin非空的信息,则只需要将最小值点的灰度值恢复即可.

twodimextrecord←huffdecode(tt)//tt为最小值点Pmin非空的信息,twodimextrecord为

//把非空信息进行Huffman解压缩,然后转化为二维图像的结果,huffdecode表示Huffman

//解压缩

[extxmin,extymin]=find(twodimextrecord==1);//找到最小值点Pmin的位置

for i=1∶length(extxmin)

E((extxmin(i)),(extymin(i)))=Pmin; //把这些位置的点的灰度值赋值为Pmin

end

6) 利用图像载体加密时用到的Logistic混沌序列,对恢复出来的加密载体图像进行解密,最终得到原始载体图像.

4 实验结果与分析

选用256×256的Lena灰度图像作为载体进行实验,结果如图2所示.若采用22×22的水印图像,经过实验得出恢复处理后的载体图像的PSNR=Inf,含水印的直接解密图像的PSNR=55.377 2 dB.图2(d)的PSNR值为无穷大,说明本文算法在成功提取水印以后能使载体恢复过程无失真,达到了算法可逆的基本要求.

图2 Lena图像的实验结果Fig.2 Experimental results on Lena image

除了Lena图像以外,还选取了Venice、Couple、Sailboat、Airplane、Carnev、Bridge、Barche这7幅图像进行测试,8幅测试图像如图3所示.分别应用本文算法、文献[2]算法(简称为算法1)、文献[3]算法(简称为算法2)计算出含水印的直接解密图像的PSNR值.

表1列出了Lena、Sailboat、Airplane、Barche图像对应的PSNR值计算结果.另外,本文还选取了图3中的Venice、Couple、Carnev和Bridge图像,给出了它们对应的含水印的直接解密图像的PSNR值折线图,结果如图4所示.

图3 8幅测试图像Fig.3 Eight test images

从表1和图4的结果中可以看出,每张图像对应的含水印直接解密图像的PSNR值波动不明显,应用本文算法计算出的PSNR值比算法1和算法2计算出的PSNR值高,说明应用本文算法直接解密得到的图像质量要好于应用算法1和算法2的图像质量.而应用本文算法恢复出来的载体图像的PSNR值,经过计算得出的结果都是无穷大,并且都能正确提取出水印,水印提取的错误率为0,很好地满足了可逆水印的基本要求.另外,本文对原始水印进行了加密,在恢复出水印前还需要解密,这样更增强了水印本身的安全性.

表1 PSNR值计算结果

图4 PSNR值折线图Fig.4 Line charts of PSNR

5 结束语

提出了一种在加密域中进行直方图平移的可逆水印算法,该算法既能够保证原始载体的信息不对外泄露,做到了隐私保护,又能保证水印的安全性.应用该算法计算出的含水印直接解密图像的PSNR值比较高,能够无失真地恢复出原始载体,并且能正确提取水印.实验结果表明,应用本文算法计算得到的直接解密的图像质量要比应用算法1和算法2的图像质量好,充分说明了本文算法是有效且可行的.

参考文献:

[1] 张焕国,韩文报,来学嘉,等.网络空间安全综述[J].中国科学(信息科学),2016,46(2):125-164.

[2] ZHANG X P. Reversible data hiding in encrypted image[J]. IEEE signal processing letters,2011,18(4):255-258.

[3] ZHANG X P. Separable reversible data hiding in encrypted image[J]. IEEE transaction on information forensics and security,2012,7(2):826-832.

[4] NI Z C, SHI Y Q, ANSARI N,et al. Reversible data hiding[J]. IEEE transaction on circuits and system for video technology,2006,16(3):354-362.

[5] 武丹. 可逆数字水印技术的研究[D]. 杭州:浙江大学,2009.

[6] 王俊祥,杨波. 基于直方图平移可逆水印的性能估计[J]. 计算机应用,2010,30(12):3246-3251.

[7] HONG W, CHEN T S, WU H Y. An improved reversible data hiding in encrypted images using side match[J]. IEEE signal processing letters,2012,19(4):199-202.

猜你喜欢
直方图解密灰度
符合差分隐私的流数据统计直方图发布
采用改进导重法的拓扑结构灰度单元过滤技术
炫词解密
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
解密“一包三改”
基于FPGA的直方图均衡图像增强算法设计及实现
Arduino小车巡线程序的灰度阈值优化方案
炫词解密
炫词解密
用直方图控制画面影调