基于纹理度划分的医学图像可逆信息隐藏方法
2018-10-16肖星星
才 雪,杨 杨,肖星星
(安徽大学 电子信息工程学院,合肥 230039)(*通信作者电子邮箱sky_yang@ahu.edu.cn)
0 引言
近年来,可逆信息隐藏(Reversible Data Hiding, RDH)受到了广泛的关注。可逆信息隐藏是向原载体中(如图像[1-4]、视频[5]、三维模型[6])嵌入秘密信息,得到与原载体质量相同或者高于原载体的载密载体,然后解密方从载密载体中将秘密信息提取出来,并无损地恢复原始载体。简而言之,可逆信息隐藏就是将信息嵌入到载体中,而解密方能够提取出秘密信息并无损恢复原始载体。在军事、医学以及法庭取证等方面,原始载体细微的变化都会造成诊断出错或者诉讼失败,因此,在这些领域,可逆信息隐藏就显得尤为重要。目前大多数的算法均是用来在数字图像中嵌入不可见数据或可见水印。
当原始载体为图像时,信息嵌入率和图像失真率是衡量可逆信息隐藏方法的两个重要标准。然而,高嵌入率和低失真率二者相互矛盾,实现较高嵌入率的同时会引起更大的图像失真,反之亦然。峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)是衡量图像失真的一个常用指标,目前大多数的可逆信息隐藏方法都以追求较高的峰值信噪比为目标。在嵌入过程中,图像会产生失真,因此,尽管通过这些方法能够实现较高的PSNR,但是图像视觉质量并没有提高甚至变差。医学图像是一类比较特殊的图像,其细微的改变都有可能影响到医生的诊断,因此对于这类图像,图像的视觉质量往往比峰值信噪比重要得多。提高医学图像的对比度能使得图像的细节部分得以显现,从而提高诊断的精准性。目前,根据运用的载体类型可分为基于像素直方图以及基于预测误差直方图的具有对比度增强效果的可逆信息隐藏方法。基于像素直方图可实现对比度增强的可逆信息隐藏方法,主要有文献[7-8]等提出的实现对比度增强的可逆信息隐藏方法,由于医学图像的背景中含有大量灰度单一的像素点,而文献[7]的方法是选取像素直方图中像素个数最多的灰度值进行多轮信息嵌入,因此,该方法会首先增强背景像素点的对比度,这对于提高关键信息的细节并没有帮助。基于预测误差直方图的对比度增强的可逆信息隐藏方法包括文献[9]中基于纹理区域对比度增强的可逆信息隐藏方法,其目的在于增强纹理区域的对比度使得图像灰度差异较大的部分更加明显,同时实现可逆的信息隐藏方法;然而该方法并非从灰度上进行操作,因此它的对比度增强效果有限。
对于普通的医学图像来讲,包含关键信息的部分一般图像纹理度较高,另一部分纹理度较低,不包含任何关键信息。为了能够同时实现图像对比度显著增强以及提高信息的嵌入率,本文提出了一种利用图像的纹理度特点将医学图像的像素点分为高纹理度等级像素以及低纹理度等级像素的方法。高纹理度等级的像素点构成了医学图像的关键部分,其中包含大量影响医生诊断的信息;低纹理度等级的像素点构成了医学图像灰度较为单一的部分,不包含图像的关键信息。由于医学图像的高纹理度等级部分包含大量的关键信息,因此为了进一步增强高纹理度等级的对比度并提高嵌入率,本文对高纹理度等级和低纹理度等级采用不同的嵌入方法。首先将图像进行拉伸,然后计算出每个像素点的纹理度并分出纹理度等级,将拉伸后的像素点根据纹理度进行分级处理。为了进一步增强高纹理度等级的对比度,对高纹理度等级采用一种具有类似直方图均衡化效果的方法进行嵌入;而对于低纹理度等级区域,为了提高嵌入率,使用改进后文献[10]的方法进行信息嵌入。为了后续信息提取以及原始图像的恢复,需要保存必要的辅助信息,并将这些辅助信息作为秘密信息的一部分嵌入到图像中。为了不让这些信息影响图像的整体嵌入率,完成高纹理度等级以及低纹理度等级的信息嵌入之后,将图像四周的像素点提取出来,使用多轮直方图平移的方法嵌入辅助信息。
1 基于多纹理度划分的可逆信息隐藏算法
本文提出的基于多纹理度划分的可逆信息隐藏算法包括以下几个部分:直方图拉伸、纹理度等级的划分、高纹理度等级以及低纹理度等级的信息嵌入和辅助信息的嵌入。直方图拉伸的目的是为了有效增强图像对比度;纹理度等级的划分是利用像素点的纹理度将医学图像中包含关键信息的部分和灰度单一的部分区分开;高纹理度等级和低纹理度等级采用不同嵌入方式的目的是为了保证关键部分的图像质量并且提高图像的整体嵌入率;为了防止辅助信息影响整体的嵌入率,本文使用图像最外周的像素嵌入辅助信息。算法框架如图1所示。
1.1 图像对比度增强以及像素分类
为了增强图像的整体对比度,本文首先对图像进行直方图拉伸;其次为了选出构成图像关键部分的像素点,需要计算出像素的纹理度,并将像素按照纹理度进行分级。另外本文是对纹理度相同的像素点进行处理,直到将所有的像素点处理完毕,因此为了减少直方图的个数,需要将纹理度归类为M个等级。
1.1.1 图像对比度增强
目前在能够实现图像对比度增强的可逆信息隐藏方法中,多数方法的对比度增强效果会受到嵌入率的影响,如文献[7]方法,其方法虽然能够实现图像对比度增强,但是由于其对比度增强的程度取决于直方图平移的轮数,而在低嵌入率下,平移的轮数较少,这就导致了此时无法有效实现图像对比度增强。本文为了使图像的对比度不受信息嵌入率限制,首先对图像进行直方图拉伸。下面将详细介绍拉伸过程。
图1 本文算法整体流程
为了增强图像的整体对比度,本文首先对图像进行直方图拉伸处理,拉伸公式如下:
(1)
拉伸恢复公式为:
(2)
其中:ui,j为原始像素值,ui,j′拉伸后的像素值,umax和umin分别为原图像中像素点灰度值的最大值和最小值,Lmax和Lmin分别为拉伸之后的灰度最大值和最小值。比如,原图像灰度值集合为{2,4,6},即umax=6,umin=2,假设拉伸后的最大值和最小值分别为10和0,即Lmax=10,Lmin=0,则进行拉伸运算之后,像素灰度值集合为{0,5,10}。一般来说,Lmax=255,Lmin=0。
1.1.2 纹理度分级
图像的纹理度反映了图像的灰度值的分布:灰度值变化较为剧烈的区域一般纹理度较高,而灰度值变化细腻的区域一般纹理度较低。一个像素点的纹理度可以体现出该像素点与周围像素点的关系:若纹理度较高,则表示该像素值与周围像素值差异较大;否则差别较小。医学图像是一类比较特殊的图像,它包含大量灰度值单一的像素点,并且这些像素点的分布较为集中,一般分布在图像的背景部分。一般来说,医学图像中包含关键信息的部分纹理度较高,另一部分灰度值较为单一,纹理度较低,不包含任何关键信息,因此本文利用像素的纹理度将像素分为高纹理度等级以及低纹理度等级两类。像素纹理度的计算和分级过程如下:
在一幅图像中,一个像素点的纹理度可以通过其周围像素点的灰度值计算出来,一般定义为周边每两个相邻像素点的差的绝对值,如图2所示,Xi,j的纹理度计算公式如下:
VXi,j=|Xi,j-1-Xi+1,j-1|+|Xi+1,j-1-Xi+2,j-1|+
|Xi+1,j-Xi+2,j|+|Xi,j+1-Xi+1,j+1|+
|Xi+1,j+1-Xi+2,j+1|+|Xi-1,j+2-Xi,j+2|+
|Xi,j+2-Xi+1,j+2|+|Xi+1,j+2-Xi+2,j+2|
(3)
hXi,j=|Xi,j+1-Xi,j+2|+|Xi+1,j-1-Xi+1,j|+
|Xi+1,j-Xi+1,j+1|+|Xi+1,j+1-Xi+1,j+2|+
|Xi+2,j-1-Xi+2,j|+|Xi+2,j-Xi+2,j+1|+
|Xi+2,j+1-Xi+2,j+2|
(4)
nXi,j=VXi,j+hXi,j
(5)
其中:VXi,j代表在Xi,j周围12个像素点中两两垂直相邻的像素点的绝对差值;hXi,j代表在Xi,j周围10个像素点中两两水平相邻的像素点的绝对差值;nXi,j为VXi,j与hXi的和,即Xi,j纹理度,也即Xi,j周围12个像素点中两两垂直以及两两水平的相邻的像素点的绝对差值。
图2 计算Xi,j纹理度的示意图
每一个纹理度的像素点对应生成一个集合h(n),如式(6):
h(n)=#{1≤k≤N:n=nk}
(6)
其中:#代表像素点的集合;N为图像像素点的总个数;nk为像素点的纹理度;h(n)代表纹理度为n的像素点的集合。
在嵌入时,本文计算出每一个集合的灰度直方图进行处理,为了减少后续直方图的个数、减少纹理度的等级数,方便后续根据纹理度对像素进行处理,对像素纹理度进行分级处理。分级处理的步骤如下:
1)计算出每一个像素点的纹理度。
2)找出满足式(7)的纹理度:
(7)
其中:j∈{0,1,…,M-2};N为图像像素点的个数;k表示为第k个像素点;#定义为在图像的像素点中,所有纹理度小于等于n的像素点的集合,即纹理度小于等于n的像素点的个数;Sj为满足式(7)中最小像素点个数对应的最小纹理度。
3)得到[0,S0],[S0+1,S1],…,[SM-3+1,SM-2]以及[SM-2+1,∞)等M个区间后,按照图像像素点的纹理度将该像素点对应到相应的区间,若根据纹理度像素点被划分到第j个区间,则该像素点的纹理度记为j,由此得到纹理度分为M个等级的像素点。
纹理度分级的目的是为了保证每个纹理度等级像素点的个数尽可能地接近。本文实验过程中M一般取到8。
1.1.3 高、低纹理度等级的分类
实验过程中采用了大量的医学图像[11]进行测试,由于篇幅限制,随机选出CT chest、Thorax以及chest三幅图像(如图3)来说明高、低纹理度等级的区分情况。
图3 原始图像
由于医学图像是一类比较特殊的图像,其中一部分是灰度较为单一的区域,不包含任何图像细节信息,该部分为低纹理度等级部分;而另一部分则灰度值分布广泛,医学图像的关键信息都包含其中,该部分为高纹理度等级。为了进一步增强高纹理度等级的对比度并满足信息的高嵌入率要求,对高、低纹理度等级的像素点采用不同的嵌入方式。下面将详细介绍如何分出高、低纹理度等级。
如图3所示为CT chest、Thorax、chest的原始图像;图4为三幅图像在纹理度等级从2依次取到8时的像素分布情况。为了便于观察,白色部分为所有的高纹理度等级合并之后的结果,而黑色部分为所有的低纹理度等级。
图4 不同M值时3幅图像高、低纹理度等级分类
以M=2为例,图4(a)为M=2时三幅图像的高、低纹理度等级像素分布情况,白色区域的纹理度等级为1,黑色区域的纹理度等级为0。从图4中可以直观地观察出,除去图像的黑色部分,其余白色部分基本上构成了图像的核心部分,因此本文将构成关键部分的纹理度等级定义为高纹理度等级,而构成背景部分的纹理度等级定义为低纹理度等级。从图4中可总结出高、低纹理度等级的分类方法。
当M为偶数时,有:
(8)
其中:hhigh(n)为纹理度等级大于等于M/2的所有像素点的集合,即高纹理度等级所有像素点的集合;hlow(n)为纹理度等级小于M/2的所有像素点的集合,即低纹理度等级所有像素点的集合。
当M为奇数时,有:
(9)
为了在后续信息提取时可以分辨出高、低纹理度等级的像素点,在此过程中需要生成一幅全局定位图(Whole Location Map, WholeLM)对像素点进行标记,其中,高纹理度等级的像素点标记为1,低纹理度等级的像素点标记为0,并使用JBIG2的标准(文献[12])对其进行压缩,压缩后的定位图记为WholeLMcompress。
1.2 信息嵌入
由于医学图像中含有大量的低纹理度区域,该区域不包含图像的任何关键信息,因此可以考虑使用该部分嵌入大量信息。高纹理度等级包含有大量的图像关键信息,且纹理度等级越高包含的细节信息越多。为了进一步增强高纹理度等级的对比度并且满足高嵌入率的要求,本文对这两个区域采用不同的嵌入方式。
1.2.1 高纹理度等级信息嵌入
为了进一步增强高纹理度等级区域的对比度,本文在拉伸后的图像灰度直方图中像素个数为0的灰度值中嵌入信息,直到所有像素个数为0的灰度值均嵌满或满足信息嵌入量,从而达到类似于直方图均衡化的效果。本文按照纹理度等级从高至低的顺序嵌入信息,直到所有等级嵌满为止。在嵌入信息时,需要计算出每一个纹理度等级的直方图,因此,为了减少后续直方图的个数,M一般最高取到8。
按照1.1.3节介绍的方式区分出一幅图像的所有高纹理度等级的像素点后,要对每一个高纹理度等级的像素进行嵌入:
h(n)=#{1≤k≤N:n=nk}
(10)
当M为偶数时,n依次取为M-1,M-2,…,M/2,当M为奇数时,n依次取为M-1,M-2,…,(M-1)/2,然后从纹理度M-1到M/2(或(M-1)/2)依次进行信息嵌入,具体步骤如下:
1)计算出该等级的灰度直方图。
2)在所有右侧(i≤126)或左侧(129≤i≤255)灰度值像素个数为0的灰度值中,选出像素个数最多的灰度值ipeak,h(ipeak)为灰度值为ipeak的像素点的个数。
3)将信息嵌入到具有最大像素个数的灰度值中,对应的灰度值为ipeak,为了防止溢出,灰度值ipeak∈[0,126]的像素点向255°方向进行嵌入,灰度值ipeak∈[129,255]向0°方向进行嵌入,具体操作如下:
(11)
其中:i为原始像素值;i′为嵌入信息之后的像素值,b∈{0,1}是要嵌入的信息;h(i)为灰度值为i的像素点的个数。
4)重复步骤2)~3),直到所有的信息嵌入完成。为了后续提取信息以及恢复原始像素值,在高纹理度等级进行信息嵌入时需要记录每一轮的具有最大像素个数的灰度值ipeak,并将其作为秘密信息的一部分嵌入到下一轮中;而最后一轮的灰度值ipeak作为辅助信息的一部分,辅助信息嵌入的详细过程见1.2.3节。
1.2.2 低纹理度等级信息嵌入
医学图像低纹理度区域不包含任何关键信息,因此可以不用考虑该区域的图像质量嵌入大量信息。由于该区域灰度值较为单一,因此其预测误差较为集中,整体呈现拉普拉斯分布,方差较小。在这种情况下,文献[10]的方法较为适合,所以在低纹理度区域本文采用改进的文献[10]的方法进行信息嵌入。
需要注意的是,如图5所示,文献[10]的方法是用“o”像素点的值计算出所“×”像素点的预测误差。如图5所示,ui,j的预测值可以通过其周围的四个“o”类型像素点求得,方法如下:
ui,j′=(vi,j-1+vi+1,j+vi,j+1+vi-1,j)/4
(12)
若vi,j-1高纹理度等级,在计算ui,j′时,使用的是未进行信息嵌入的vi,j-1。
图5 菱形预测
首先选出两个阈值Tn和Tp,预测误差在区间[Tn,Tp]内用来嵌入信息,将不在区间内的预测误差进行平移,以便为信息嵌入留出足够的空间。本文选取的阈值Tn和Tp分别为在预测误差小于零时最大像素个数的预测误差值以及大于等于零时最大像素个数的预测误差值。b∈{0,1}是要嵌入的信息,按照式(13)进行信息嵌入:
(13)
其中:di,j为原始预测误差,Di,j是修正后的预测误差。嵌入完成之后,初始像素值ui,j被修正为Ui,j:
Ui,j=Di,j+ui,j′
(14)
值得注意的是,由于文献[10]的方法本身适用于嵌入率小于1的情景,因此为了满足高嵌入率的要求,本文在低纹理度区域进行多轮预测误差直方图平移嵌入,直到满足要求的嵌入率。在嵌入过程中,若有溢出点,产生一幅溢出定位图(Location Map for Overlapping, LMO)来标记所有会造成灰度溢出的点。比如原灰度值为0或255,嵌入信息之后会被修正为-1或256,这些像素点在定位图中标记为1,其余为0。然后按照JBIG2的标准(文献[12])对LMO进行压缩,压缩后的定位图记为LMOcompress。
1.2.3 辅助信息嵌入
在信息嵌入时,本文将所有的低纹理度等级合并成一个等级进行信息嵌入,而对每一个高纹理度等级分别进行信息嵌入。为了在信息提取以及图像恢复时区分出高低纹理度等级以及高纹理度等级中每一个等级的像素点,在嵌入过程中需要生成一些辅助信息。另外,图像四周区域几乎不包含任何关键信息,假设图像尺寸为m*n,本文将辅助信息嵌入到这些最外周h行以及h列的像素点中(详见第2)部分)辅助信息嵌入。需要注意的是,对这些像素点不作纹理度分级处理,既不包含在高纹理度等级中,也不包含在低纹理度等级中。
1)辅助信息内容。
在可逆信息隐藏中,为了后续信息提取以及原始图像恢复,一些必要的辅助信息需要嵌入到原始图像中。
辅助信息主要有:
①在图像对比度增强以及像素纹理度分级过程中,需要记录的有纹理度等级M、拉伸前的灰度最大值umax和最小值umin、拉伸后的灰度最大值Lmax和最小值Lmin,以及压缩后的全局定位图WholeLMcompress。
②高纹理度等级信息嵌入时,每一个等级在嵌入时最后一轮的ipeak,以及压缩后的「M/4⎤(若M为奇数,则需要「(M+1)/4⎤,「·⎤表示向上取整)幅局部定位图(Part Location Map, PartLM),压缩后的表示为PartLMcompress,局部定位图的目的是区分所有高纹理度等级中每一个等级的像素点。
生成局部定位图PartLM的方法如下:以M=8为例,此时需要区分的高等级为第4、5、6、7等级的像素点,共需要产生8/4=2幅局部定位图PartLM1以及PartLM2;则在这两幅局部定位图中,各位置坐标标记方法如图6所示,图6(a)为第一幅局部定位图PartLM1,图6(b)为局部定位图PartLM2。将图6中的结果整理到表1中,在第三行二进制中,把PartLM1作为二进制的最高位,PartLM2作为二进制的次高位(此处为最低),若还有PartLM3,则把它作为二进制的最低位。简而言之,PartLM1作为二进制最高位,然后依次递减。通过这种方法,可以有效减少定位图的数量,从而减少辅助信息。
图6 M=8时局部定位示意图
③在低纹理度等级嵌入过程中产生的压缩后的溢出定位图LMOcompress以及阈值Tn和Tp。
④在辅助信息进行嵌入时,采用的是多轮直方图平移的方法,因此采用最低有效位(Least Significant Bit, LSB)替换的方法将嵌入的轮数L以及最后一轮的具有最大像素个数的灰度值嵌入到第一行的前16个像素点中,而前L-1轮的具有最大像素个数的灰度值也将作为辅助信息的一部分。
表1 M=8时局部定位图定义
2)辅助信息嵌入。
由于图像进行直方图拉伸之后,最外周的像素值大多数为Lmin并且不包含任何关键信息,采用直方图向255的方向平移的方法可以有效避免溢出,因此本文采用多轮直方图平移的方式将辅助信息嵌入到最外周h行以及h列的像素点(如图7所示)中。具体步骤如下:
①取前16个像素点的最低有效位构成序列SLSB。
②计算出最外周h行h列的像素点的灰度直方图(排除前16个像素),找出灰度直方图中具有最大像素个数的灰度值Ipeak,灰度值大于Ipeak的向右平移,以便为信息嵌入留出空间,灰度值小于Ipeak的保持不变,并按照式(15)进行嵌入:
(15)
其中:MAuxiliary∈{0,1}为要嵌入的信息;i为原始灰度值;i′为嵌入信息后的灰度值。
③重复L次步骤②直到所有的辅助信息嵌入完成。
在嵌入过程中,为了后续提取出这些辅助信息并恢复这些原始像素值,需要记录每一轮具有最大像素个数的灰度值Ipeak,其中:前一轮的Ipeak作为辅助信息的一部分在下一轮嵌入;最后一轮的Ipeak以及h各自用8 b的信息表示,用来替代前16个像素的最低有效位;SLSB作为辅助信息的一部分在最后一轮进行嵌入。
图7 图像四周用来嵌入辅助信息的像素点
1.3 信息提取以及原始图像恢复
1.1节以及1.2节介绍了图像的对比度增强过程、纹理度分级以及信息的嵌入过程。提取过程与嵌入过程相反,首先提取出辅助信息,然后根据辅助信息先恢复高纹理度等级的像素并提取出秘密信息,再恢复低纹理度等级的像素并提取出秘密信息,最后恢复拉伸前的图像。秘密信息提取以及原始图像恢复的具体过程如下:
1)提取出图像第一行前16个像素的最低有效位,从而得到最后一轮具有最大像素个数的灰度值Ipeak以及h。
2)通过式(16)提取出最后一轮嵌入的辅助信息,其中包括L、前1轮的灰度值Ipeak以及前16个像素点的最低有效位序列SLSB,然后根据式(17)恢复像素值:
(16)
(17)
3)再重复使用L-1次式(16)和(17)可以恢复出在外周像素点中嵌入的所有辅助信息,其中包括WholeLMcompress、PartLMcompress、高纹理度等级中每个等级的最后一轮嵌入时具有最大像素个数的灰度值ipeak、低纹理度等级中的溢出定位图LMOcompress等,然后将SLSB中的值代替前16个像素的最低有效位,这样最外周的像素就得以恢复并提取出了所有的辅助信息。
4)将WholeLMcompress、PartLMcompress解压,根据WholeLM分辨出高低纹理度等级的像素点,根据PartLM分辨出每一个高纹理度等级的像素点,根据像素点对应等级中的每一个ipeak按式(18)恢复未嵌入信息的像素值,同时按式(19)提取出嵌入的秘密信息:
(18)
(19)
5)根据解压后的溢出定位图、Tn以及Tp恢复低纹理度等级的像素值并提取出秘密信息。首先根据式(20)计算出此时像素点的预测误差,根据嵌入信息之后的预测误差可以按照式(21)提取出秘密信息;然后根据辅助信息中的阈值Tn、Tp和式(22)恢复对比度增强之后的预测误差;根据预测误差以及预测值,利用式(23)可以恢复对比度增强之后的像素值。
Di,j=Ui,j-ui,j′
(20)
b=Di,jmod 2
(21)
(22)
ui,j=ui,j′+di,j
(23)
6)根据辅助信息中拉伸前的灰度最大值umax和最小值umin、拉伸后的最大值Lmax和最小值Lmin,使用式(2)恢复拉伸前的像素值。
2 实验结果与分析
实验过程中采用了大量的医学图像进行测试,由于篇幅限制,随机选出chest图像(如图3(c))来说明实验结果以及主观的观察结果。为了说明本文的对比度增强效果能够不依赖嵌入率并且利用纹理度可有效将医学图像的关键部分与背景部分区分开,首先介绍了在不同纹理度等级和不同嵌入率下的实验结果以及各类参数评价结果;然后比较了文献[13]中使用的传统分割算法与本文中高、低纹理度等级分割算法对医学图像分割的实验结果;最后在不同嵌入率下与其他同样具有对比度增强效果的可逆信息隐藏方法进行对比。
2.1 不同纹理度等级下的实验结果
纹理度等级划分的不同,其像素的分布也有所不同,这就导致了不同纹理度等级下的载密图像有所不同。本节着重介绍了在不同纹理度等级划分下算法的性能以及与传统分割方法相比对医学图像关键部分的分割效果。
图8为chest图像在嵌入率分别为0.1 bpp、1 bpp以及2 bpp,且纹理度等级M分别取2、3、4、5、6、7和8时的载密图像,其中:bpp(bit per pixel)为每个像素值嵌入的比特量。从这些载密图像中可以直观地总结出在同一个纹理度等级下,嵌入率为0.1 bpp、1 bpp以及2 bpp时原始图像对比度均得到了有效增强,这是因为本文首先对图像作了直方图拉伸。从图8中可以发现,在嵌入率相同时,人类视觉系统无法判断出M取何值时图像质量最好。
图8 不同M值、不同嵌入率时的chest载密图像对比
由于人类视觉会受到多种因素的影响,因此本文采用文献[14]中的无参图像质量评价(No-Reference Contrast-Distorted Images Quality Assessment, NR-CDIQA)参数作为选择最佳纹理度等级M的标准。NR-CDIQA是一种基于机器学习计算的针对图像对比度失真的无参考图像质量评价方法,具有较高的统计意义,可以用来高效地评价对比度失真图像的质量。NR-CDIQA的值越高,代表图像质量越好。当嵌入率固定时,NR-CDIQA的最大值对应的纹理度等级为最佳纹理度等级M。如图8第1行,在嵌入率为0.1 bpp时,M从2取到8时的NR-CDIQA的值分别为2.188 3,2.326 4,2.329 0,2.333 3,2.355 4,2.375 7和2.730 7;图8第2行为嵌入率在1 bpp时,M从2取到8的载密图像,其NR-CDIQA分别为3.248 3,3.246 2,3.240 0,3.240 8,3.233 2,3.236 5和3.237 7;图8第3行是嵌入率在2 bpp时,M从2取到8的载密图像,其NR-CDIQA分别为3.279 9,3.290 5,3.282 5,3.290 3,3.284 6,3.293 2,3.280 4。根据NR-CDIQA的值可以得到chest图像的最佳纹理度等级划分,嵌入率为0.1 bpp、1 bpp以及2 bpp时的最佳纹理度等级分别为8、2和7。在2.2节的对比实验中,本文方法使用的是最佳纹理度等级的结果。
为了比较本文方法与使用传统分割算法的可逆信息隐藏方法的优劣,将本文方法对医学图像的分割结果与采用传统分割算法的可逆信息隐藏方法进行对比。图9为当纹理度等级M=2时本文方法与文献[13]中的分割方法对chest图像关键部分的提取结果。图9(a)中的白色区域为文献[13]中使用传统算法分割的医学图像的感兴趣区域(Region Of Interest, ROI);图9(b)中的白色区域为使用本方法分割出的高纹理度等级区域。由于文献[13]中分割算法的局限性,非感兴趣区域(Region Of Non-Interest, NROI)区域(如图9(a)中的黑色实线矩阵区域)仍然包含图像的关键信息;而ROI不仅不能完全包含医学图像的关键信息,而且还包含大量灰度值单一的区域(如图9(a)中的黑色虚线矩阵区域),这些像素点本应划分到NROI中。由此可见,对于某些图像,传统的分割算法并不能完全正确地将ROI和NROI区分开。相比而言,本文采用的纹理度等级划分方法则能更好地区分出两种区域,从而对医学图像的关键部分划分更加准确;并且由于本方法仅仅使用像素的纹理度便将医学图像的关键区域提取出来,过程更加简单高效。
图9 两种分割方法对图像的分割结果对比
2.2 与其他RDH方法对比实验
为了进一步验证本文方法的有效性,将本文方法与其他同样具有对比度增强效果的可逆信息隐藏方法对比,包括文献[7-9]以及文献[13]的方法。为了展现出在不同嵌入率下的实验效果,给出了嵌入率分别在0.1 bpp、1 bpp以及2 bpp下的实验结果。
图10为chest图像在不同嵌入率下使用文献[7-9,13]方法以及本文方法(最佳纹理度等级)的载密图像。从主观上看,在嵌入率为0.1 bpp时,文献[7]的方法以及文献[8]的方法的图像对比度增强效果并不明显,文献[13]方法的ROI与NROI的交界处产生明显差别;在嵌入率为2 bpp时,文献[7-8]的方法均产生了明显失真;而在不同嵌入率下,本文均得到了比较好的结果。
表2是图10对应的客观图像质量评价结果,包括峰值信噪比(PSNR)、结构相似性(Structural SIMilarity index, SSIM)[15]以及针对对比度变化的无参图像质量评价(NR-CDIQA)[14]等三个指标评价最终的载密图像。其中PSNR和SSIM是两种比较传统的图像质量评价参数,PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而它是基于对应像素点间的误差,即基于误差敏感的图像质量评价,并未考虑到人眼的视觉特性,所以经常出现评价结果与人的主观感觉不一致的情况;SSIM函数是一种全参考的图像质量评价指标,其中的结构比较函数反映了图像的结构特征,然而SSIM也存在一些不足,比如忽略了对人类视觉系统的底层视觉特性,简单的线性建模难以描述高层视觉的图像结构信息。由于本文首先对图像进行直方图拉伸提高对比度,故而对原始图像像素值的改变较大,而PSNR和SSIM是基于原始图像计算的评价结果,因此本文的PSNR和SSIM值均低于其他方法。而NR-CDIQA是一种基于机器学习计算的无参图像质量评价方法,主要针对于对比度失真图像,具有较高的统计意义,可以用来高效地评价对比度失真图像的质量,因此NR-CDIQA更能反映出图像的对比度失真情况,NR-CDIQA的值越高,代表图像质量越好。从表2中的数据来看,本文的NR-CDIQA基本都高于其他对比方法,即无论从主观还是客观来看,本文方法的结果均优于对比方法。
图10 chest在不同嵌入率下使用不同方法的载密图像
Tab. 2 Evaluation results of marked-images’
究其原因,这是由于文献[7]的方法是选出图像灰度直方图中具有最大像素个数的两个灰度值嵌入信息,而医学图像中含有大量灰度单一的像素值,因此该方法会优先使用低纹理度的像素点进行信息嵌入,因此当信息的嵌入量较少时,直方图平移的轮数较少,因此图像的对比度没有得到有效增强。文献[8]的方法是在空间域和小波变换域分别嵌入信息,空间域的嵌入方法是在文献[7]的基础上选用了一个参数控制对比度增强的效果,因此在低嵌入率下,载密图像对比度增强效果并不明显。文献[9]的方法是选取图像的预测误差直方图两侧的预测误差进行嵌入,这是由于预测误差直方图两侧的预测误差较大,即对应图像中纹理度较高的区域,从而实现对比度增强的目的,然而该方法未能较好地从灰度上增强图像的对比度,在高嵌入率下,载密图像的对比度增强效果并不明显。文献[13]的方法采用的是传统分割算法来划分ROI和NROI,前面已通过实验验证了本文的纹理度等级划分对医学图像的关键部分划分更加准确,当M=2时,本文与文献[13]结果非常接近,这是由于高纹理度区域只包含一个等级。为了在低嵌入率下图像对比度也能得到显著增强,本文首先对图像作了直方图拉伸。为了将医学图像的关键部分与其他部分区分开,本文进一步利用像素的纹理度将图像分为高纹理度等级和低纹理度等级两部分。另外高纹理度等级包含医学图像的关键信息,因此为了进一步增强高纹理度等级的对比度,本文对高纹理度等级采用了一种具有直方图均衡化效果的方法进行信息嵌入;而低纹理度等级不包含任何的关键信息,即灰度值单一,因此本文采用改进的文献[10]方法进行信息嵌入,以此满足信息高嵌入率的要求。通过以上操作,无论嵌入率为0.1 bpp、1 bpp或者2 bpp,本文方法的NR-CDIQA明显大于其他方法。
3 结语
针对目前可逆信息隐藏方法的对比度增强效果受嵌入率的影响问题,本文提出了一种基于多纹理度划分的具有对比度增强效果的医学图像可逆信息隐藏方法。本文首先对医学图像整体进行对比度拉伸操作,从而得到较好的对比度增强效果;然后再根据医学图像纹理度的自身特点,将医学图像划分为高、低两类纹理度等级;最后为了进一步增强高纹理度等级部分的对比度,对高纹理度等级采用一种具有类似直方图均衡化效果的方法进行信息嵌入,而为了实现高嵌入容量的需求,对低纹理度等级区域使用改进的文献[10]方法进行信息嵌入。通过以上操作,本文可以实现一种不依赖嵌入率的、具有高嵌入容量特性的对比度增强可逆信息隐藏算法。实验结果表明,与其他具有对比度增强效果的可逆信息隐藏方法相比,无论在低嵌入率或高嵌入率下,本文方法均可以显著实现载密图像的对比度增强效果。本文方法的对比度增强过程与信息嵌入过程是相互独立的,故而下一步的工作将继续寻找一种能同时实现对比度增强的信息嵌入方法,并且尝试将其他的图像处理操作与可逆信息隐藏相结合,实现一种能够保护图像安全的可逆信息隐藏算法。