欧博,姜溪源,熊剑琴
(湖南大学信息科学与工程学院,湖南长沙 410082)
可逆数据隐藏(reversible data hiding,RDH)是一种特殊的信息隐藏技术[1-2],在完成信息嵌入后不仅能精确地提取秘密信息,还能无损恢复原始图像.这种可逆性在医学、军事、法律取证等应用领域中尤为重要.因为在这些应用中,即便是图像细节信息也具备相当分量的价值,难以承受因不可逆修改造成的损失,如医学图像像素的任何微小变化都可能导致诊断结果出错,造成严重的医疗事故.因此,图像内容的无失真恢复是必须得到保障的.
目前,大多数RDH 算法以追求低失真、高容量为目标,主要应用于明文图像,部分应用于加密图像[3-6].RDH 算法主要通过峰值信噪比(peak-signalto-noise-ratio,PSNR)来评价信息嵌入后的图像质量.然而,现有针对医学图像的RDH 方法大多以实现高容量和追求高PSNR 值为目标[7-10],很少考虑到医学图像的特点.事实上,大多数医学图像都包含大片背景区域,一味追求较高的PSNR值并不一定意味着图像质量良好.例如,对比度较低的图像嵌入数据后,视觉质量仍然较低.在这种情况下,图像的视觉质量是可以通过对比度增强操作来改善的,以扩大动态范围或突出图像细节.Wu 等[11]首先提出了基于对比度增强的可逆数据隐藏算法,在嵌入信息的同时增强图像的对比度.这项工作影响了许多研究人员在这一领域进行实验,并提出了几种方法[12-20]来同时保持视觉质量和扩大嵌入容量.尽管现有方法能够改进医学图像嵌入后的对比度效果,但背景像素往往会多次作为嵌入点嵌入信息,从而导致较大程度的视觉失真.为了减少嵌入失真并且正确诊断感兴趣区域,需要在可逆嵌入的同时,增强医学图像感兴趣区域的对比度[21-27].
基于上述原因,本文提出了一种基于医学图像对比度增强的可逆数据隐藏算法.该方法首先采用超像素分割算法,从医学图像中分离出感兴趣区域和背景.然后将图像进行分块,并计算每个块感兴趣区域的直方图,优先选择对比度低(直方图分布不均匀)的块进行直方图均衡化处理.此外,嵌入过程不再通过多次嵌入来逐次优化,而是以分布均衡化这一目标函数为指导,一次选择直方图的多个嵌入点同时修改完成全部的容量嵌入,在提升对比度增强效果的同时,降低算法复杂度.实验结果表明,在数据嵌入的过程中,该方法可以有效增强感兴趣区域的对比度,提高图像的视觉效果.此外,对比度增强后的医学图像可以准确地恢复原始图像.
当前,用于对比度增强的RDH 算法大多采用直方图移动(histogram shifting,HS)[28]方案来实现可逆嵌入,在每一次嵌入过程中,算法会选择图像直方图中频率最高的像素值进行扩展以进行部分数据隐藏,然后重复此过程完成剩余容量的嵌入.在单次嵌入中,最高频率的像素值经由可逆扩展变成了两个数量相近的像素值,呈现出分布均衡化的特点.多次嵌入后,这种分布均衡化逐步扩大,最终实现了对比度增强的效果.
本文所提算法是针对医学图像的RDH 算法,主要包括数据隐藏和数据提取两个部分,其中数据隐藏过程流程图如图1所示.
图1 数据隐藏过程流程图Fig.1 The flowchart of the data hiding process
在大多数医学图像中,感兴趣区域是包含重要信息的中心区域,这部分区域有助于医生对病情的准确诊断,然而背景区域只包含单色信息,在诊断中是无用的.通常,医学图像中感兴趣区域和背景区域可以根据其灰度强度进行区分,如应用阈值法就能将感兴趣区域和背景区域分离.本文利用SLIC[29]超像素分割算法对医学图像进行分割,将图像分割成大小大致相同的不规则超像素块,并通过不断逼近使若干个超像素块近似模拟感兴趣区域的轮廓,以此来分离感兴趣区域和背景区域,以消除信息嵌入背景所造成的视觉失真.
由于增强后的图像需要用同样的方法分割才可以恢复原始图像,而经过数据嵌入后原始图像会发生变化,不能保证对增强图像进行同样的分割.因此,为了方便恢复原始图像,本文使用双层嵌入方式,分别进行超像素分割和嵌入信息.如图2 所示,将载体图像的所有像素划分为“×”和“·”两个集合.在第一层,利用“·”集的像素预测“×”集,第二层以同样的方式预测.其中,当前像素值ui,j通过四个相邻像 素(vi,j-1,vi+1,j,vi,j+1,vi-1,j)预测,预测值通 过式(1)计算:
图2 菱形预测模式Fig.2 Rhombus prediction pattern
以第一层嵌入为例,分为两层后,第二层采用SLIC 分割,如图3 所示,灰色表示原始像素,白色表示预测像素.由于第一层和第二层像素一一对应,如和ui,j对应,根据第二层的分割结果确定第一层.属于感兴趣区域的像素,然后对第一层感兴趣区域内的原始像素进行嵌入.重复类似步骤,对已嵌入信息的第一层来完成分割,从而确定第二层的分割结果,然后对第二层完成嵌入.提取数据时操作次序则相反,即先处理第二层的数据提取,待第二层原始像素恢复后再处理第一层.这样,就可以在嵌入端和接收端进行同样的分割,确定修改像素的位置,以此恢复两层像素.
图3 两层嵌入方案,以第一层嵌入为例Fig.3 Twice-layered embedding scheme,taking the first layer as an example
通过超像素分割识别出感兴趣区域后,将载体图像等分成n×n个块,假设图像的大小为N×N,每个块的大小为(N/n) ×(N/n),并计算每个块感兴趣区域的直方图,选出直方图分布不均匀的块,确定其峰值和嵌入区域,并嵌入信息.
背景分割和图像分块后,计算每个块感兴趣区域的直方图,选取灰度分布不均匀的直方图进行处理.若直方图中20%的灰度级中像素数目超过80%,如8 位图像灰度级为0~255,在[0,255]的20%范围内的像素数目占比超过整个直方图像素数目的80%,即直方图分布不均匀,就认为它是“非正常”的.这里,非正常的直方图包括偏暗、偏亮、过于集中三种情况.其中,亮度BR定义为像素Pi的平均值,计算方式如下:
式中:I表示图像的像素数目.当BR <50 时,即像素集中在直方图左侧,就为偏暗;当BR >200 时,即像素集中在右侧,就为偏亮;否则,直方图中超过80%的像素分布在[50,200]内且灰度级范围为50 时,就为过于集中.直方图分布情况如图4 所示,图4(a)为正常,图4(b)为偏暗,图4(c)为偏亮,图4(d)为过于集中.
图4 直方图分布情况Fig.4 Histogram distribution
通过式(3)计算每个块的对比度C,优先选择对比度低的块嵌入信息.
式中:δ(i,j)=|i-j|,即相邻像素间的灰度差;Pδ(i,j)为相邻像素间的灰度差为δ的像素分布概率.
嵌入数据时,不再使用多次嵌入,而是选定区域一次完成,将数据依次嵌入每个选定的直方图.首先对选定的直方图找到它的峰值点S(像素个数最多的灰度值),确定直方图修改的区域.通过将区域外侧的像素值向外移动,选定区域中的每个像素值扩展成两个相邻并且数量相近的像素值,峰值S被分割成S和S+1(或S-1).对于偏暗的直方图,嵌入区域设置为[S,S+B],区域内的像素值向右移动展开;对于偏亮的直方图,嵌入区域设置为[S-A,S],区域内的像素值向左移动展开;对于过于集中的直方图,嵌入区域设置为[S-A,S+B],[S-A,S-1]的像素值向左移动展开,同时[S,S+B]的像素值向右移动展开.其中,A和B代表嵌入区域的上下限,为满足嵌入容量和防止像素值溢出,本文设定A∈(0,64),B∈(0,64).三种情况的数据嵌入机制如图5 所示,其中每个图中上面的直方图对应的是移动前的直方图,下面的直方图对应的是移动后的直方图,灰色标记的像素柱用于数据隐藏,斜线标记的像素柱表示直方图移动,白色标记的像素柱表示未修改.
图5 三种情况的数据嵌入机制Fig.5 The proposed three data embedding manners
对于图5 所示的三种情况,对应的数据嵌入公式如下:
1)当像素块对比度偏暗时,即直方图的均值接近0,则按照如下公式修改像素p为p′,
2)当像素块对比度偏亮时,即直方图的均值接近255,则按照如下公式修改像素,
3)当像素分布过于集中时,即直方图分布在中间区域且灰度级范围较小时,修改方式变为
式中:p为原始像素值,p′为增强图像的像素值,m∈(0,1)为嵌入的二进制消息,S为直方图峰值点,A、B为嵌入区域的上下限.
对于辅助信息,我们分别使用6 位来记录A和B的值,4 位记录像素块分块参数n,2 位记录直方图分布情况d:‘0’表示正常,‘1’表示偏暗,‘2’表示偏亮,‘3’表示过于集中.为了方便地提取数据和恢复载体图像,将每个子直方图的峰值S、直方图分布情况d嵌入下个子直方图中.将最后一个直方图的S值、d值,以及A和B的值,n的值替换最后一行26 个像素的最低有效位(least significant bit,LSB),最后一行的26个像素的LSB被嵌入最后一个块中.
首先,从最后一行的26 个像素的LSB 中获取A和B的值、n值以及最后一个块的S值和直方图分布情况d,根据n将图像分块,然后根据每个块直方图分布情况和峰值S,通过以下公式提取嵌入信息和恢复原始图像.
1)当d=1 即偏暗时,信息提取和图像恢复公式如下,其中b∈{0,1,…,B}.
2)当d=2 即偏亮时,信息提取和图像恢复公式如下,其中a∈{0,1,…,A}.
3)当d=3 即过于集中时,信息提取和图像恢复采用式(11)、式(12)来实现.
其中,m′是提取的二进制消息,「表示向上取整,」表示向下取整.
本文从NBIA[30]网站上随机选取了三幅大小为512×512 像素的CT 图像进行实验,三张医学图像如图6所示.对于医学图像,本文采用SLIC 超像素分割的唯一参数是超像素个数K,实验中设置K为80.在选择超像素块时,将每个块中的前景像素数占该块中总像素数的百分比设为T,我们选择百分比大于T的超像素块来作为感兴趣区域,根据不同的图像取不同的T值,这样可以排除背景区域.另外,将图像分为2×2块和4×4块分别进行实验,为了说明本文所提方法的特点,我们与ACERDH[16]、RDHMBP[17]和文献[21]的方法进行对比.ACERDH 算法是一种自动对比度增强方法,RDHMBP 算法是一种增强原始图像对比度和保持图像亮度的方法,文献[21]是针对医学图像的RDH 方法.使用四种算法处理后的标记图像如图7 所示,可以看出,使用ACERDH 算法和RDHMBP 算法得到的医学图像的背景发生了很大变化,这是因为没有分离背景,数据嵌入其中导致视觉失真,文献[21]中的预处理过程也会导致视觉失真,而使用本文的方法没有出现这种情况.
图6 原始图像Fig.6 Original images
图7 使用不同算法的标记图像Fig.7 Marked images using different algorithms
本文的算法复杂度为O(n2).在相同嵌入率下,我们使用PSNR,结构相似性(structural similarity,SSIM),相对对比度误差(relative contrast error,RCE),算法运行时间作为评价指标对四种算法进行了评价,如表1 所示.其中,RCE 是用来评估对比度效果的指标,计算方式如下,大于0.5 表示图像对比度增强.
表1 本文算法和ACERDH[16]、RDHMBP[17]、文献[21]算法的实验结果比较Tab.1 The experimental results of the proposed algorithm compared with ACERDH[16],RDHMBP[17]and literature[21]
其中Stde和Stdo分别表示原始图像和增强后图像的标准差,对于8位灰度图像R=256.
从表中可以看出,该算法得到的PSNR与对比算法大体相当,但是对于三幅图像,该算法都给出了稳定的SSIM 值.这表明与ACERDH、RDHMBP 算法相比,使用本文算法的原图像结构得到了更好的保持.另外,对于图6(a)、图6(b),使用ACERDH 算法的RCE 值低于0.5,对比度没有增强,而对于图6(c),RCE 值远高于0.5,表示过度增强.对于图6(a)、图6(c),使用RDHMBP 算法RCE 值略高于0.5,表示对比度增强效果不明显.使用文献[21]算法的SSIM 与本算法相当,但是RCE 值低于本算法,且运行时间较长.与其他三种方法相比,本文算法生成的标记图像获得了较好的RCE值.
本文使用的直方图分布不均匀的判断标准是直方图中20%的灰度级中像素数目超过80%,为了证明不同标准对本文算法的影响,我们比较了直方图中25%的灰度级中像素数目超过75%和15%的灰度级中像素数目超过85%的情况,如表2 所示.可以看出,对于图6(a),本文设置的这一标准的评价结果都是适中的,对于图6(b),几种情况下的评价结果相差不大.
表2 分布不均匀的不同标准对本文算法的影响Tab.2 The influence of different standards with uneven distribution on the proposed method
此外,我们在图6(b)中分别嵌入10 000 bit,50 000 bit,130 000 bit,如图8 所示,白色表示嵌入区域,可见嵌入区域从中间开始逐渐扩大,不断逼近感兴趣区域,说明本文是优先选择对比度低的块嵌入的.
图8 分别嵌入不同bit时的嵌入区域Fig.8 The embedded regions of different bits respectively embedded
接着测试了图6(a)和图6(b)取不同A、B值对数据嵌入率、PSNR、SSIM 以及RCE 值的影响,如图9所示.从图9(a)~图9(c)中看出,对于图6(a),与分割成4×4块相比,分割成2×2块时嵌入率较高,PSNR和SSIM 值较低.对于图6(b),两种情况下这三个指标相差不大.从图9(d)中看出,RCE 随着A、B值的增大而增大,但是并不十分稳定,在A、B值较大时,RCE值出现下降趋势,所以A、B值不宜超过30.
图9 A、B取不同值时对嵌入率、PSNR、SSIM以及RCE值的影响Fig.9 Influence of different values of A and B on embedding rate,PSNR,SSIM and RCE
将本方法进一步与用于医学图像的RHCRDH[25]和RDHACEM[27]方法相比,RHCRDH[25]是基于感兴趣区域的高容量可逆数据隐藏方法,RDHACEM[27]是基于自动对比度增强的可逆数据隐藏算法,这两种方法都对医学图像进行了背景分割并通过直方图拉伸实现对比度增强.对图10 的两幅医学图像进行数据嵌入,三种方法的实验结果如表3所示,嵌入率为0.1 bpp 时,本文算法可以获得更高的PSNR 和SSIM.对于图10(a),RCE值高于RHCRDH,但低于RDHACEM,对于图10(b),RCE 值随着嵌入率的增大而增大,而其余两种算法RCE 值却下降.此外,对于这两幅图像,本文算法不能达到1bpp 的嵌入率,这是因为本文只对选定区域嵌入一次,嵌入率较低,而对比算法还对背景区域进行了数据嵌入.
表3 本文算法和RHCRDH[25]、RDHACEM[27]算法的实验结果比较Tab.3 The experimental results of the proposed algorithm compared with RHCRDH[25]and RDHACEM[27]
图10 测试医学图像Fig.10 Test medical images
本文提出了一种基于医学图像对比度增强的可逆信息隐藏算法.该算法根据医学图像的特点,首先使用SLIC 超像素分离前景和背景以确定感兴趣区域,然后将嵌入区域分块,根据直方图分布逐块修改,并优先选择对比度低的块进行数据嵌入.另外,嵌入数据时,对于选定的直方图,不再通过多次嵌入来逐次优化,而是以直方图均衡化为目标一次选择直方图的多个嵌入点同时修改.实验结果表明,与现有对比度增强的RDH 算法相比,该算法获得了更高的SSIM 和RCE 值,能有效增强医学图像的对比度,同时保持了原始图像的相似性和亮度,具有更好的视觉质量和更低的失真.