蔣嬋鈺,張紫欣,秦 川
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
信息隱藏技術(shù)通常是將一個字符串的消息(如數(shù)字簽名)嵌入到一個數(shù)字對象(如圖像、音頻或視頻信號)[1]中,且人們無法感知到數(shù)字對象的變化,因而被廣泛應(yīng)用于版權(quán)保護(hù)、指紋識別、身份驗證和秘密通信等領(lǐng)域。近年來,研究人員提出了很多信息隱藏算法。Zhang等[2]提出了一種新的修改方向的(exploiting modification direction, EMD)方法,該方法利用魔術(shù)矩陣作為參考,修改載體圖像的最低有效位(least significant bit, LSB)。Chang等[3]提出了一種基于(7, 4)漢明碼的高嵌入率的信息隱藏方法,通過信息隱藏技術(shù)可以無損地提取出嵌入的秘密信息,但無法避免數(shù)字對象在恢復(fù)過程中遭到的破壞。因此,一種可逆信息隱藏(reversible dataing hiding, RDH)技術(shù)受到了人們的關(guān)注,該技術(shù)不僅可以提取嵌入的信息,而且可以無損地恢復(fù)原始的載體圖像。到目前為止,RDH算法主要采用3種技術(shù),即無損壓縮[4-5]、差分?jǐn)U展(DE)[6-7]和直方圖平移(HS)[8-14]。Celik等[5]提出,通過無損壓縮的方式來壓縮載體圖像,從而創(chuàng)建冗余空間來嵌入秘密信息。Tian[6]提出了差分?jǐn)U展法,該方法是將相鄰像素之間的差異加倍,以生成新的最低有效位平面來嵌入秘密信息。Ni等[9]提出了直方圖平移法,該方法用直方圖呈現(xiàn)像素點出現(xiàn)的頻率,將出現(xiàn)次數(shù)最多的像素點作為峰值點,將出現(xiàn)次數(shù)為0的像素點作為零值點,并通過修改直方圖的峰值點對應(yīng)的像素值來實現(xiàn)信息的隱藏。但是,以上這些方法也存在一些不足。
一方面,一些提出的可逆方法缺乏靈活性和便利性。例如,文獻(xiàn)[12]是利用峰值點來嵌入數(shù)據(jù),雖然此方法有效,但有時只需在水印區(qū)域嵌入很少的信息,這種以犧牲所有的誤差值(在峰值點與其對應(yīng)的零點之間移動)為代價來容納這么少的數(shù)據(jù)是不可取的。這些方法一般都不能根據(jù)具體的應(yīng)用場景找到最優(yōu)的嵌入率、恢復(fù)圖像的峰值信噪比(peak signal-to-noise ratio,PSNR)和嵌入圖像的PSNR的平衡點。
另一方面,在數(shù)據(jù)嵌入后,可逆信息隱藏的技術(shù)有助于提高圖像質(zhì)量但嵌入率較低,而不可逆信息隱藏方法能取得更高的嵌入率。如果只采用傳統(tǒng)的可逆信息隱藏算法,就不能對信息提供一個大范圍的嵌入率選擇,所以靈活性不夠。
基于這些考慮,本文將可逆信息隱藏方法與不可逆信息隱藏方法相結(jié)合,以獲得失真小、嵌入率高的效果,實現(xiàn)多目標(biāo)優(yōu)化。與其他方法相比,數(shù)據(jù)嵌入之前,我們可以調(diào)整嵌入率,嵌入圖像的PSNR,恢復(fù)圖像的PSNR的權(quán)值,以獲得不同的結(jié)果來適應(yīng)不同的應(yīng)用需求。
本文算法的框架如圖1所示,由圖像預(yù)處理、數(shù)據(jù)隱藏和數(shù)據(jù)提取/圖像恢復(fù)3個階段組成。在預(yù)處理階段,先對原始圖像進(jìn)行塊分類。在數(shù)據(jù)隱藏階段,數(shù)據(jù)隱藏者利用數(shù)據(jù)隱藏密鑰,采用預(yù)測誤差直方圖平移法和魔方矩陣編碼法,將秘密數(shù)據(jù)嵌入到經(jīng)過預(yù)處理后的圖像塊中。紋理平滑的圖像塊即為可逆信息隱藏圖像塊,對其用預(yù)測誤差直方圖平移法;紋理復(fù)雜的圖像塊即為不可逆信息隱藏圖像塊,對其用魔術(shù)矩陣編碼法。在最后數(shù)據(jù)提取/圖像恢復(fù)階段,當(dāng)擁有數(shù)據(jù)隱藏密鑰時,接收者可以提取出嵌入的秘密數(shù)據(jù)并且恢復(fù)圖像。
圖1 本文算法框架Fig.1 Framework of the proposed algorithm
以8位灰度圖像為例,假設(shè)原始未壓縮圖像Io的大小為M×N(高×寬)。Io的每個像素記為pi,j,其中i,j表示像素的坐標(biāo)位置,且 1≤i≤M, 1 ≤j≤N。為了簡化 說明,假設(shè)M和N都是2的冪。為了評估不同圖像塊的復(fù)雜度,對原始圖像進(jìn)行如下處理。
首先,將原始圖像Io分成若干個大小為s×s的不重疊塊。
其次,使用Sobel算子計算圖像塊Bm(m=中每個像素的復(fù)雜度大小,將每個像素的復(fù)雜度累加得到圖像塊Bm的復(fù)雜度并且記為Gm,并設(shè)置閾值GT。如果Gm≤GT,則將圖像塊Bm視為紋理光滑的圖像塊,歸類為可逆信息隱藏圖像塊;如果Gm>GT,則將圖像塊Bm視為紋理復(fù)雜的圖像塊,歸類為不可逆信息隱藏圖像塊。
最后,生成一個大小為(M/s2)×(N/s2)的矩陣U,用于區(qū)分當(dāng)前塊是可逆信息隱藏圖像塊還是不可逆信息隱藏圖像塊,以便于后續(xù)提取數(shù)據(jù)和恢復(fù)圖像。
假設(shè)有Q塊的復(fù)雜度滿足Gm≤GT,即可逆信息隱藏圖像塊的數(shù)量為Q。對于每個可逆圖像塊Bm,第一行和第一列的像素都不做修改,剩下的像素按照光柵掃描順序進(jìn)行預(yù)測。Bm中所有預(yù)測誤差可以收集起來生成一個塊預(yù)測誤差直方圖(block prediction error histogram,BPEH)。為了能便于正確提取數(shù)據(jù)和恢復(fù)圖像,第一行和第一列的像素都不用于嵌入數(shù)據(jù)。假設(shè)塊Bm由Nm個不同的預(yù)測誤差值組成,即BPEH中有Nm個非空柱。然后,找出兩個最高的峰值柱,并將它們分別記為左峰值Vpl和右峰值Vpr,同時將所有預(yù)測誤差值大于Vpr的直方柱向右移動一個單位,將所有預(yù)測誤差值小于Vpl的直方柱向左移動一個單位。整個嵌入規(guī)則可以表示為
式中Q為可逆信息隱藏圖像塊的數(shù)量。同時,將塊Bm中滿足的總數(shù)表示為x,并假設(shè)秘密數(shù)據(jù)具有相等的概率,即為0和1。那么,所有可逆信息隱藏圖像塊的含密圖像塊總失真D1可以表示為
由于有Q個可逆信息隱藏圖像塊,其中MN/s4塊用于記錄原始LSB值,所以剩余的塊用于不可逆信息隱藏。所有不可逆信息隱藏圖像塊的數(shù)據(jù)嵌入容量C2記為
嵌入效率Eδ=[(2n+1)×log2(2n+1)]/2n表示嵌入比特數(shù)與由于數(shù)據(jù)嵌入而產(chǎn)生的畸變的比特數(shù)之比。由于Eδ表示了每改變一個像素能嵌入多少數(shù)據(jù),所以所有不可逆信息隱藏圖像塊的塊失真D2可以表示為
本文綜合考慮含密圖像和恢復(fù)圖像,研究基于拉格朗日乘數(shù)法的圖像性能最優(yōu)問題。假設(shè),除了可逆信息隱藏塊數(shù)目Q和可逆信息隱藏塊的嵌入率之外所有的參數(shù)都是已知的。在這種情況下,可以得到相應(yīng)的可逆塊的數(shù)量,該數(shù)量可表示為
( ω1、 ω2、 ω3分別為嵌入率R、含密圖像的峰值信噪比PSNR、恢復(fù)圖像的峰值信噪比PSNR的 權(quán)重)。
假設(shè)圖像的每個分塊都嵌入了數(shù)據(jù),則嵌入過程由以下5個步驟組成。
(1)將原始圖像劃分成若干互不重疊的大小為s×s的塊,并且按照1.2節(jié)中提到的方法對每個塊進(jìn)行處理,得到復(fù)雜度。
(2)使用一個矩陣U來記錄平滑圖像塊與復(fù)雜圖像塊的位置。
(3)除了最前面的HW/s4塊之外,將剩下的圖像塊按照復(fù)雜度值從小到大進(jìn)行排序,復(fù)雜度值較低的Q塊作為可逆信息隱藏圖像塊。
(4)在可逆信息隱藏圖像塊中進(jìn)行數(shù)據(jù)嵌入??赡嫘畔㈦[藏圖像塊的嵌入率為m1,每個塊都應(yīng)該嵌入m1s2比特的秘密數(shù)據(jù)。因此,應(yīng)該選擇誤差值點對應(yīng)的數(shù)目有m1s2個的預(yù)測誤差值,這說明如果繼續(xù)使用峰值點的話,可能需要消耗更多的成本,因為峰值點和零點之間的所有誤差值都將被移動,以此來容納秘密數(shù)據(jù)。為了解決這個問題,本文使用一個足夠的空間來嵌入秘密數(shù)據(jù)的誤差序列峰值點,或者找兩個總和是接近我們需要嵌入秘密數(shù)據(jù)數(shù)目的直方柱。設(shè)eu,v表示預(yù)測誤差,b表示要被嵌入的秘密數(shù)據(jù),并且b∈{0,1} ,具體的數(shù)據(jù)嵌入方法實現(xiàn)如下:
(5)在不可逆信息隱藏圖像塊中進(jìn)行數(shù)據(jù)嵌入。使用n個像素來攜帶一個(2n+ 1)進(jìn)制比特的秘密數(shù)據(jù)。要嵌入秘密數(shù)據(jù),首先將每個秘密數(shù)據(jù)轉(zhuǎn)換為(2n+ 1)進(jìn)制。圖2是n= 2時的一個魔術(shù)矩陣,坐標(biāo)(a,b)代表像素對{a,b}在魔術(shù)矩陣中的位置,該位置對應(yīng)的數(shù)據(jù)記為D(a,b)。
圖2 魔術(shù)矩陣Fig.2 Magic matrix
如果嵌入的信息與數(shù)據(jù)D(a,b) 相同,則原始像素值保持不變。
如果嵌入的信息為數(shù)據(jù)D(a,b+1) ,則像素值修改為數(shù)據(jù)D(a,b+1) 。
如果嵌入的信息為數(shù)據(jù)D(a,b?1) ,則像素值修改為數(shù)據(jù)D(a,b?1) 。
如果嵌入的信息為數(shù)據(jù)D(a+1,b) ,則像素值修改為數(shù)據(jù)D(a+1,b) 。
如果嵌入的信息為數(shù)據(jù)D(a?1,b) ,則像素值 修改為數(shù)據(jù)D(a?1,b) 。
數(shù)據(jù)提取和圖像恢復(fù)過程由以下4個步驟組成。
(1)如果接收方擁有數(shù)據(jù)隱藏密鑰,則接收方可以獲得關(guān)于圖像被劃分為HW/s2塊的非重疊塊的信息。然后,在前HW/s4塊中可以得到矩陣U的信息,于是可以知道紋理平滑的圖像塊和紋理復(fù)雜的圖像塊的位置。
(2)可逆信息隱藏塊數(shù)據(jù)提取。首先,可以通過計算得到預(yù)測誤差;然后,在預(yù)測誤差直方圖中,可以找到用于在原始圖像中嵌入信息的兩個點
(3)不可逆信息隱藏圖像塊中數(shù)據(jù)提取。假設(shè)n=2 ,從第一列和第一行開始提取數(shù)據(jù)。通過查找像素對坐標(biāo)(a,b)對應(yīng)的秘密數(shù)據(jù)D(a,b)來提取秘密信息,但不可逆信息隱藏圖像塊中的原始像素?zé)o法恢復(fù)。
(4)圖像恢復(fù)。將前HW/s4塊中像素的LSB替換為步驟2和步驟3中提取的前MN/s2位秘密 數(shù)據(jù),同時恢復(fù)可逆信息隱藏圖像塊。
本文選取USC-SIPI圖像庫中的5個常用的標(biāo)準(zhǔn)圖像Lena、Baboon、Lake、House、Man作為測試圖像,每幅圖像的大小均為512 像素×512 像素,如圖3所示。
圖3 標(biāo)準(zhǔn)測試圖像Fig.3 Standard test images
研究嵌入率R、含密圖像的峰值信噪比PSNR、恢復(fù)圖像的峰值信噪比PSNR 的權(quán)重ω1、 ω2、 ω3對于實驗結(jié)果的影響,即 ω1、 ω2、ω3的大小對可逆信息隱藏圖像塊Q值的影響。圖3是可逆信息隱藏圖像塊的嵌入率m1=0.2 時的實驗結(jié)果,每個可逆信息隱藏圖像塊預(yù)期能容納51位秘密數(shù)據(jù)。分別給 ω1、 ω2、 ω3設(shè)置不同的權(quán)重,測試 ω1的權(quán)重顯著上升是否會直接影響嵌入容量,同理, ω2的權(quán)重變化是否會直接影響含密圖像的PSNR, ω3的權(quán)重變化是否會直接影響恢復(fù)圖像的PSNR,實驗結(jié)果如表1所示。從表1可以很明顯地看出,當(dāng) ω1很大,ω2、 ω3則會相對較小,此時的嵌入率會高于 ω1較小的時候。同理也可以應(yīng)用到 ω2、 ω3中。
表1 不同ω1,ω2,ω3情況下Lena的性能Tab.1 Performance for Lena with different emphasis on weights of ω1, ω2, ω3
我們在嵌入率Rr 、含密圖像的PSNR以及恢復(fù)圖像的PSNR方面與文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]和文獻(xiàn)[11]中提出的方法進(jìn)行了比較,結(jié)果如表2所示。從表2中可以清晰地看出,對于含密圖像,本文的方法具有更高的平均PSNR值以及更高的嵌入率。
表2 本文提出方法與[8]、[9]、[10]、[11]的總體比較Tab.2 Overall comparison between [8], [9], [10], [11] and our proposed method
本文將可逆信息隱藏算法和不可逆信息隱藏算法相結(jié)合,提出了一種嵌入容量大、圖像視覺質(zhì)量高的明文域信息隱藏算法。在數(shù)據(jù)嵌入之前,預(yù)先設(shè)置不同的嵌入率、含密圖像的PSNR和恢復(fù)圖像的PSNR的權(quán)重,得到相應(yīng)的采用可逆信息隱藏算法的可逆塊和采用不可逆信息隱藏方法的不可逆塊的比例。在嵌入階段,采用2種算法進(jìn)行信息隱藏。最后,提取出秘密數(shù)據(jù),恢復(fù)圖像。與其他傳統(tǒng)算法相比,本文算法在嵌入率和含密圖像的視覺質(zhì)量方面都有較好的性能。未來我們希望能采用不同的信息隱藏算法來優(yōu)化多目標(biāo)優(yōu)化的信息隱藏算法。此外,我們還將對該算法從明文域拓展到密文域,從而進(jìn)一步增強(qiáng)信息隱藏算法的安全性。