熊志勇,李 彪,王江晴
(中南民族大學(xué) 計算機(jī)科學(xué)學(xué)院, 武漢 430074)
可逆信息隱藏[1,2]是確保信息安全的重要技術(shù)之一,可逆信息隱藏是指提取端在完整提取秘密信息的同時能夠無損地恢復(fù)原始圖像.可逆信息隱藏在許多領(lǐng)域都有應(yīng)用,如軍事、醫(yī)療等諸多領(lǐng)域?qū)τ谛畔㈦[藏后的圖像失真是不可接受的,因此這些領(lǐng)域急需一些高效的可逆信息隱藏算法,這也給信息隱藏的理論研究者們提供了重要的研究意義和極高的研究價值.
差值擴(kuò)展[3,4]和直方圖平移[5-7]是可逆信息隱藏兩大主要研究方法,基于這兩種理論衍生出許多高效算法,如預(yù)測誤差擴(kuò)展[8-10]和預(yù)測誤差直方圖平移[11,12],而像素排序[13-17]是另一種圖像高保真的可逆信息隱藏算法.相對于傳統(tǒng)的像素排序算法,文獻(xiàn)[15]提出一種基于像素位置的差值計算方法和一種新的差值擴(kuò)展機(jī)制,算法利用頻率最高的兩個差值進(jìn)行擴(kuò)展有效提高了像素排序算法的嵌入容量,但是其一維差值擴(kuò)展方法不能很好地控制圖像失真.文獻(xiàn)[13]采用3×3圖像分塊,用分塊鄰近的兩行兩列像素對當(dāng)前分塊復(fù)雜度進(jìn)行評價,運(yùn)用兩種差值擴(kuò)展機(jī)制并結(jié)合雙閾值,最后修改像素分塊中最大、次大、最小、次小四個像素值嵌入秘密信息,該算法充分結(jié)合了兩種差值擴(kuò)展機(jī)制的優(yōu)點,但是對于圖像塊紋理復(fù)雜度的評價不夠理想.文獻(xiàn)[17]運(yùn)用動態(tài)像素塊劃分機(jī)制很好地區(qū)分了圖像塊的平滑區(qū)域和復(fù)雜區(qū)域,充分利用圖像平滑區(qū)域嵌入數(shù)據(jù),但是采用單一的一維差值擴(kuò)展機(jī)制不能保證較高的圖像質(zhì)量.
為減小含密圖像失真,本文提出一種基于動態(tài)像素塊劃分和二維像素預(yù)測誤差對擴(kuò)展的可逆信息隱藏算法,利用分塊中參照像素計算當(dāng)前分塊的紋理復(fù)雜度,根據(jù)得到的紋理復(fù)雜度以及給定的閾值對圖像進(jìn)行動態(tài)二次分塊,忽略圖像粗糙區(qū)域像素,充分利用平滑區(qū)域像素嵌入秘密信息.利用像素排序算法計算預(yù)測誤差并組成預(yù)測誤差對,結(jié)合一種新的預(yù)測誤差對擴(kuò)展機(jī)制,丟棄失真較大的擴(kuò)展方向,選擇頻率較高的預(yù)測誤差對進(jìn)行擴(kuò)展,以有效提高算法的整體性能.
像素排序算法首先對圖像進(jìn)行分塊然后逐塊處理嵌入秘密信息,分塊大小決定著載體的嵌入容量和圖像質(zhì)量.在Peng等人提出的算法中,以常用灰度圖像Lena為例,不同分塊下對應(yīng)的嵌入容量和PSNR如圖1所示,分析可知分塊大小與嵌入容量成反比,較大嵌入容量需要采用較小圖像分塊,較小嵌入容量則需要采用較大圖像分塊.圖像分塊較大,減小紋理復(fù)雜區(qū)域擴(kuò)展像素量以提高含密圖像質(zhì)量,然而忽略掉平滑區(qū)域許多相似可用來嵌入數(shù)據(jù)的像素又會降低嵌入容量;圖像分塊較小,能充分利用平滑區(qū)域鄰近像素相似性增加算法嵌入容量,但同時增加紋理復(fù)雜區(qū)域擴(kuò)展像素量使圖像失真更加嚴(yán)重.
圖1 Peng等人算法中Lena圖像不同分塊下的嵌入容量和PSNRFig.1 The EC and PSNR under different blocks of Lena image in the algorithm proposed by Peng et al.
為解決上述問題,對圖像進(jìn)行動態(tài)二次分塊處理,有效區(qū)分圖像平滑區(qū)域和復(fù)雜區(qū)域,本文根據(jù)4×4圖像分塊中紋理復(fù)雜度的計算并結(jié)合雙閾值判斷該區(qū)域是否進(jìn)行二次分塊.在動態(tài)二次分塊中,對平滑區(qū)域采用2×2圖像分塊,對紋理復(fù)雜區(qū)域采用4×4圖像分塊,用NL表示較大圖像分塊的復(fù)雜度.根據(jù)不同的灰度圖像及嵌入容量設(shè)定雙閾值T1、T2,T1、T2表示紋理復(fù)雜圖像塊和平滑圖像塊的區(qū)分閾值,保證T1小于等于T2的情況下T1與T2之間沒有特定關(guān)系.
首先把原始圖像劃分成較大圖像塊,然后將該圖像塊進(jìn)行預(yù)分塊,對預(yù)分塊中像素進(jìn)行排序,選出4個較小圖像塊排序后中間像素的最大值和最小值,計算最大值和最小值的絕對差值得到當(dāng)前較大圖像塊的紋理復(fù)雜度NL.動態(tài)分塊和NL的計算如圖2.
圖2 計算NL與動態(tài)分塊Fig.2 NL calculation and dynamic block
計算NL時選取的像素屬于中間參照像素,這些參照像素在信息嵌入前后值保持不變,因此保證了算法的可逆性.然后利用計算出來的紋理復(fù)雜度NL和雙閾值T1、T2之間的大小關(guān)系將圖像塊分為3類.
1)NL<=T1,當(dāng)前圖像塊定義為平滑區(qū)域圖像塊,需要進(jìn)行二次分塊并將其分為4個較小圖像塊,利用像素排序算法計算差值組成預(yù)測誤差對,最后通過預(yù)測誤差對擴(kuò)展嵌入數(shù)據(jù).
2)T1 3)NL>T2,當(dāng)前圖像塊屬于粗糙域圖像塊,不需要對當(dāng)前分塊做任何處理,該圖像塊中不嵌入秘密數(shù)據(jù). PEmax=xσ(n)-xσ(n-1), (1) 運(yùn)用得到的差值生成預(yù)測誤差直方圖,選取直方圖峰值點嵌入信息,這種計算方法得到的差值總是大于等于0,直方圖峰值點一般為1,因此選擇峰值點1作為信息嵌入點,為保證算法可逆性,大于等于1的差值需要向差值增大方向移動一個單位.秘密信息嵌入公式: (2) 分塊中最小像素處理方法和最大像素處理方法類似,利用次小像素作為參照像素計算差值,差值計算公式: PEmin=xσ(1)-xσ(2), (3) 運(yùn)用得到的差值生成預(yù)測誤差直方圖,選取直方圖峰值點嵌入信息,這種計算方法得到的差值總是小于等于0,直方圖峰值點一般為-1,因此選擇峰值點-1作為信息嵌入點,為保證算法可逆性,小于等于-1的差值需要向差值減小的方向移動一個單位.秘密信息嵌入公式為: (4) 后來Peng等人提出一種基于像素位置的差值計算方法,差值計算公式: dmax=xu-xv,(u=min(σ(n),σ(n-1)), v=max (σ(n),σ(n-1))) . (5) 這種計算方法得到的差值有正負(fù)之分,直方圖可以向兩側(cè)平移,因此可以選擇直方圖的峰值點和次峰值點進(jìn)行信息嵌入有效增加嵌入容量,但是計算得到的差值比較分散. 為了使預(yù)測誤差對更加集中,提出與傳統(tǒng)像素排序類似的差值計算方法,計算得到的差值都大于等于0,使更多差值集中于1以便得到更多可用來嵌入數(shù)據(jù)的預(yù)測誤差對,用xσ(2)和xσ(n-1)作為參照像素分別計算xσ(2)與xσ(1)之間的差值PEmin,xσ(n-1)與xσ(n)之間的差值PEmax,差值計算公式: PEmin=xσ(2)-xσ(1), (6) PEmax=xσ(n)-xσ(n-1). (7) 通過公式(6)、(7)計算得到差值PEmin、PEmax.與傳統(tǒng)單個差值擴(kuò)展和直方圖平移不同,本文采用預(yù)測誤差對擴(kuò)展方法,將PEmin與PEmax組成一對預(yù)測誤差對(PEmin,PEmax),若預(yù)測誤差對在擴(kuò)展范圍內(nèi),則根據(jù)嵌入秘密信息及預(yù)測誤差對擴(kuò)展機(jī)制對(PEmin,PEmax)進(jìn)行擴(kuò)展,修改xσ(1)、xσ(n)的值嵌入秘密信息. 傳統(tǒng)基于像素排序的差值擴(kuò)展都是對單個差值進(jìn)行擴(kuò)展嵌入1位秘密信息,本文采用一種新的二維差值擴(kuò)展技術(shù),同時處理兩個差值嵌入秘密信息,提高算法效率.統(tǒng)計生成的預(yù)測誤差對頻數(shù)并生成預(yù)測誤差對直方圖.根據(jù)預(yù)測誤差對頻數(shù)統(tǒng)計情況選擇頻數(shù)較大的一些預(yù)測誤差對進(jìn)行擴(kuò)展,再根據(jù)紋理復(fù)雜度對圖像進(jìn)行動態(tài)二次分塊之后,預(yù)測誤差大于10的頻數(shù)已經(jīng)極小,因此圖3只列出了頻數(shù)較大的部分差值對分布情況,頻數(shù)較小或者為零的差值對沒有列出. 圖3 部分差值對分布Fig.3 Partial differential pair distribution 根據(jù)計算的預(yù)測誤差值可得一般灰度圖像預(yù)測誤差對分布集中在(1,1)附近,因此充分利用(1,1)及其附近的差值對進(jìn)行擴(kuò)展嵌入秘密信息,擴(kuò)展方式如圖4. 圖4 差值對擴(kuò)展Fig.4 Prediction-error pair expansion 棄掉失真較大的預(yù)測誤差對(1,1)到(2,2)擴(kuò)展方向,同時擴(kuò)展(2,2)這一對預(yù)測誤差嵌入一位秘密信息.差值2在傳統(tǒng)差值擴(kuò)展方法中只能平移不能嵌入數(shù)據(jù),而在預(yù)測誤差對擴(kuò)展方法中,(2,2)差值對可用來嵌入數(shù)據(jù)增加嵌入容量并不影響圖像質(zhì)量.但是在頻數(shù)相對較大的(0,0)、(0,1)、(1,0)這幾個預(yù)測誤差對中只能選擇其中兩個差值對進(jìn)行擴(kuò)展嵌入數(shù)據(jù).通過差值對頻數(shù)計算得出(1,0)、(0,1)的頻數(shù)比(0,0)的頻數(shù)大,因此選擇(1,0)和(0,1)嵌入數(shù)據(jù),對(0,0)不作任何處理.信息嵌入公式為: (8) 信息提取過程是信息嵌入逆過程,信息提取過程中預(yù)測誤差對還原及提取秘密信息公式為: (9) 1)圖像預(yù)處理. 圖像預(yù)處理解決像素溢出問題,通過信息嵌入公式(8)可知像素修改值為1,因此像素值為255和0的像素可能會發(fā)生溢出.首先順序掃描整個灰度圖像,遇見像素值為255的像素將其像素值改為254并用二進(jìn)制位流記錄當(dāng)前像素修改值1,若遇見像素值為0的像素將其像素值修改為1并用二進(jìn)制位流記錄當(dāng)前像素修改值1,為了保證能無損地恢復(fù)原始圖像,遇見像素值為1和254的像素則不需要對該像素處理,但是需要記錄當(dāng)前像素修改值0并用二進(jìn)制位流表示.記錄每一位調(diào)整值所需位數(shù): (10) b表示記錄每一位調(diào)整值所需位數(shù),V表示調(diào)整值.將得到的溢出調(diào)整信息流加在秘密信息后面隨秘密信息一起嵌入到圖像之中. 2)圖像分塊與信息嵌入. 將圖像分成不重疊4×4圖像塊,同時進(jìn)行二次預(yù)分塊并計算分塊紋理復(fù)雜度NL,根據(jù)NL和雙閾值T1、T2的關(guān)系嵌入秘密信息: 若NL<=T1,說明當(dāng)前分塊為平滑圖像塊,需要進(jìn)行二次分塊,分別計算每一預(yù)分塊中的PEmin,PEmax組成一個預(yù)測誤差對,然后根據(jù)信息嵌入公式(8)嵌入數(shù)據(jù). 若T1 若NL>T2,說明該區(qū)域為粗糙圖像塊,當(dāng)前分塊不需要做任何處理直接跳過. 所有秘密信息嵌入完成后,用B_E記錄最后嵌入信息像素塊,并標(biāo)記頭文件信息嵌入起始位置. 3)頭文件信息嵌入. 1)提取頭文件. 2)圖像分塊和負(fù)載信息提取. 信息提取過程和嵌入過程相反,將圖像分成不重疊4×4圖像分塊,同時進(jìn)行二次預(yù)分塊并計算分塊紋理復(fù)雜度NL,根據(jù)NL和雙閾值T1、T2的關(guān)系提取秘密信息: 若NL<=T1,說明當(dāng)前分塊為平滑圖像塊,需要進(jìn)行二次分塊,分別計算每一較小分塊中的PEmin,PEmax組成一個預(yù)測誤差對,然后根據(jù)公式(9)還原當(dāng)前二次分塊中最大和最小像素并提取相應(yīng)的秘密數(shù)據(jù). 若T1 若NL>T2,說明當(dāng)前分塊為粗糙圖像塊沒有嵌入任何數(shù)據(jù),提取過程直接跳過. 處理每一個圖像分塊提取信息并恢復(fù)對應(yīng)的最大、最小像素值直到信息嵌入結(jié)束標(biāo)記位置E_B. 3)圖像恢復(fù). 根據(jù)提取的負(fù)載信息和嵌入容量,可以得到溢出處理位流信息和嵌入的秘密信息.然后順序掃描整個灰度圖像,遇見像素值為254的像素,說明該像素經(jīng)過預(yù)處理,若溢出處理信息為1則將當(dāng)前像素值修改為255,若溢出處理信息為0則當(dāng)前像素值即為原始像素值;像素值為1的像素,同樣經(jīng)過預(yù)處理,若溢出處理信息為1則將當(dāng)前像素值改為0,若溢出處理信息為0則當(dāng)前像素值即為原始像素值.處理完溢出信息流則能無損地恢復(fù)原始圖像. 運(yùn)用MATLAB開發(fā)環(huán)境對幾幅典型的灰度圖像進(jìn)行仿真實驗,實驗結(jié)果顯示在保證一定嵌入容量的情況下,本文算法能很好地控制圖像失真.圖5是選取的幾幅典型的512×512灰度圖像,圖6是利用提出的算法進(jìn)行信息嵌入后的圖像. 圖5 嵌入信息前Fig.5 Original images 圖6 嵌入信息后Fig.6 Stego images 表1、表2分別列出了嵌入容量為10000bits、20000bits時幾種方法PSNR的對比,表中數(shù)據(jù)顯示在這兩個嵌入容量相同條件下,與近期同類算法相比,本文算法在嵌入信息后能保證更優(yōu)的圖像質(zhì)量. 表2 嵌入20000bits秘密信息時不同方法的PSNR對比 本文采用動態(tài)圖像塊劃分對圖像進(jìn)行動態(tài)二次分塊,結(jié)合雙閾值T1、T2很好地區(qū)分了圖像復(fù)雜區(qū)域和平滑區(qū)域,充分利用平滑區(qū)域像素嵌入秘密信息,有效提高圖像質(zhì)量.根據(jù)相應(yīng)的嵌入容量,T1、T2的設(shè)定參照值如表3、表4. 表3 嵌入容量為10000bits時T1、T2的取值Tab.3 Complexity thresholds T1, T2 for EC of 10000 bits 表4 嵌入容量為20000bits時T1、T2的取值 預(yù)測誤差對擴(kuò)展機(jī)制丟棄失真較大的像素擴(kuò)展方向進(jìn)一步保證了圖像質(zhì)量,圖7顯示了近期不同算法的嵌入容量及其對應(yīng)的PSNR,實驗結(jié)果顯示本文算法整體性能較優(yōu). 圖7 本文算法與其他三種算法性能對比Fig.7 Performance comparison between our method and other three schemes 本文提出了一種基于動態(tài)像素塊劃分和預(yù)測誤差對擴(kuò)展的可逆信息隱藏算法.根據(jù)像素塊局部區(qū)域紋理復(fù)雜度計算對圖像進(jìn)行動態(tài)圖像二次分塊,有效區(qū)分圖像平滑區(qū)域和粗糙區(qū)域,提高了平滑區(qū)域像素利用率降低了粗糙區(qū)域像素利用率.運(yùn)用像素排序算法計算預(yù)測誤差對,選擇頻率最高的預(yù)測誤差對及其附近值進(jìn)行預(yù)測誤差對擴(kuò)展,丟棄失真較大的差值對擴(kuò)展方向,有效提高了算法的整體性能.實驗結(jié)果表明:該算法與文獻(xiàn)[13]、[15]、[17]中算法相比在保證相同嵌入容量的同時能得到較高的含密圖像質(zhì)量,算法整體性能更優(yōu). [1]Khan A, Siddiqa A, Munib S, et al. A recent survey of reversible watermarking techniques[J]. Information sciences, 2014, 279: 251-272. [2]Lin C C, Liu X L, Yuan S M. Reversible data hiding for VQ-compressed images based on search-order coding and state-codebook mapping[J]. Information Sciences, 2015, 293: 314-326. [3]Wu H T, Huang J, Shi Y Q. A reversible data hiding method with contrast enhancement for medical images[J]. Journal of Visual Communication and Image Representation, 2015, 31: 146-153. [4]Ma X, Pan Z, Hu S, et al. High-fidelity reversible data hiding scheme based on multi-predictor sorting and selecting mechanism[J]. Journal of Visual Communication and Image Representation, 2015, 28: 71-82. [5]Gui X, Li X,Yang B. Efficient reversible data hiding based on two-dimensional pixel-intensity-histogram modification[C]//IEEE. Speech and Signal Processing. Florence: IEEE, 2014: 7420-7424. [6]Pan Z, Hu S, Ma X, et al. Reversible data hiding based on local histogram shifting with multilayer embedding[J]. Journal of Visual Communication and Image Representation, 2015, 31: 64-74. [7]Li X, Zhang W, Gui X, et al. Efficient reversible data hiding based on multiple histograms modification[J]. IEEE Transactions on Information Forensics and Security, 2015, 10(9): 2016-2027. [8]Ou B, Li X, Wang J, et al. High-fidelity reversible data hiding based on geodesic path and pairwise prediction-error expansion[J]. Neuro Computing, 2017, 226: 23-34. [9]Ou B, Li X, Zhao Y, et al. Pairwise prediction-error expansion for efficient reversible data hiding[J]. IEEE Transactions on Image Processing, 2013, 22(12), 5010-5021. [10]熊志勇,王江晴.基于分塊最佳預(yù)測的可逆數(shù)據(jù)隱藏[J].光電子·激光,2015,26(8):1568-1574. [11]Cai S, Li X, Liu J, et al. A new reversible data hiding scheme exploiting high-dimensional prediction-error histogram[C]//IEEE. Image Processing. Phoenix: IEEE, 2016: 2732-2736. [12]Rad R M, Wong K, Guo J M. Reversible data hiding by adaptive group modificationon histogram of prediction errors[J]. Signal Processing, 2016, 125: 315-328. [13]Ou B, Li X,Wang J High-fidelity reversible data hiding based on pixel-value-ordering and pairwise prediction-error expansion[J]. Journal of Visual Communication and Image Representation,2016,39: 12-23. [14]Ou B, Li X, Zhao Y, et al. Reversible data hiding using invariant pixel-value-ordering and prediction-error expansion[J]. Signal Processing: Image Communication, 2014, 29(7): 760-772. [15]Peng F, Li X, Yang B. Improved PVO-based reversible data hiding[J]. Digital Signal Processing, 2014, 25: 255-265. [16]Qu X, Kim H J. Pixel-based pixel value ordering predictor for high-fidelity reversibledatahiding[J]. Signal Processing, 2015, 111: 249-260. [17]Wang X, Ding J, Pei Q. A novel reversible image data hiding scheme based on pixel value ordering and dynamic pixel block partition[J]. Information Sciences,2015, 310: 16-35.1.2 像素排序
2 預(yù)測誤差對擴(kuò)展
3 信息嵌入與提取
3.1 信息嵌入
3.2 信息提取
4 仿真實驗
5 結(jié)語