付笛,孔平,周亮,张建青,周艳丽,王宏杰,陈立范
(1.上海理工大学 健康科学与工程学院,上海 200093;2.上海健康医学院附属嘉定区中心医院,上海 201899;3.上海健康医学院 医学影像学院,上海 201318;4.上海健康医学院 文理教学部,上海 201318)
信息隐藏作为一种隐私保护技术,它能够向载体图像嵌入一段额外信息并且保证图像只有很小的改变。但是,这些改变在对图像质量要求特别高的领域比如军事图像、医学图像、法律取证等方面是无法接受的。Barton[1]首次提出了可逆信息隐藏,可以在提取嵌入的信息后可逆恢复载体图像。
根据信息嵌入的机制,经典的可逆信息隐藏算法可以划分为3 个主要类别:无损压缩[2]、差值扩展[3]和直方图平移[4]。基于无损压缩的可逆信息隐藏算法通过压缩原始图像腾出空间;基于差值扩展的可逆信息隐藏通过扩大相邻像素值的差进行信息嵌入。经过广泛研究后,差值扩展发展出了整型变换[5-7]和预测误差扩展[8-10]。在直方图平移算法中,信息隐藏通过平移直方图的峰值点实现。近年来,伴随着云计算和云存储的飞速发展,发送方(图像拥有者)希望将信息嵌入的操作委托给嵌入方(云服务器)。但是直接向嵌入方发送明文图像存在风险,为了避免信息泄漏,有人提出了密文域的可逆信息隐藏算法。在这种机制中,发送方先用加密密钥对图像进行加密,再发送给嵌入方;嵌入方通过嵌入密钥将额外信息嵌入到加密图像中;接收方提取额外信息并解密恢复原始图像。
Zhang[11]首次提出了密文域的可逆信息隐藏算法。在该算法中,首先发送方加密图像;然后嵌入方通过翻转密文块的3 个LSB(最低有效位)进行信息嵌入;最后接收方解密图像并提取嵌入的信息。算法整体嵌入容量较小,并且存在一定的信息提取和图像恢复错误率。针对Zhang 所提出的算法缺陷,Hong等[12]提出的改进算法充分利用像素间的相关性,利用Side-match 技术计算图像块的平滑度并按顺序进行信息提取和图像恢复,提高了信息提取和图像恢复的正确率。Zhang[13]提出了一种信息提取和图像恢复操作可以分离的密文域可逆信息隐藏算法,通过压缩图像部分信息以腾出空间。Liu等[14]提出了一种基于冗余转换的密文域可逆信息隐藏算法,将冗余空间从原始图像传输到加密图像。文献[15]在文献[14]的基础上,提升了嵌入率和安全性。文献[16]基于傅里叶变换和Gyrator 变换对图像进行加密,获得了较好的解密图像质量和系统安全性。文献[17]采用块置乱和流密码加密技术对图像进行加密,并通过分析MSB(最高有效位)的分布对其进行自适应压缩嵌入信息。文献[18]用一种特殊的加密方式加密图像,并根据阈值将加密后的图像块分为平滑区和复杂区,通过替换平滑区部分像素的最高有效位进行信息嵌入,并利用LDPC 矩阵压缩的方式对剩余像素的最低有效位再次进行信息嵌入。文献[19]将可逆信息隐藏算法与不可逆信息隐藏算法相结合,在失真较小的情况下实现隐藏更多的秘密信息。但是,这些算法并没有考虑医学图像的特点。
DICOM(digital imaging and communications in medical)是医学数字成像和通信标准[20],为数字医学影像在电脑和网络上的传输、存储提供了规范。随着云计算、计算机网络和远程医疗的飞速发展,医学图像的安全性越来越受到重视。为了保护医学图像的隐私安全,本文提出了一种适用于医学DICOM 图像的密文域可逆信息隐藏算法,考虑医学DICOM 图像更大像素深度和像素分布连续的特点,以期在保证图像格式以及安全性的同时,提升算法的嵌入率。
密文域医学图像可逆信息隐藏算法包含发送方、嵌入方以及接收方3 个部分。首先,发送方采用一种特殊设计的块加密算法,能够在保留部分图像相关性的同时获得较好的安全性;然后,嵌入方采用多高位比特压缩和块编码技术向加密图像进行信息嵌入;最后,接收方可以通过拥有的密钥种类对图像进行信息提取、图像解密和图像恢复3 种操作。算法流程如图1 所示。
图1 算法流程图Fig.1 Flowchart of proposed scheme
发送方首先将图像划分为若干个不重叠的块,为每个块生成标记信息;然后根据加密密钥对图像进行加密。用对每个块的部分位平面进行异或加密;用对块进行置乱;用对像素进行置乱,得到最终的加密图像。图像加密过程如图2 所示。
图2 图像加密流程图Fig.2 Flowchart of image encryption
定义大小为M×N且像素深度为16 的原始DICOM 图像为I。将像素值分为12 个区间T1,T2,···,T12(除了4 个MSB 的其他位平面),统计各个区间的像素数并找到最多的4 个区间Ta,Tb,Tc,Td。将处于4 个区间以外的其他区间合并到这4 个区间中,合并方法如图3 所示。其中:Ta表示像素值占据了1 个LSB;Tb表示像素值占据了4 个LSB;Tc表示像素值占据了8 个LSB;Td表示像素值占据了12 个LSB。
图3 区间合并示例Fig.3 Example of intervals merging
根据哈夫曼编码思想,分别用0,10,110,111 标记属于这4 个区间的像素。将图像分为若干个大小为S×S的不重叠块,然后统计块内所有像素表示的标记,记录其中最大的标记,并用该标记替换块中第一个像素的MSB。根据加密密钥Ke(1),对每个块的像素中除了标记信息以外的所有比特进行异或,定义bi,j为位置(i,j)的像素,bi,j,1,bi,j,2,…,bi,j,u表示像素bi,j中的16 个比特。
式中:ri,j,u为由加密密钥生成的伪随机比特流;ki,j为bi,j中标记长度。
嵌入方收到加密图像后,首先识别标记,并将标记的长度定义为,然后将图像分割为若干个大小为S×S的不重叠块,根据发送方额外发送的信息解析块中第一个像素的标记,计算出像素中加密数据的长度。每个块中可以嵌入的比特数为S2×(16-嵌入方可以通过嵌入密钥将额外信息进行加密,并将加密后的额外信息嵌入腾出的空间中,得到嵌入信息后的加密图像。
此外,为了提高嵌入率,嵌入方还可以对加密图像进行块编码,并利用嵌入密钥向腾出的空间嵌入信息。定义Bu,v为坐标(u,v)的图像块。对于每个块,找到其中加密数据值最大的像素Pm,并用其减去块内剩余像素的加密数据值,获得差值d1,d2,···,dn,其中n=S2-1。按下列方式对块进行重新编码:用b2表示最大的加密数据值,b2的长度l2是该块中所有标记可表示的最大长度;用b3表示最大像素的索引,b3的长度是l3;用b5表示差值的长度,b5的长度为l5;l5的长度用b4表示,b4的长度是l4。
式中,λ表示阈值。
如果Pm≤ λ,则不需要b4,且b5的长度为3,否则需要一个长度为3的l4记录b5的长度。使用表示差值,最后计算b2,b3,b4,b5,长度的和。如果该和大于原加密数据长度的和lm,表示该块无法进行信息嵌入,则b1的值为0,否则值为1。被b1替换的LSB 与额外信息一起嵌入压缩后腾出的空间内。用于嵌入额外信息的bs的长度ls可以用式(5)计算。
图4 给出了块编码的示例,在该示例中,区间Ta=[2,5],Tb=[1,1],Tc=[11,12],Td=[6,10],并且标记分别为0,10,110,111。S=2,因此每个块由4 个像素组成。第一行表示已加密的4 个像素,其中灰色表示加密后的像素值,蓝色表示标记,白色表示已经嵌入的额外信息。第二行表示加密数据、差值、最大像素值,第三行表示重编码后的像素。
图4 块编码示例Fig.4 Example of block encoding
该示例中,块中第一个加密像素的标记为10,根据发送方额外发送的信息可以得知,10 标记位表示加密像素数据占有6 个比特,因此可以获取加密像素数据的位平面是1 至6 位。找出该块中4 个加密像素数据的最大值,并对其他3 个加密像素数据作差,经过计算后得到l1=1,l2=6,l3=2,l4=0,l5=3,=3,lm=24,ls=lm-(l1+l2+l3+l4+l5+=3,即可以嵌入3 个比特,b1=1。用重编码后的块替换原始块,每个块中可以嵌入的比特数为ls。嵌入方可以通过嵌入密钥将额外信息进行加密,并将加密后的额外信息嵌入腾出的空间中,得到嵌入信息后的加密图像
读取加密像素数据,根据b1的值判断块内是否被二次嵌入额外信息,如果b1的值为1,则块内存在额外信息。根据上文的块编码方式,解析块并获取额外信息bs;最后接收方通过嵌入密钥生成的伪随机比特流对其进行异或解密,即可提取嵌入的信息。
实验所用硬件系统为4.2 GHz Intel i7 处理器、16.00 GB 内存、Windows 10 操作系统的台式电脑,算法软件应用Matlab R2018b。实验针对一个DICOM 图像库进行,图5 为其中的4 张CT 图像。以下从各个方面对实验结果进行分析。
图6 给出了图5(a)的原始图像以及3 次加密后的图像,根据图7 的直方图分析可以看出,无法从直方图分布中获取明文图像的信息。
图5 DICOM 图像库中的4 张CT 图像Fig.5 Four CT images in DICOM image library
图6 原始CT 图像与经过异或、块置乱和像素置乱加密后的图像Fig.6 Original CT image and images encrypted by bit xor,block scrambling and pixel scrambling
由图7 可以看出,原始CT 图像中,像素主要分布于0 附近,而加密后的密文图像直方图分布均匀,保护了明文信息的安全,从视觉和像素分布上都不能得到原图像的信息。
图7 原始CT 图像和最终加密图像的直方图Fig.7 Histograms of original CT image and encrypted image
图8 给出了图5(a)的水平相关性以及3 次加密后的水平相关性。从图8 可以看出,原始图像具有很强的水平相关性,加密后图像虽然仍有一定的水平相关性,但是相较原始图像,降低了很多。表1 中给出了图5 中4 张CT 图像加密前后图像的一维熵,原始图像和加密图像的像素深度都是16,从表中可以看出,原始图像的熵值较低,经过加密后图像的熵值接近16,证明了算法是安全的。
图8 原始CT 图像和最终加密图像的水平相关性Fig.8 Horizontal correlation of original CT image and encrypted image
表1 加密前后图像的一维熵Tab.1 Order-1 entropies before and after encryption for images
一维熵的计算公式为
嵌入率(BPP)表示平均每个像素可以嵌入比特数量,其值越大表示可以嵌入的数据越多。峰值信噪比(PSNR)表示解密图像的质量,其值越高表示与原始图像的差异越小。表2 和表3 分别表示了本算法对图5 中4 张CT 图像进行实验得到的嵌入率和峰值信噪比。其中:嵌入率τ1表示通过压缩高位MSB 得到的结果,嵌入率τ2表示通过块编码得到的结果。
从表2 可以看出,本算法能够获取良好的嵌入率,特别是压缩多高位比特时获得的嵌入率τ1接近8.5 bpp(bit per pixel),而块编码获得的嵌入率受到块边长S的影响,S过小或过大时都会降低嵌入率。因为块边长过小时,用于压缩的比特数目较少导致辅助信息所占比例增加,所以会降低嵌入率;块边长S过大时,块内像素的差异会变大,计算得到的差也会变大,同样导致辅助信息所占比例增加,降低嵌入率。
表2 不同块边长下的嵌入率Tab.2 Embedding rates with different block sizes
从表3 可以看出,本算法能够获得良好的解密图像质量,此外,如果未采用块编码方式进行二次信息嵌入,解密图像将与原始图像完全相同。
表3 不同块边长下的峰值信噪比Tab.3 PSNR with different block sizes
提出了一种基于多高位比特压缩和块编码的密文域医学图像可逆信息隐藏算法。通过一种独特设计的加密算法,每个图像块中的相关性得到了部分保留。嵌入方可以通过压缩高位比特对加密图像进行信息嵌入。此外,为了进一步提高嵌入率,嵌入方还可以通过块编码的方式对加密图像进行二次嵌入。接收方可以根据自己拥有的密钥种类进行信息提取、图像解密或图像恢复。实验结果表明,该算法获得了良好的嵌入率以及较好的安全性。