姜卓睿,熊志勇,王江晴
(中南民族大學(xué)計算機科學(xué)學(xué)院,武漢430074)
可逆數(shù)據(jù)隱藏是指能夠在提取端提取數(shù)據(jù)的同時無損地恢復(fù)原始圖像,該技術(shù)在某些領(lǐng)域如軍事、醫(yī)學(xué)和法律訴訟證據(jù)的完整性認(rèn)證等有著重要的實用價值.Jun Tian[1]最早提出的差值擴展嵌入方法在可逆數(shù)據(jù)隱藏領(lǐng)域受到廣泛的關(guān)注,之后還有諸多專家學(xué)者在其基礎(chǔ)上提出了關(guān)于圖像的可逆數(shù)據(jù)隱藏方法,這些改進或延伸的嵌入算法,進一步提高了嵌入容量和圖像的質(zhì)量[2,3].對于差值擴展嵌入方法,定位圖是影響嵌入率的主要因素,在文獻[2,4]中,提前將可能溢出的像素調(diào)整到安全范圍,避免了使用定位圖,提高了嵌入效率.文獻[3,5,6]提出的無損數(shù)據(jù)隱藏方法,由于部分像素的調(diào)整量超過1,導(dǎo)致PSNR數(shù)據(jù)不高,對圖像的質(zhì)量有一定的影響.針對以上現(xiàn)象,本文采用多進制的形式,對圖像的嵌入分量組合分別進行二進制和三進制隱藏信息的嵌入,提高了嵌入容量,且所有像素的調(diào)整差額僅限于1;同時在嵌入前,對所有嵌入?yún)^(qū)域中可能溢出的像素,進行調(diào)整到安全區(qū)域的操作,并作為輔助信息進行保存,進一步減少了輔助信息的數(shù)據(jù)量.
RGB真彩色圖像具有R、G、B三個基色分量,每個基色分量直接決定其基色的強度,且都是獨立、清晰的灰度圖像.在自然圖像中,一般相鄰的兩個像素值比較接近[6,7],利用這種特性,取 RGB 圖像中某一分量中的任意一像素值P,同時獲取P的上、下、左、右四個像素值的平均值到+Pright),如果 P 是奇數(shù)像素,如圖 1,則 Pup,Pdown,Pleft和Pright必是偶數(shù)像素.文獻[8]對多種預(yù)測方案進行比較,證明十字預(yù)測法(又稱菱形預(yù)測)的預(yù)測準(zhǔn)確率最高.為了保證能正確恢復(fù)原始圖像,將R分為兩組,即奇數(shù)組和偶數(shù)組,在對奇數(shù)組的像素進行數(shù)據(jù)嵌入時,不得修改偶數(shù)組的像素值,在完成奇數(shù)組的嵌入后,再進行偶數(shù)組的嵌入,當(dāng)然此時也不能再修改奇數(shù)組的數(shù)據(jù).恢復(fù)圖像的過程是先恢復(fù)偶數(shù)像素組的數(shù)據(jù),再恢復(fù)奇數(shù)像素組的數(shù)據(jù).

圖1 像素分組圖(☆為奇數(shù)像素,★為偶數(shù)像素)Fig.1 Pixel grouping figure(☆Odd pixel,★Even pixel)
首先利用十字預(yù)測方法生成相應(yīng)的直方圖.選取200×200Lena彩色圖像色彩的紅色分量的奇數(shù)組數(shù)據(jù)Rodd和藍色分量的奇數(shù)組數(shù)據(jù)Bodd,分別求取它們的預(yù)測誤差R'odd和B'odd,計算:

得到十字預(yù)測誤差直方圖如圖2,峰值為6082,次峰值-1和1處的元素個數(shù)分別為3967和4154,一般算法利用其中的一個或兩個峰值[2,3]嵌入水印,這樣會使得大量的次峰值在嵌入時進行搬移,嵌入效率不夠高.本算法采用二次嵌入的方法,盡量多地利用直方圖中的峰值進行嵌入.算法思想為:第一次搬移后,對于RBodd為0的點進行三進制的嵌入,第二次搬移后,對于 RBodd為-2、3的點進行二進制的嵌入.

圖2 Lena RB分量十字預(yù)測誤差直方圖Fig.2 Lena's RB components histogram of cross prediction error
定位圖是為了方便記錄修改和未修改像素所在的位置而設(shè)置的,但是卻增加了嵌入的負載,所以本算法為避免使用定位圖,事先對所有可能溢出的像素做預(yù)處理.因為RGB真彩色圖像每個像素值的范圍為0~255,而本算法對所有像素只可能做+1或-1操作,那么涉及到0和255可能出現(xiàn)溢出,則在嵌入之前做如下調(diào)整:
(i)對需要做-1操作的所有像素,建立一個數(shù)組A,記錄flag,flag的值由(2)式確定:

