熊志勇,李 延
(中南民族大学 计算机科学学院,武汉 430074)
作为图像信息隐藏的重要分支,可逆数据隐藏受到了广泛的关注和研究,可逆数据隐藏是指提取端在正确提取隐藏数据的同时,能够无失真地恢复原始图像.可逆数据隐藏技术在医学、军事、法律等领域有着重要的实际应用价值,在这些应用领域中,彩色图像比灰度图像和二值图像的应用需求更大,因此研究彩色图像可逆数据隐藏算法具有重要的理论意义和实用价值.
除了早期的位平面压缩方法以外,可逆数据隐藏嵌入方法主要包括差值扩展[1-6]和直方图平移[7-9].可逆嵌入算法的性能指标主要包括嵌入容量、含密图像质量和算法复杂度3个方面.为提高算法的性能,Jia Lin等在文献[10]中提出一种双重嵌入方案,第1次嵌入用偶数像素值嵌入数据,嵌入0时像素值保持不变,嵌入1时像素值加1,第2次通过减小奇数像素值嵌入数据.嵌入前用定位图标记可嵌入像素的位置,压缩的定位图作为辅助信息提供给提取端,用于恢复原始图像,该方法不需要溢出处理,嵌入容量和图像质量都较高,但需要提供大量的辅助信息才能提取数据并恢复原始图像,文献[11]采用类似的互补嵌入方法嵌入数据,压缩定位图与数据一起嵌入图像,但自然图像中的奇数和偶数像素值的数量相差不大,定位图的压缩率较低,嵌入容量受到很大的限制.
直方图平移方法具有嵌入效率高、图像失真小等优点,但现有直方图平移方法嵌入容量偏低,研究对象多为灰度图像,虽然基于灰度图像的可逆嵌入算法可移植到彩色图像的各色彩分量,嵌入容量是单分量的3倍左右,但这种简单的移植方法没有利用彩色图像的特性,算法的整体性能依然较低,为此本文提出一种基于差值直方图平移和定向嵌入的彩色图像可逆数据隐藏算法.
对于相邻的像素对(an,an+1),其平均值l和差值h为:
(1)
n为水平或垂直方向的坐标,对应的逆变换为:
(2)
这个可逆变换就是整数Haar小波变换,h为高频系数,l为低频系数.小波变换与人类视觉系统很接近,利用小波高频系数嵌入数据,既可嵌入更多的数据,又不会对视觉产生明显影响.
自然图像中像素值之间存在着很强的相似性,相邻像素的相似度随着像素距离的增加而逐渐减小,邻近像素在统计意义上应有最强的相关性,当前像素通过其邻近像素来预测的准确度也应最高[12].Haar小波高频系数也可以看成是一种预测误差,由于没有考虑周围像素值的变化趋势,所以预测准确性不高,但嵌入过程中差值扩展量由两个像素值分担,像素值扩展方向可自由指定,因此在多重嵌入中具有较大的优势.
用Δh表示小波系数扩展量(即像素值扩展量),若|Δh|=1,可指定像素值沿增加和减小方向扩展:
(3)
(4)
m为像素值扩展模式,嵌入时m=1,图像恢复时m=-1.式(3)指定像素值沿增加方向扩展,式(4)指定像素值沿减小方向扩展.在多重嵌入过程中,交替使用增加和减小方向扩展像素值,使部分像素值的扩展量相互抵消,从而保证图像质量,将这种像素值调整方法称为定向嵌入.
自然图像的色彩分量之间存在密切的相关性[13],在特定区域内,像素值的变化趋势应保持一致,即小波高频系数非常接近,色彩分量间小波系数的差值很小.与单分量小波系数相比,色彩分量之间小波系数的差值更小,对应的直方图更加紧凑,峰值也更大,适于用直方图平移方法嵌入数据.基于差值直方图平移的可逆嵌入算法具有高效率、高图像质量的优点,但嵌入容量偏低.
对任一像素,从BGR、GRB和RBG中随机选取1种色彩分量组合,对应分量的编号为1、2和3,用h1、h2、h3表示3个分量的小波高频系数,h1,h2,h3∈[-255,255],色彩分量之间小波系数差值为:
(5)
其中d1,d2∈[-510,510].对于差值d1,为了不影响d2,通过扩展h1实现差值直方图平移,以-1和0作为嵌入点,小于-1的差值减1,大于1的差值加1,空出的位置即可用于嵌入数据.若h3为3个分量小波系数的中间值,差值|d1|≥2,只能平移而不能嵌入数据,直接影响嵌入容量和图像质量,由于h1可能为3个分量小波系数的最大值、中间值或最小值,利用小波系数的相互关系减小差值:
(6)
若h1为小波系数的最大值,即h1≥max(h2,h3)时,h1-max(h2,h3)≤h1-min(h2,h3),若h1为最小值,即h1≤min(h2,h3),min(h2,h3)-h1≤max(h2,h3)-h1,因此,式(6)有利于减小差值,由于嵌入点为0,也就是只有当h1=min(h2,h3)或h1=max(h2,h3)时才能嵌入数据,嵌入容量有所损失,但当h1为小波系数的中间值时,h1保持不变,有利于提高图像质量.为了提高嵌入算法的性能,运用下式:
(7)
若h1为最小值且h2=h3,即h1
对于差值d1,以0作为嵌入点,大于0的差值加1,这样直方图中差值1对应的频数为0,空出的位置即可用于嵌入数据,平移和嵌入过程可表示为:
(8)
其中m为直方图平移模式,嵌入时m=1,图像恢复时m=-1,与式(3)、(4)一致.用Δd1表示差值扩展量,Δh1表示分量1的像素值扩展量,则:
(9)
(10)
其中i为待嵌入的数据信息,i∈[0,1].h1≥max(h2,h3)时,增加h1不会改变h1、h2和h3的大小关系,同样h1 对于差值d2,用Δd2表示差值扩展量,平移和嵌入过程为: (11) 用Δh2、Δh3表示分量2和分量3的像素值扩展量,则: (12) 由于式(3)、(4)对应的定向嵌入方法要求像素值扩展量为1,即|Δh2|≤1且|Δh3|≤1,因此差值扩展量|Δd2|≤2.在[-2,1]范围内选择4种嵌入点组合,即(0)、(-1,0)、(-1,0,1)和(-2,-1,0,1),嵌入点越多嵌入容量越大,相应的图像质量越低,嵌入过程中,根据实际负载大小,选择合适的嵌入点组合,实现嵌入容量和失真控制.为减少篇幅,文中以(-1,0,1)为例,差值扩展量Δd2为: (13) 色彩分量中像素值an∈[0,255],这里n为色彩分量编号,n∈[1,3],增加或减小像素值可能产生溢出.为避免像素值溢出,根据像素值的分布情况,自适应地选择溢出像素数量较小的一端预先调整像素值,使嵌入过程不再产生溢出,而在另一端则用像素值的可扩展性避免像素值溢出,若像素对中待扩展像素值不可扩展,则向相反的方向扩展另一像素值,用少量的辅助信息代替定位图,从而提高嵌入容量. 2.1.1 图像预处理 定向嵌入的像素值扩展量为1,若像素对的待扩展像素值不可扩展,还需向相反方向扩展另一像素值,两轮嵌入过程中像素值的最大扩展量为2,因此当像素值a<2时,像素值减小可能产生下溢,当a>253时,像素值增加可能产生上溢,以253和2作为上、下临界值,统计3个色彩分量中像素值大于等于253的像素数量S0以及像素值小于等于2的像素数量Su,用方向标志D表示溢出像素数量较小的一端: (14) 嵌入数据之前先对图像进行预处理,顺序扫描图像,若D=0,将色彩分量中所有大于等于253的像素值调整为253,同时将调整值Δa=a-253记入调整信息流;若D=1,将色彩分量中所有小于等于2的像素值调整为2,将调整值Δa=2-a记入调整信息流,每一调整值用两位数据表示.调整信息将与负载一起嵌入图像,以便提取端恢复调整的像素值.提取端恢复图像时,若像素值等于253,从调整信息流中读取调整值Δa,原始像素值a=253+Δa;若像素值等于2,从调整信息流中读取调整值Δa,原始像素值a=2-Δa.例如D=1,则临界值为2,嵌入端预处理阶段,所有值为0、1和2的像素,像素值均调整为2,调整值分别为2、1和0,对应的调整信息分别为10、01和00.图像恢复时若像素值为2,则从调整信息流中读取2位调整信息还原调整值Δa,原始像素值a=2-Δa. 经调整预处理的图像,当D=0时,扩展像素值不会出现上溢,D=1时不会出现下溢.提取端根据临界像素值的顺序定位预处理阶段调整的像素,并从调整信息流中读取调整信息恢复调整的像素值. 2.1.2 利用像素值可扩展性消除定位图 图像经预处理后,扩展像素值为a时只有一端可能产生溢出.在嵌入端,像素值扩展量|Δh|=1时,用变量a表示像素对中待扩展像素值a可经受的扩展次数: (15) α=0表示像素值a不可扩展,此类像素值保持不变,向相反方向扩展像素对的另一像素值,实现差值直方图平移或数据嵌入;α=1表示a可扩展1次;α≥2表示a至少可扩展2次. 提取端用α′表示像素值a′的可扩展性: (16) 从(16)式可知: (17) 用α′可确定原始图像中哪些像素值可扩展2次,但是当α′为0时,α的值可能是0或1,为了消除这种歧义,用标志β加以区别,当α<2时,β=α.在自然图像中,绝大多数像素值对应的α≥2,用少量的标志信息即可定位不可扩展像素值,从而消除溢出定位图. 嵌入端收集全部标志信息组成标志信息流,并与负载一起嵌入图像.图像恢复时,用下式计算α: (18) 为了提高嵌入算法的整体性能,提出一种基于差值直方图平移和定向嵌入的可逆嵌入方案.第1轮用水平小波系数的差值嵌入数据,当D=0时沿减小方向扩展像素值,D=1时像素值沿增加方向扩展,由于像素值扩展可能产生溢出,因此嵌入数据的同时生成标志信息.第2轮嵌入之前,将辅助信息与负载合并生成待嵌入数据,用垂直小波系数的差值嵌入数据,D=0时像素值沿增加方向扩展,D=1时像素值沿减小方向扩展,像素值扩展不会出现溢出,无需溢出处理. 两轮嵌入过程中,像素值扩展方向相反,不会出现扩展量累加现象.对于色彩分量中的像素值,如果扩展1次,像素值的扩展量的绝对值为1,如果扩展两次则相互抵消,像素值的扩展量为0,即像素值保持不变,因此,定向嵌入方案在提高嵌入容量的同时,能够有效地减小图像质量的下降幅度. 当实际负载较大时,采用双重嵌入提高嵌入容量.由于第1次嵌入数据改变了像素对的差值,使像素值的相似性降低,因此第2次嵌入使用不同的像素对,以水平小波变换为例,第1次嵌入时横坐标从0开始,以步长2扫描整行像素,第2次嵌入时横坐标从1开始,像素对与第1次交叉.第2次嵌入时,像素值扩展量继续抵消,当然也有少部分累加,像素值扩展量最大值为2. 为了使数据均匀地嵌入3个色彩分量中,对任一像素对,以eKey+(y/2)×W+x/2作为种子,从BGR、GRB和RBG中随机选取分量组合,(x,y)为像素对第一像素的坐标,W、H为图像的宽度和高度,分量组合中色彩分量编号为1、2和3,用n表示色彩分量编号,n∈[1,3].待嵌入数据采用混沌加密(用混合光学双稳模型作为混沌源,密钥为eKey),以增加隐藏数据的安全性,具体嵌入过程如下: (1)初始化.将原始图像复制到内存,直方图平移模式m=1,可嵌入计数器EN=0,标志计数器F=0. (2)确定像素值调整方向.扫描图像,对任一像素,顺序读取3个分量的像素值a1、a2和a3,若an≥253,计数器S0加1;同样的若an≤2,计数器Su加1.根据S0和Su的大小,用式(14)计算方向标志D.若D=0,调整像素的总数S=S0,否则若D=1,调整像素的总数S=Su. (3)图像预处理.重新扫描图像,顺序读取像素值a1、a2和a3,根据方向标志D调整可能产生溢出的像素值. (a)方向标志D=0.若a1≥253,像素调整值Δa=a1-253,将Δa转为两位二进制数并写入调整信息流,同时将像素值a1调整为253,用同样的方法处理像素值a2和a3. (b)方向标志D=1.若a1≤2,像素调整值Δa=2-a1,将Δa转为两位二进制数并写入调整信息流,同时将像素值a1调整为2,用同样的方法处理像素值a2和a3. (4)第1轮嵌入.顺序扫描图像,对任一像素对,读取各分量的像素对值(a11,a12)、(a21,a22)和(a31,a32),计算水平小波高频系数h1、h2和h3,用式(7)计算差值d1,d1=0时,从待嵌入数据流中读取一位数据,可嵌入计数器EN加1,用式(9)计算差值扩展量Δd1,用式(10)计算像素值扩展量Δh1;用式(5)计算差值d2,若d2∈[-1,1],从待嵌入数据流中读取1位数据,可嵌入计数器EN加1,用式(13)计算差值扩展量Δd2,并用式(12)计算像素值扩展量Δh2、Δh3.方向标志D=0,用式(4)沿减小方向扩展像素值,方向标志D=1,用式(3)沿增加方向扩展像素值.定向嵌入时,若待扩展像素值的可扩展次数α<2,标志计数器F加1,并将α写入标志信息流,对不可扩展像素值,则按相反的方向扩展像素对的另一像素值. (5)构造辅助信息.辅助信息包括文件头、预处理调整信息流和标志信息流.其中文件头的第1字节为标志字节,接下来的字节是方向标志,紧跟其后的部分是调整像素总数、标志信息位流长度(各2字节)和负载长度(4字节),文件头共10字节,位流长度80,辅助信息位流长度LA=S×2+F+80.辅助信息是数据提取和图像恢复所必需的信息,将与负载一起嵌入载体图像. (6)计算有效负载pl.顺序扫描图像,读取各分量的像素对值(a11,a12)、(a21,a22)和(a31,a32),计算垂直小波高频系数h1、h2、h3以及差值d1和d2,d1=0时,可嵌入计数器EN加1,同样若d2∈[-1,1],可嵌入计数器EN加1.有效负载能力pl=EN-LA,将pl存入文件头. (7)第2轮嵌入.将调整信息、标志信息和负载合并,生成待嵌入数据流.顺序扫描图像,读取各分量的像素对值(a11,a12)、(a21,a22)和(a31,a32),计算垂直小波高频系数h1、h2和h3,并计算各分量的像素值扩展量Δh1、Δh2和Δh3,方向标志D=0,用式(3)沿增加方向扩展像素值,方向标志D=1,用式(4)沿减小方向扩展像素值,实现数据嵌入.此轮嵌入过程不会出现溢出,无需溢出处理. (8)将内存中的数据写入图像生成含密图像,完成数据嵌入过程. 数据提取和图像恢复不需要原始图像,提取端仅需1个参数,即嵌入密钥eKey,由嵌入端提供.信息解密所需的混沌序列和分量组合均由密钥决定,因此不知道密钥就无法提取数据,如果隐藏数据被正确提取,可根据需要恢复原始图像.在提取和恢复过程中,分量组合的选取方法与嵌入过程相同,具体的提取和恢复过程如下: (1)初始化.将含密图像复制到内存,用混合光学双稳模型作为混沌源,以密钥eKey作为初值,迭代W×H×2次生成混沌序列用于解密数据,W、H为图像的宽度和高度.直方图平移模式m=-1. (19) (4)提取第1轮数据并恢复像素值.从水平小波高频系数差值中提取数据,提取方法与步骤(3)相同,方向标志D=0,用式(4)恢复像素值,方向标志D=1,用式(3)恢复像素值,恢复像素值时,若待恢复像素值的可扩展次数为0,需从标志信息流中读取一位标志信息以恢复原始像素值的可扩展次数α,根据α的值恢复各分量的像素对值. (5)恢复预处理调整像素.方向标志D=0时,若a1=253,从调整信息流中读取两位调整值Δa,a1=253+Δa;方向标志D=0时,若a1=2,从调整信息流中读取两位调整值Δa,a1=2-Δa.用相同的方法处理像素值a2和a3. (6)根据需要将内存中的数据写入图像,从而恢复原始图像. 采用C++Builder6开发平台进行仿真实验,图1是选取的几幅典型的200×200彩色图像,其中第3和第4幅分别为西安交通大学人工智能与机器人研究所东方人脸库(AI&R)视点子库中的侧面彩色图像V_0148_05和正面图像V_0173_10.在所选的彩色图像中嵌入隐藏信息(双重嵌入),能保持较高的嵌入率(大于1.55bpp)和图像质量(PSNR>=48.0dB),如图2所示.用嵌入端提供的密钥可以正确提取隐藏的数据,恢复的图像与原始图像完全相同. 图1 原始图像 图2 嵌入数据的图像 表1列出了本文算法与文献[2]、文献[3]以及文献[7]算法的嵌入率和峰值信噪比(PSNR)对比实验结果,为了在同等条件下对比,在每一像素的RGB分量中均用文献[2]、[3]和[7]算法嵌入数据,像素值调整量最大值为2,表中PSNR为RGB三分量PSNR的平均值.实验结果表明:与简单移植方法相比,文中采用的Haar小波系数差值直方图平移方法充分利用自然图像色彩分量之间的相关性减小差值,嵌入率和图像质量均有很大的提高,说明利用色彩分量间小波系数差值嵌入数据具有明显的优势. 表1 嵌入率和PSNR对比结果 将本文算法与文献[4]、[5]和[6]对应的预测误差差值扩展嵌入方法进行双重嵌入对比实验,比较嵌入容量和PSNR值,实验结果如表2所示.实验结果表明:与其它方法相比,本文算法在同等图像质量下,嵌入容量大幅提高,说明定向嵌入方法是可行的. 表2 嵌入容量和PSNR对比结果 表3列出了不同差值计算方法所对应的嵌入容量和PSNR值,实验结果表明:式(7)对应的差值计算方法在嵌入容量和图像质量两方面均有不同程度的提高,说明差值计算方法的改进是有效的. 表3 差值d1的不同计算方法对比结果 当负载较小时,图像质量就成了较重要的性能指标,嵌入容量和失真控制是必要的,表4列出了不同嵌入点组合对应的嵌入容量和PSNR值,实验结果表明:利用嵌入点个数可有效控制嵌入容量和图像失真. 表4 嵌入容量和失真控制结果 本文嵌入方案在嵌入过程中使用两种不同的像素值扩展方向(异向扩展),经过两轮嵌入,像素值扩展量最大值仍为1,部分像素值扩展量相互抵消,这对提高图像质量非常有利,若像素值采用同向扩展,两轮嵌入将产生扩展量累加,表5列出了异向扩展、同向扩展以及异向双重嵌入的对比结果,抵消、累加的数量是指3个分量的平均值.实验结果表明:1)异向扩展和同向扩展的嵌入容量接近,而异向扩展嵌入方法的图像质量明显高于同向扩展嵌入方法.2)在双重嵌入过程中虽有部分扩展量累加,但只占总像素的10%左右,与同向单次嵌入接近,4轮嵌入的最大扩展量仅为2,说明本文算法在大幅提高嵌入容量的同时,仍能保持较高的图像质量. 表5 反向扩展与同向扩展对比结果 针对现有直方图平移算法嵌入容量偏低、不适合彩色图像等缺点,提出了一种基于整数Haar小波系数差值直方图平移和定向嵌入的彩色图像可逆数据隐藏算法.利用色彩分量之间的相关性减小差值,从而减少了对图像的修改,以提高含密图像的质量.利用多嵌入点和双重嵌入方法提高嵌入容量,两轮嵌入过程中像素值扩展方向相反,避免像素值修改量累加,有效解决了多重嵌入时图像质量严重下降的问题.信息加密所用混沌序列以及分量组合均由密钥决定,隐藏数据相对安全,信息提取不需要原始图像,提取端提取数据的同时可无损地恢复原始图像.实验结果表明:该算法注重算法的整体性能,在嵌入容量和图像质量方面均有较大的优势. [1]Tian Jun.Reversible data embedding using a difference expansion[J].IEEE Transaction on circuits and Systems for Video Technology,2003,13(8):890-896. [2]Thodi D M,Rodriguez J J.Expansion embedding techniques for reversible watermarking[J].IEEE Transactions on Image Processing,2007,16(3):721-730. [3]李健伟,胡永健,陈开英.利用预测误差直方图平移的可逆数据隐藏技术[J].中国图形图像学报,2009,14(6):1088-1095. [4]熊志勇,蒋天发.基于预测误差差值扩展的彩色图像无损数据隐藏[J].计算机应用,2010,30(1):186-189. [5]熊志勇,蒋天发.无定位图的预测误差差值扩展可逆数据隐藏[J].计算机应用研究,2010,27(3):1016-1018. [6]熊志勇,王江晴.大容量的预测误差差值扩展可逆数据隐藏算法[J].光电子·激光,2010,21(5):740-745. [7]Wu Hao-tian,Huang Jiwu.Reversible image watermarking on prediction errors by efficient histogram modification [J].Signal Processing,2012,92(12):3000-3009. [8]Wien Hong.Adaptive reversible data hiding method based on error energy control and histogram shifting [J].Optics Communications,2012,285(2):101-108. [9]Huang Li-Chin,Tseng Lin-Yu,Hwang Min-Shiang.A reversible data hiding method by histogram shifting in high quality medical images[J].Journal of Systems and Software,2013,86(3):716-727. [10]Jia Lin,Shin Sang-Ho,Yoo Kee-Young.A reversible data hiding scheme using inverse embedding methods in double-embedding strategies[C]// IEEE. The 7th International Conference on Informatics and Systems (INFOS),Cairo:IEEE,2010:1-7. [11]Chang Chin-Chen,Kieu T D.A reversible data hiding scheme using complementary embedding strategy[J].Information Sciences,2010,180(16):3045-3058. [12]杨 边,陆哲明,徐殿国,等.基于邻近像素的低复杂度预测矢量量化图像压缩编码算法[J].电子学报,2003,5:707-710. [13]曹文伦,彭国华,秦洪元,等.利用色彩分量相关性的彩色图像分形编码方法[J]. 计算机工程与应用,2004,40(22):51-55.2 彩色图像可逆数据隐藏方案
2.1 溢出处理
2.2 嵌入方案
2.3 数据嵌入过程
2.4 数据提取和图像恢复
3 实验结果及分析
4 结束语