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