(ii)對需要做+1操作的所有像素,建立一個數(shù)組B,記錄flag,flag的值由(3)式確定:

這樣只需要關(guān)注為數(shù)較少的0、1、254、255像素值,而且只需要記錄需要調(diào)整的那部分像素的狀態(tài)信息,所需要的輔助信息大大減少.
在嵌入數(shù)據(jù)的時候,可以按照隨機數(shù)生成公式計算的結(jié)果,決定嵌入的順序.本算法采用分形生長圖形[9]的結(jié)果決定嵌入的順序,具體如下:
設(shè)定迭代公式為:

Z0=x+yi,x為平面某點的橫向坐標(biāo),y為平面某點的縱向坐標(biāo),然后對(4)式反復(fù)迭代:

將計算出來的Zi(i=1,2,…,n)的實部和虛部再分別映射回平面對應(yīng)的坐標(biāo),在該坐標(biāo)處打點,例如ci=-0.46+0.57i,取圖形中心作為迭代起點的中間圖形如圖3,如果迭代繼續(xù)下去,黑點會逐步覆蓋整個圖像.

圖3 ci=-0.46+0.57i的圖形Fig.3 The picture of ci=-0.46+0.57i
該算法是在復(fù)平面上繪制的,x和y分別是圖形的橫向和縱向坐標(biāo),由z0=x+yi得到z0的初值,考慮x和y的單位是像素,且值一般很大,這樣會導(dǎo)致在迭代中很快溢出或發(fā)散,所以預(yù)先需要將實部x和虛部 y分別映射到[- 1.5,1.5](當(dāng)然,這個范圍可調(diào)整,原則是不要太大),以保證迭代能正常地進行.
本算法的嵌入順序與迭代算法的打點順序一致,當(dāng)打點發(fā)散時,則將剩下的未嵌入信息的像素按照隨機數(shù)的生成公式進行嵌入.
在R,G,B三分量中隨機選取一組進行嵌入,在此以R,B為例.設(shè):

L1和R1的設(shè)定可根據(jù)實際情況決定,例如:取L1=-6,R1=6,經(jīng)過上述變化,將處理過的Rodd帶入(5)式后,RBodd的-1,1兩處值都為0.當(dāng)然搬移之前,將所有L1≤RBodd≤-1范圍內(nèi)可能發(fā)生溢出的Rodd分量中的0,1像素,按照(2)式進行預(yù)先處理;在1≤RBodd≤R1的像素內(nèi)可能發(fā)生溢出的Rodd分量中的254、255像素,按照(3)式進行預(yù)先處理.
此時采用三進制的形式運用(6)式對-1,0,1三處的峰值進行嵌入.
設(shè) S為嵌入信息流,它的值為(0,1,2),

由(5)式,次峰值由原來的-1,1處移動到-2,2處,此時為再次利用它進行嵌入,必須先按照(7)式調(diào)整 Bodd,

在搬移之前,將所有3≤RBodd≤R2范圍內(nèi)可能發(fā)生溢出的Bodd分量中的0,1像素,按照(2)式進行預(yù)先處理;在L2≤RBodd≤-3的像素內(nèi)可能發(fā)生溢出的Bodd分量中的254,255像素,按照(3)式進行預(yù)先處理.此時,RBodd處的-2,2值都為0,則可采用二進制的形式運用(8)式對-2,2處的峰值進行嵌入.設(shè)m為嵌入信息流,它的值為(0,1),

此時完成對紅色分量和藍色分量奇數(shù)部分的嵌入,之后采用同樣的方法對紅色分量和藍色分量的偶數(shù)部分進行嵌入.
為了進一步提高嵌入容量,對G分量做如下調(diào)整:首先選定一段區(qū)域存放前面計算的輔助信息和在G分量中可能溢出的0,1,254,255信息(依然運用式(2)和(3)),這個數(shù)據(jù)一般都不多,然后對剩下的G分量求取RGodd,獲取其中最高的兩個峰值進行嵌入版權(quán)信息的操作.例如,設(shè)最高的兩個峰值在RGodd的0,-1處,則按照(9)式進行移位操作:

然后采用二進制的形式運用(10)式對0,-1處的峰值進行嵌入:

