信息隐藏是将受保护的信息嵌入到载体中,可逆信息隐藏技术是其中一个重要的分支,不仅能完整提取嵌入信息,同时可无损恢复载体。近年来随着医疗数字化进程的推进,海量的医学图像在网络上传播,传输过程中任何的误差都有可能导致误诊,而且如果在医学图像中嵌入了病人的诊断信息,则需要很高的嵌入量。普通的嵌入算法在嵌入大量信息的同时,会不可避免地使解密后的图像出现一定程度的失真。因此,对于具有高嵌入量和高精度要求的医学图像,需采用可逆信息隐藏算法,保证原图像和解密后图像的一致性。
目前的可逆信息隐藏方法主要有3类:无损压缩[1-4]、图像直方图平移[5-7]和差值扩展[8-11]。基于无压缩的可逆算法实现简单,但在嵌入容量上不具有优势而且容易带来图像失真;基于直方图的可逆算法虽然保证了图像精度,但嵌入量仍达不到令人满意的效果。因此研究者开发了利用相邻像素之间的相关性嵌入秘密信息的差值扩展技术[8],在传统的差值扩展技术的基础上,提出了基于预测差值的可逆算法。张丽娜[9]采用平均值预测算法生成预测差值,利用待预测像素点周围的8个像素进行预测,预测准确度有所提高,但嵌入量减小;Hong等[10]采用中值边缘预测(median edge detection prediction,MPE)算法生成预测差值,再根据预测差值的分类对像素点进行平移或保持不变,虽然提高了嵌入量,但未对像素值为0和255的像素点进行操作,仍不能满足医学图像高嵌入量的要求。
本文基于文献[10]中的MPE算法,结合医学图像的特点,提出一种基于预测差值的医学图像可逆信息隐藏算法。在MPE算法的基础上,充分利用图像中所有像素点进行信息嵌入,并且采用预嵌入方式来防止像素点溢出。本文算法可在满足图像精度的同时获得高嵌入量,达到医学图像对隐藏算法的要求。
1 基于预测差值的可逆信息隐藏 1.1 MED算法MED算法采用光栅扫描顺序并应用边缘相邻像素点来生成预测差值。
$ \mathit{\boldsymbol{P'}}\left( {i,j} \right) = \left\{ \begin{array}{l} \min \left( {a,b} \right),\;\;\;\;c \ge \max \left( {a,b} \right)\\ \max \left( {a,b} \right),\;\;\;\;c \le \min \left( {a,b} \right)\\ a + b - c,\;\;\;\;\;\;\;{\rm{otherwise}} \end{array} \right. $ | (1) |
$ \mathit{\boldsymbol{e}}\left( {i,j} \right) = \mathit{\boldsymbol{P}}\left( {i,j} \right) - \mathit{\boldsymbol{P'}}\left( {i,j} \right) $ | (2) |
式中,P′(i, j)为预测像素, P(i, j)为待预测像素点,a、b、c分别为P(i, j-1)、P(i-1, j)、P(i-1, j-1)处的像素值,e(i, j)为预测差值。
基于预测差值的可逆信息隐藏是将信息隐藏在e(i, j)为0和1的像素点上[11]。具体的嵌入过程如式(3)、(4)所示
$ \mathit{\boldsymbol{e''}}\left( {i,j} \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} \mathit{\boldsymbol{e}}\left( {i,j} \right) + 1,\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) - 1,\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) + m,\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) - m, \end{array}&\begin{array}{l} \mathit{\boldsymbol{e}}\left( {i,j} \right) \ge 1\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) < - 1\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = 0\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = - 1 \end{array} \end{array}} \right. $ | (3) |
$ \mathit{\boldsymbol{P''}}\left( {i,j} \right) = \mathit{\boldsymbol{P'}}\left( {i,j} \right) + \mathit{\boldsymbol{e''}}\left( {i,j} \right) $ | (4) |
式中, e″(i, j)为预测值,P″(i, j)为载密像素点。
在信息提取与图像还原时仍需计算e(i, j),具体的信息提取过程如式(5)、(6)所示
$ m = \left\{ \begin{array}{l} 0,\;\;\;\;\;\mathit{\boldsymbol{e}}\left( {i,j} \right) = 0\\ 0,\;\;\;\;\;\mathit{\boldsymbol{e}}\left( {i,j} \right) = - 1\\ 1,\;\;\;\;\;\;\mathit{\boldsymbol{e}}\left( {i,j} \right) = 1\\ 1,\;\;\;\;\;\;\mathit{\boldsymbol{e}}\left( {i,j} \right) = - 2 \end{array} \right. $ | (5) |
$ \mathit{\boldsymbol{P}}\left( {i,j} \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} \mathit{\boldsymbol{P''}}\left( {i,j} \right) - 1,\\ \mathit{\boldsymbol{P''}}\left( {i,j} \right) - 1,\\ \mathit{\boldsymbol{P''}}\left( {i,j} \right),\\ \mathit{\boldsymbol{P''}}\left( {i,j} \right),\\ \mathit{\boldsymbol{P''}}\left( {i,j} \right) + 1,\\ \mathit{\boldsymbol{P''}}\left( {i,j} \right) + 1, \end{array}&\begin{array}{l} \mathit{\boldsymbol{e}}\left( {i,j} \right) \ge 2\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = 1\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = 0\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = - 1\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) = - 2\\ \mathit{\boldsymbol{e}}\left( {i,j} \right) < - 2 \end{array} \end{array}} \right. $ | (6) |
式中,m表示嵌入到载体图像中的1 bit秘密信息。
1.2 改进算法 1.2.1 总体流程本文提出的改进算法在MPE算法的基础上充分利用像素值为0或255的像素点进行信息嵌入。首先对图像进行信息预嵌入,记录嵌入信息或平移操作后可能溢出的像素点,再将这些像素点坐标记录在矩阵X中。嵌入信息时,如像素点坐标不在X中,则正常嵌入,否则跳过。接收方提取信息时,如像素点坐标不在X中,则提取秘密信息并恢复图像,否则跳过。
1.2.2 信息嵌入假设原始医学图像P是大小为M×N的灰度图像,具体的信息嵌入算法如下:
输入:灰度图像P、矩阵X(初始值为0)及待嵌入秘密信息m;
1) 初始化P″,因为图像的第1行和第1列的像素值预测结果不准确,用图像P的第一行和第一列替换P″中相应位置的像素;
2) 当2≤i≤M且2≤j≤N时,使用光栅扫描顺序扫描图像像素,根据公式(1)、(2)计算除第一行和第一列之外所有像素点的P(i, j)和e(i, j);
3) 当2≤i≤M且2≤j≤N时,如果X(i, j)=0,根据公式(2)计算P″(i, j),并对P(i, j)处的像素点嵌入1 bit秘密信息或作平移操作;
4) 当2≤i≤M且2≤j≤N时,根据公式(5)、(6)提取秘密信息,记提取的秘密信息为m2、恢复后的载密图像为P2;
5) 如m2=m且P2=P,则令i=M+1,j=N+1,嵌入算法结束;
6) 如m2≠m且P2≠P,转至步骤7);
7) 当2≤i≤M且2≤j≤N时,检查P(i, j)=0且P″(i, j)=255或P(i, j)=255且P″(i, j)=0的像素点,如果发生像素值溢出,则将对应位置的X值变为1,转至步骤3);
输出:载密图像P″。
图 1展示了信息嵌入过程中像素值的变化过程,图中下划线为每次嵌入信息的位置。嵌入2 bit信息(1, 1)时,图(b)、(c)、(d)分别为第一、二、三次预嵌入信息后P″和X的变化情况。第一、二次预嵌入时,由于嵌入信息处有像素值溢出,信息嵌入失败;第三次预嵌入时,无像素值溢出,信息嵌入成功。剩余像素值根据嵌入算法进行变化,最后生成的载密图像如图 1(e)中所示。
假设载密医学图像P″是大小为M×N的灰度图像,具体的信息提取算法如下:
输入:灰度图像P″和矩阵X;
1) 初始化P,使用P″中的像素值替换P的数据;
2) 当2≤i≤M,2≤j≤N时,使用光栅扫描顺序扫描图像像素,检查X(i, j)是否为1,如果是则转至步骤3),否则转至步骤4);
3) P(i, j)中的像素值不作更改,只更新i、j的值,作加1操作;
4) 根据公式(1)、(2)计算e(i, j),根据公式(5)、(6)提取1 bit秘密信息,并恢复P(i, j)处的像素值;
5) 如果信息提取完毕,更新i=M+1、j=N+1,如果信息未完全提取,更新i、j的值,作加1操作,转至步骤2);
输出:秘密信息m, 原始图像P。
图 2展示了信息提取过程中像素值的变化过程,图中加下划线数字为已还原的像素值,图 2(f)中的P为已还原的原始图像的像素矩阵,提取2 bit信息(1, 1)时,图 2(c)、(d)、(e)分别为第一、二、三次提取信息后e和P的变化情况。与图 1原始矩阵对比可知,恢复后的图像与原始图像完全相同。
针对医学图像对图像质量和嵌入量要求高的特点,实验选用嵌入量和不可感知性两个评价标准进行测试,使用的100张医学测试图像来自TCIA数据库,100张非医学图像来自ImageNet数据库,两种图像的分辨率均为512×512。
2.1 嵌入量理想嵌入量(Ce)的定义如公式(7)
$ {C_e} = \sum\limits_0^{m - 1} {\sum\limits_0^{n - 1} {\mathit{\boldsymbol{c}}\left( {i,j} \right)} } $ | (7) |
式中,m和n为分别为图像的长度和宽度,c(i, j)为1时表示第i行第j列处的像素点可以嵌入1 bit信息。
2.2 不可感知性 2.2.1 峰值信噪比(PSNR)峰值信噪比(peak signal noise ratio,PSNR)是反映图像失真或噪声水平的度量指标,其定义如下[12]
$ {E_{{\rm{PSNR}}}} = 10\lg \left( {\frac{{{{\left( {{2^n} - 1} \right)}^2}}}{{{x_{{\rm{MSE}}}}}}} \right) $ | (8) |
式中,xMSE为均方误差。PSNR的值越大,嵌入信息后载密图像相较于原始图像的失真程度越小,当EPSNR≥30 dB时, 人眼无法辨别图像之间的差异。
2.2.2 结构相似性指标(SSIM)结构相似性指标(structural similarity index,SSIM)是衡量两幅图像相似性的标准,给定两张图像x和y,则其结构相似性为[13]
$ {E_{{\rm{SSIM}}\left( {x,y} \right)}} = \frac{{\left( {2{\mu _x}{\mu _y} + {c_1}} \right)\left( {2{\sigma _{xy}} + {c_2}} \right)}}{{\left( {\mu _x^2 + \mu _y^2 + {c_1}} \right)\left( {\sigma _x^2 + \sigma _y^2 + {c_2}} \right)}} $ | (9) |
式中μx、μy分别是x、y的平均值,σx2、σy2分别是x、y的方差,σxy是x、y的协方差,c1=(k1L)2、c2=(k2L)2是用来维持稳定的常数(k1,k2分别取0.01、0.03),L是像素值的动态范围。
3 模拟实验及结果讨论为了验证本文算法的优越性,分别从嵌入量、PSNR和SSIM三个方面与文献[10]中的MPE算法及文献[9]中算法进行了对比实验。
3.1 嵌入量从100张医学图像中随机选取如图 3所示的10张图像(按原顺序编号),以文献[10]中MPE算法的最大嵌入量为标准进行计算。假设测试图像时MPE算法的最大嵌入量为53 008 bit,则随机产生53 008 bit信息,利用本文算法计算嵌入量,并将测试结果与文献[10]中MPE算法的最大嵌入量进行对比,结果如表 1所示。再从100张非医学图像中随机选取10张进行同样的实验,并与文献[10]MPE算法进行比较,结果如表 2所示[14]。
从表 1可以看出,对于医学图像,最好的情况下,本文算法的最高嵌入量比MPE算法高出近92倍,最低嵌入量高出近30%,算法的性能得到了很大提高。从表 2可以看出,本文算法对于普通图像的嵌入量也有不同程度的提高,但受制于待嵌入信息的随机性,实际嵌入量比理想嵌入量低0.06%~4%。
3.2 PSNR在实际嵌入信息的过程中,嵌入量并不是一个定值,会有小幅度的变化,因此以图 3所示图像为样本,在测试最大嵌入量下图像的PSNR值时,选取接近最大嵌入量的整数值进行测试,得到两种方法的测试结果如表 3所示。
由表 3可知,与MPE算法相比,在嵌入最大信息量时,本文算法的PSNR值虽然所有下降,但嵌入量远高于MPE算法,如PSNR值下降7.67 dB时嵌入量高于MPE算法近80倍,而且在接近最大嵌入量时本文算法的PSNR值均高于48 dB。实验结果表明本文算法载密图像质量失真较小,并且在提取信息后可实现无损恢复原始图像。
3.3 SSIM嵌入信息后,载密图像相比原始图像会有一定差异,为防止载密图像在传输过程中被检测到,需保证人眼无法察觉到载密图像的变化。在不同嵌入量下,以图 3(f)为测试样本计算SSIM值,并与MPE及文献[9]进行对比,结果如图 4所示。
由图 4看出,在不同嵌入量下本文算法的SSIM值均高于另外两种算法。嵌入量20 000 bit时本文算法的相似度最高,为99.94%,嵌入量100 000 bit时的最低相似度也达到97.92%。表明本文算法在嵌入信息后,载密图像与原始图像相似度极高,不易被检测到。
4 结束语本文提出的基于预测差值的医学图像可逆信息隐藏算法相比MPE算法有如下改进:①采用预嵌入方式标记溢出像素点,在嵌入秘密信息的过程中排除溢出像素点,保证了载密图像有很高的PSNR值;②因为算法在预测差值为0或-1时嵌入秘密信息,将算法应用于医学图像时可得到很高的嵌入量,应用于普通图像时嵌入量也有所提高;③本算法具有良好的视觉不可见性,可较好地防止秘密信息在传输过程中被检测到。
综上所述,本文提出的算法具有嵌入量大、载密图像质量高等优点,适用于载密医学图像在网络中传输。
[1] |
郑淑丽, 曹敏, 胡东辉, 等. 基于无损压缩的加密图像可逆信息隐藏[J]. 合肥工业大学学报, 2016, 39(1): 50-55. ZHENG S L, CAO M, HU D H, et al. Reversible data hiding in encrypted images based on lossless compression[J]. Journal of Hefei University of Technology, 2016, 39(1): 50-55. (in Chinese) DOI:10.3969/j.issn.1003-5060.2016.01.010 |
[2] |
HOU D, WANG H, ZHANG W, et al. Reversible data hiding in JPEG image based on DCT frequency and block selection[J]. Signal Processing, 2018, 148: 41-47. DOI:10.1016/j.sigpro.2018.02.002 |
[3] |
郑洪英, 任雯, 程惠惠. 基于位平面压缩的密文医学图像可逆信息隐藏算法[J]. 计算机应用, 2016, 36(11): 3088-3092. ZHENG H Y, REN W, CHENG H H. Reversible data hiding in encrypted medical images based on bit plane compression[J]. Journal of Computer Applications, 2016, 36(11): 3088-3092. (in Chinese) DOI:10.11772/j.issn.1001-9081.2016.11.3088 |
[4] |
刘宇, 杨百龙, 赵文强, 等. 基于位平面无损压缩的密文域可逆信息隐藏[J]. 计算机应用研究, 2018, 35(9): 2789-2792. LIU Y, YANG B L, ZHAO W Q, et al. Reversible information hiding of encrypted domain based on bit-plane lossless compression[J]. Application Research of Computers, 2018, 35(9): 2789-2792. (in Chinese) DOI:10.3969/j.issn.1001-3695.2018.09.053 |
[5] |
WANG W Q, YE J Y, WANG T Q, et al. A high capacity reversible data hiding scheme based on right-left shift[J]. Signal Processing, 2018, 150: 102-115. DOI:10.1016/j.sigpro.2018.04.008 |
[6] |
NI Z C, SHI Y Q, ANSARI N, et al. Reversible data hiding[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2006, 16(3): 354-362. DOI:10.1109/TCSVT.2006.869964 |
[7] |
LEE S K, SUH Y H, HO Y S. Reversible image authentication based on watermarking[C]//IEEE International Conference on Multimedia & Expo. Toronto, 2006: 1321-1324. https://www.researchgate.net/publication/221266438_Reversiblee_Image_Authentication_Based_on_Watermarking
|
[8] |
TIAN J. Reversible data embedding using a difference expansion[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2003, 13(8): 890-896. DOI:10.1109/TCSVT.2003.815962 |
[9] |
张丽娜.基于直方图的可逆数字隐藏算法研究[D].兰州: 兰州大学, 2012. ZHANG L N. Reversible data hiding algorithm research based on the histogram[D]. Lanzhou: Lanzhou University, 2012. (in Chinese) http://cdmd.cnki.com.cn/Article/CDMD-10730-1012373964.htm |
[10] |
HONG W, CHEN T S, SHIU C W. Reversible data hiding for high quality images using modification of prediction errors[J]. The Journal of Systems & Software, 2009, 82(11): 1833-1842. |
[11] |
林飞鹏.基于差值自适应的大容量可逆信息隐藏研究[D].大连: 大连理工大学, 2017. LIN F P. High-capacity reversible information hiding based on adaptive difference[D]. Dalian: Dalian University of Technology, 2017. (in Chinese) http://cdmd.cnki.com.cn/Article/CDMD-10141-1017824039.htm |
[12] |
JUNG K H. High-capacity reversible data hiding method using block expansion in digital images[J]. Journal of Real-Time Image Processing, 2018, 14: 159-170. DOI:10.1007/s11554-016-0618-7 |
[13] |
TANG Z J, LU Q F, LAO H, et al. Error-free reversible data hiding with high capacity in encrypted image[J]. Optik, 2018, 157: 750-760. DOI:10.1016/j.ijleo.2017.11.154 |
[14] |
项煜东, 吴桂兴. 一种基于像素预测的图像可逆信息隐藏策略[J]. 计算机科学, 2018, 45(2): 189-196. XIANG Y D, WU G X. Pixel prediction based reversible data hiding scheme for image[J]. Computer Science, 2018, 45(2): 189-196. (in Chinese) |