最后,用同樣的方式對G的偶數(shù)部分進行嵌入.
1)從G分量中提取3類輔助信息:生成分形生長圖形需要的迭代初值ci、所有可能溢出的0,1序列及數(shù)量、所有的Li(i=1~3)和Ri(i=1~3),以備后面恢復(fù)圖像使用;
2)計算RGodd,利用迭代初值ci獲取分形生長圖形后,根據(jù)此圖形的生成順序得到二進制的版權(quán)信息流,最后,將之前為防止溢出調(diào)整的像素值依據(jù)前面得到的輔助信息進行歸位.G的偶數(shù)部分的調(diào)整同上;
3)計算RBodd,先根據(jù)分形生長圖的生成順序獲取二進制的版權(quán)信息流,再獲取三進制的版權(quán)信息流,并按照此順序還原圖像.
采用MATLAB 7.0開發(fā)平臺進行仿真實驗,圖4是選取的幾個典型例子,對所選的4幅圖像在紅綠藍分量嵌入隱藏信息,能保持較高的嵌入率和圖像質(zhì)量,如圖5所示.表1列出了本算法與文獻[5]、文獻[10]的實驗結(jié)果對比.實驗結(jié)果表明:本算法充分利用十字預(yù)測方法獲取差分直方圖,對圖像進行兩次不同進制版本信息的嵌入,嵌入后的圖像質(zhì)量有明顯提高,且嵌入率也有一定增加.

圖4 原始圖像示例Fig.4 Original images

圖5 嵌入信息的圖像Fig.5 Stego-images

表1 嵌入容量和PSNR對比結(jié)果Tab.1 Comparison results of embedding capacity and PSNR
本文針對Tian差值擴展算法存在過分修改像素值、嵌入容量不高等缺點,提出了一種基于多進制嵌入的彩色圖像可逆數(shù)據(jù)隱藏算法.利用十字預(yù)測法獲取較高的直方圖峰值,然后將版權(quán)信息變換成二進制和三進制信息,分兩次嵌入到多個峰值中;同時在嵌入之前有針對性地對所有可能溢出的像素進行調(diào)整,并將這部分信息作為輔助信息優(yōu)先存放,替代了定位圖;嵌入的順序與分形生長圖形計算的結(jié)果一致,提高了保密性;所有原始圖像的像素最多被調(diào)整一個像素值,因此圖像的PSNR值較同類算法高.實驗結(jié)果表明:本文算法在保證圖像質(zhì)量的同時,嵌入的容量有一定的提高.算法的不足之處在于,算法進行了二次嵌入,對圖像像素的修改較廣泛,如果在第二次嵌入時,能將部分第一次嵌入時調(diào)整過的像素進行適當(dāng)回調(diào)或還原處理,則圖像的保真度可以得到較大提高.
[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]熊志勇,王江晴.基于適應(yīng)差值擴展的彩色圖像可逆數(shù)據(jù)隱藏[J].光電子·激光,2011,22(1):120-126.
[3]熊志勇,高志榮,姜卓睿.基于整數(shù)小波變換和差值擴展的可逆數(shù)據(jù)隱藏[J].中南民族大學(xué)學(xué)報:自然科學(xué)版,2010,29(3):68-74.
[4]熊志勇,李 延.基于直方圖平移和定向嵌入的可逆數(shù)據(jù)隱藏[J].中南民族大學(xué)學(xué)報:自然科學(xué)版,2013,32(3):82-89.
[5]Li Zhuo,Chen Xiaoping,Pan Xuezeng,et al.Lossless data hiding scheme based on adjacent pixel difference[C]//IEEE.Proceedings of the 2009 International Conference on Computer Engineering and Technology,ICCET 2009.New York:CS Press,2009:588-592.
[6]Yang Bian,Lu Zheming,Xu Dianguo,et al.Neighboring pixels based low complexity predictive vector quantization algorithms for image coding[J].Acta Electronica Sinica(電子學(xué)報),2003,5:707-710.
[7]楊 邊,陸哲明,徐殿國,等.基于鄰近像素的低復(fù)雜度預(yù)測矢量量化圖像壓縮編碼算法[J].電子學(xué)報,2003,5:707-710.
[8]Sachnev V,Hyong Joong Kim,Jeho Nam,et al.Reversible watermarking algorithm using sorting and prediction[J].IEEE Transactions on Circuits and Systems for Video Technology,2009,19(7):989-999.
[9]曾文曲,王向陽.分形理論與分形的計算機模擬[M].沈陽:東北大學(xué)出版社,2001:108-122.
[10]Chen Kangkang,Wang Jianjun.A novel reversible data hiding based on exploiting modification direction algorithm[J].Multimedia Information Networking and Security,2009,1(18-20):514-518.