羅劍高,韓國(guó)強(qiáng),沃焱
?
新穎的差值擴(kuò)展可逆數(shù)據(jù)隱藏算法
羅劍高1,韓國(guó)強(qiáng)2,沃焱2
(1. 廣東農(nóng)工商職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系,廣東廣州 510507;2. 華南理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,廣東廣州 510006 )
提出一種變換方向自適應(yīng)的差值擴(kuò)展可逆數(shù)據(jù)隱藏算法(ACD),ACD通過擴(kuò)展像素對(duì)的差值嵌入數(shù)據(jù)。像素對(duì)中一為參照像素,另一為變換像素,ACD根據(jù)像素對(duì)所處區(qū)域類型的估測(cè),自適應(yīng)選擇變換像素,暗區(qū)選大值像素,亮區(qū)選小值像素,否則選默認(rèn)方向像素。理論分析及實(shí)驗(yàn)結(jié)果表明,ACD解決了預(yù)測(cè)誤差擴(kuò)展可逆數(shù)據(jù)隱藏算法(PEE)在暗或亮載體時(shí)灰度溢出急劇增加的問題,與采用現(xiàn)有灰度溢出解決方案的PEE相比,改善了載體普適性,性能更穩(wěn)定。
可逆數(shù)據(jù)隱藏;差值擴(kuò)展;灰度溢出;自適應(yīng)數(shù)據(jù)嵌入
可逆數(shù)據(jù)隱藏[1](RDH, reversible data hiding) 技術(shù)是一種以某種可逆方式把待隱藏?cái)?shù)據(jù)嵌入到載體,生成相對(duì)載體而言感知變化不明顯的含隱載體,在需要時(shí)能從該含隱載體中提取被嵌入的數(shù)據(jù),且能完全還原載體的數(shù)據(jù)隱藏技術(shù)。RDH適用于對(duì)載體失真特別敏感(如遙感、醫(yī)學(xué)圖像)的數(shù)據(jù)隱藏應(yīng)用。從20世紀(jì)90年代末至今,相關(guān)文獻(xiàn)已刊發(fā)了一系列的RDH具體算法[2~10],與此同時(shí),RDH相關(guān)應(yīng)用技術(shù)也不斷取得進(jìn)步[11,12]?,F(xiàn)有的RDH大致可歸為以下3類:基于無損壓縮[1];擴(kuò)展變換[2~10];直方圖變換[1]。近年來,基于預(yù)測(cè)誤差擴(kuò)展的RDH算法(PEE, prediction error expansion)得到了研究人員的廣泛關(guān)注,因?yàn)槠渚哂懈美幂d體空間冗余的能力。一般地,PEE相對(duì)其他類型的算法具有更優(yōu)的容量—失真性能。
本文的研究以8位灰度圖像為載體。由于對(duì)載體直接執(zhí)行擴(kuò)展變換無法避免灰度溢出,即在擴(kuò)展變換某特征值的過程中,有可能使參與變換的某些像素值小于0或大于255,導(dǎo)致無法正確保存這些變換后的像素值,因此,有效的PEE必須包含能解決灰度溢出的處理過程。目前,PEE采用的灰度溢出解決方法[1~10]所需付出的代價(jià)一般與載體的直方圖分布密切相關(guān),比如當(dāng)載體像素值在0或255附近占比偏高時(shí),解決灰度溢出問題所需的輔助比特?cái)?shù)急劇增加?,F(xiàn)有大多數(shù)有關(guān)PEE的文獻(xiàn)在防灰度溢出處理方面討論的不夠充分,沒有明確指出所提算法因灰度溢出問題,有效容量—失真性能除與載體圖數(shù)據(jù)冗余有關(guān)外,還與像素直方圖邊緣分布有密切聯(lián)系,沒有指出載體圖過暗或過亮?xí)r算法有效容量—失真性能急劇惡化的缺陷,其仿真實(shí)驗(yàn)一般也較少涉及較暗或較亮的載體圖。由于現(xiàn)有灰度溢出解決技術(shù)影響了PEE算法的實(shí)際適用范圍,因此研究更有效防溢出的技術(shù)已成一個(gè)重要的課題[13]。
針對(duì)現(xiàn)有PEE在灰度溢出問題處理上存在的不足,本文提出一種新穎的變換方向自適應(yīng)的差值擴(kuò)展(ACD, adaptive change direction)算法。ACD中的預(yù)測(cè)算子采用相鄰像素預(yù)測(cè),在不明顯增加計(jì)算復(fù)雜度的前提下,自適應(yīng)處理有效解決了暗或亮載體時(shí),有效數(shù)據(jù)嵌入能力大大下降的問題,使載體直方圖邊緣分布的大小不再是影響載體數(shù)據(jù)嵌入能力的重要因素,與現(xiàn)有PEE算法相比,較為顯著地改善了載體的普適性。
擴(kuò)展嵌入是一種把數(shù)據(jù)比特嵌入到擴(kuò)展特征值最低有效位(LSB)的可逆變換技術(shù),由Tian[2]在2003年首先提出。Tian在像素對(duì)上定義了一組稱之為差值擴(kuò)展(DE)的可逆變換,2007年,Thodi等[3]把DE推廣到預(yù)測(cè)誤差上,定義了一套通用的預(yù)測(cè)誤差擴(kuò)展可逆變換(PEE),用MED(median edge detector)預(yù)測(cè)誤差算子來計(jì)算預(yù)測(cè)誤差,隨后的PEE研究者先后提出了幾種更有效的預(yù)測(cè)誤差算子[4~10],用于獲取更適合數(shù)據(jù)嵌入的預(yù)測(cè)誤差值。在闡述本文ACD之前,先分析PEE變換和與之相關(guān)的灰度溢出解決方法。
2.1 PEE變換
在數(shù)據(jù)嵌入端,首先通過某種像素預(yù)測(cè)算子,對(duì)宿主I的當(dāng)前像素值進(jìn)行預(yù)測(cè),設(shè)當(dāng)前像素值為,其預(yù)測(cè)值為,則像素預(yù)測(cè)誤差?;谖灰茢U(kuò)展和兩倍擴(kuò)展變換的數(shù)據(jù)嵌入規(guī)則為
或者
(2)
在數(shù)據(jù)提取端,設(shè)含隱圖像為',當(dāng)前像素值為,先用同一預(yù)測(cè)算子計(jì)算出與嵌入端相一致的預(yù)測(cè)值,令,執(zhí)行式(1)或式(2)的逆操作,可求得對(duì)應(yīng)的
或者
(4)
2.2 灰度溢出解決方法
解決灰度溢出的策略現(xiàn)在主要有2種:1) 令可能出現(xiàn)溢出的像素保持不變,并把與它們位置有關(guān)的信息記錄下來作為輔助信息之一,傳送到數(shù)據(jù)提取端,以便數(shù)據(jù)提取時(shí)做相應(yīng)的逆處理[2~5,8,9];2)壓縮載體圖的灰度直方圖,保證擴(kuò)展變換后,像素的灰度值都處在有效范圍內(nèi),記錄灰度直方圖壓縮的相關(guān)信息作為輔助信息的一部分,傳送到數(shù)據(jù)提取端,供直方圖做相應(yīng)的解壓縮變換[6,7,10]。2種策略中的灰度溢出信息記錄或采用位置圖壓縮方式或采用標(biāo)識(shí)比特的方式,位置圖壓縮方式的灰度溢出輔助信息量與壓縮算子的效率密切相關(guān),不適合小尺寸的圖像載體,且相對(duì)標(biāo)識(shí)比特方式,數(shù)據(jù)壓縮處理過程會(huì)較明顯地增加RDH算法復(fù)雜度,一般不予以采用。接下來,本文以2個(gè)具體的典型灰度溢出解決方法為例來分析現(xiàn)有灰度溢出解決方法存在的不足。
2.2.1 2次檢測(cè)標(biāo)識(shí)比特法
2次檢測(cè)標(biāo)識(shí)比特法(FB, flag bit)是策略1的經(jīng)典方法之一,由Thodi等[3]首先提出。本文以Vasiliy等[4]采用的一種2次檢測(cè)標(biāo)識(shí)比特法為例說明其實(shí)現(xiàn)過程。一般地,大多數(shù)載體的像素可以執(zhí)行多次不溢出的擴(kuò)展變換,2次變換后溢出和1次變換后溢出的像素(如圖1樣本1、2、3)比較少,Vasiliy等在擴(kuò)展變換前用2次溢出測(cè)試過程記錄下這些像素:如圖1所示,逐一對(duì)像素執(zhí)行擴(kuò)展變換距離最大的測(cè)試(預(yù)測(cè)誤差≥0,令為1,否則為0),如果1次變換就溢出,用比特1標(biāo)識(shí),2次變換溢出的用比特0標(biāo)識(shí),其他的不用標(biāo)識(shí)。找出2次變換或1次變換溢出的像素后,將標(biāo)識(shí)比特組成的比特串與待嵌入數(shù)據(jù)合并后的結(jié)果更新待嵌入數(shù)據(jù)比特,然后開始執(zhí)行數(shù)據(jù)的嵌入。在數(shù)據(jù)嵌入過程中,被標(biāo)識(shí)的像素不嵌入有效數(shù)據(jù),其中,1次變換溢出的像素保持不變,2次變換溢出的像素執(zhí)行1次變換距離最大的變換(嵌入相應(yīng)的填充比特0或1),除此之外的像素執(zhí)行常規(guī)的擴(kuò)展變換。在數(shù)據(jù)提取端,先對(duì)待逆變換的像素做1次變換距離最大的嵌入變換,如果灰度溢出,則借助溢出標(biāo)識(shí)比特進(jìn)一步區(qū)分該像素在嵌入端是保持不變還是執(zhí)行了1次變換距離最大的填充變換,否則可確定該像素在嵌入端執(zhí)行了常規(guī)的擴(kuò)展變換。
2.2.2 直方圖邊緣壓縮法
圖2是屬于策略2的直方圖邊緣壓縮法(HM, histogram modification)示意,早在2006年宣國(guó)榮等[6]就提出了HM處理方法。本文以羅劍高等[10]防灰度溢出方法為例來說明HM的實(shí)現(xiàn)過程。在擴(kuò)展變換前,先對(duì)載體進(jìn)行預(yù)處理,將[0,]和[255?, 255]區(qū)間的灰度值加或減+1,把載體灰度值的區(qū)間壓縮成[+1, 254?],然后在預(yù)處理后的載體上執(zhí)行灰度變化量不大于+1的擴(kuò)展變換,灰度溢出即可避免。預(yù)處理過程具體如下,灰度壓縮變換信息用標(biāo)識(shí)比特串記錄:令初值為空,按某個(gè)次序逐一掃描載體像素,當(dāng)前灰度值小于+1或大于254?,則令加或減+1,同時(shí)在末尾追加標(biāo)識(shí)比特“1”;當(dāng)前灰度值[+1,2+1]或[254?2,254?],則不變,同時(shí)在末尾追加標(biāo)識(shí)比特“0”;否則不做處理。作為輔助信息的一部分傳送給提取端,提取端根據(jù)可執(zhí)行上述預(yù)處理的相應(yīng)逆變換,即可最終恢復(fù)載體圖。
可以看出,F(xiàn)B方法產(chǎn)生的灰度溢出輔助信息量等于溢出測(cè)試時(shí)二次變換后溢出和一次變換后溢出的像素?cái)?shù)量,HM方法產(chǎn)生的灰度溢出輔助信息量等于像素值處在[0,2+1]和[254?2, 255]區(qū)間的像素?cái)?shù)量,一般的自然圖像,這個(gè)量都較小,甚至為0,但當(dāng)載體圖很亮或很暗時(shí),這個(gè)量將急劇增加,最終導(dǎo)致有效嵌入數(shù)據(jù)量急劇減少。
擴(kuò)展變換是定義在一對(duì)值(不失一般性,記為(,))差值上的可逆變換。在Tian[2]的DE中,、分別為某相鄰的2個(gè)像素值,變換操作同時(shí)修改、值,、可能增加,也可能減小;在PEE中,為某像素的灰度值,為該像素灰度值的預(yù)測(cè)值,變換操作只增加或減小,僅作為參照值,變換操作中保持不變。圖3是DE灰度溢出和PEE灰度溢出的示例。
本文注意到,圖3(b)中(,)值的變換方向是固定的,即只變換,當(dāng)大于時(shí),往增加的方向改變,當(dāng)小于時(shí),往減小的方向改變,如果本文可以調(diào)整(,)值的變換方向,比如,在(,)為(252, 254)時(shí),令為參照值,修改擴(kuò)展(,)的差值,就可以避免圖3(b)中灰度溢出,基于這個(gè)思路,本文提出一種改善灰度溢出問題的差值擴(kuò)展嵌入方案-變換方向自適應(yīng)的差值擴(kuò)展,并實(shí)現(xiàn)了一個(gè)稱為ACD的具體算法。變換方向自適應(yīng)差值擴(kuò)展方案可顯著地減少灰度溢出的發(fā)生,降低相應(yīng)的灰度溢出輔助信息量,其原理如圖4所示,當(dāng)(,)在暗區(qū)時(shí),修改大值;在亮區(qū)時(shí),修改小值;否則修改默認(rèn)位置上的值。為避免值對(duì)(255,255)的變換溢出,亮區(qū)選用式(2)變換;為避免值對(duì)(0,0)的變換溢出,暗區(qū)選用式(1)變換;中間區(qū)選用式(1)或式(2)變換。
文中變化方向自適應(yīng)的差值擴(kuò)展RDH算法(簡(jiǎn)稱ACD)除了變化方向問題外,其他需要考慮的問題與常規(guī)PEE算法類似,本節(jié)對(duì)ACD算法的實(shí)現(xiàn)進(jìn)行具體說明。
4.1 預(yù)測(cè)算子及變化方向的選擇
ACD是一種預(yù)測(cè)誤差擴(kuò)展RDH算法,預(yù)測(cè)算子采用相鄰像素預(yù)測(cè)。
記O中下標(biāo)為(令第一個(gè)像素的為0)的像素為O,ACD依次對(duì)像素對(duì)(O,O1)進(jìn)行數(shù)據(jù)嵌入處理。設(shè)當(dāng)前待處理像素對(duì)(O,O1)的值為(x,x1),執(zhí)行變換時(shí)的變換方向確定過程用偽碼表示如下。
偽碼1 確定差值擴(kuò)展的變換方向
記(x,x1)中x為變換值,x1為x的預(yù)測(cè)值時(shí)的嵌入方向?yàn)閞1;
記(x,x1)中大值為變換值,小值作為大值預(yù)測(cè)值的嵌入方向?yàn)閞2;
記(x,x1)中小值為變換值,大值作為小值預(yù)測(cè)值的嵌入方向?yàn)閞3;
嵌入方向?yàn)閞2或r3時(shí),如果x=x1,變換值選x,x1作為x的預(yù)測(cè)值。
令嵌入方向r=r1,為0;
if(>1){
估測(cè)像素對(duì)處在暗區(qū),用r2更新r;
else if
估測(cè)像素對(duì)處在亮區(qū),用r3更新r;
else if
估測(cè)像素對(duì)處在中間區(qū),用r1更新r;
else
估測(cè)像素對(duì)處在亮區(qū)-中間區(qū)或暗區(qū)-中間區(qū)的過渡區(qū),r保持不變;
}
=+1;
}
注意,上述(x,x1)變換方向是由已完成變換且LSB置0后的前2個(gè)像素值確定的,所以,在提取端,在對(duì)應(yīng)的擴(kuò)展逆變換前,由上述偽碼,按與嵌入端相同的次序可以得到嵌入時(shí)各像素對(duì)的擴(kuò)展變換方向。
4.2 溢出處理
灰度溢出是擴(kuò)展變換無法避免的問題。ACD采用變換方向自適應(yīng)的處理雖然大大減少了灰度溢出的發(fā)生,但并不能絕對(duì)避免灰度溢出問題,例如:(0,255)像素對(duì)的變換。
為此,本文在2次檢測(cè)標(biāo)識(shí)比特法的基礎(chǔ)上,設(shè)計(jì)了一種1次檢測(cè)標(biāo)識(shí)比特法,其處理過程如下:令溢出信息標(biāo)識(shí)比特串初值為空,逐一對(duì)像素對(duì)執(zhí)行擴(kuò)展變換,如果出現(xiàn)灰度溢出,則取消該變換,保持像素對(duì)不變,同時(shí)在末尾追加標(biāo)識(shí)比特“1”;如果沒有出現(xiàn)灰度溢出,則執(zhí)行擴(kuò)展變換,之后在變換的結(jié)果上再執(zhí)行一次變換量盡可能大(預(yù)測(cè)誤差,令為1,否則為0)的灰度溢出測(cè)試變換,如果出現(xiàn)溢出,在末尾追加標(biāo)識(shí)比特“0”。作為輔助信息的一部分傳送給提取端,數(shù)據(jù)提取時(shí),根據(jù)執(zhí)行如下處理,即可辨識(shí)嵌入時(shí)因灰度溢出問題而保持原值的像素對(duì):以倒序的次序取的當(dāng)前標(biāo)識(shí)比特,按與嵌入端像素處理的倒序逐一對(duì)含隱像素對(duì)執(zhí)行逆變換,在擴(kuò)展逆變換前,先執(zhí)行一次變換量盡可能大的灰度溢出測(cè)試變換,如果溢出,則可觀察當(dāng)前標(biāo)識(shí)比特,為“1”表示當(dāng)前像素對(duì)在嵌入端存在灰度溢出問題,未執(zhí)行擴(kuò)展,數(shù)據(jù)提取時(shí)亦不做變換,保持原值。除此之外,其他像素對(duì)在數(shù)據(jù)提取端需執(zhí)行相應(yīng)的擴(kuò)展嵌入逆處理。
4.3 嵌入?yún)?shù)優(yōu)化及多層嵌入
為了限制像素值最大變化的幅度,ACD約定在[0,15]中取值,用4 bit表示。ACD單層(單次)嵌入的數(shù)據(jù)量不大于1bpp(bit per pixel每像素比特),當(dāng)單層嵌入的數(shù)據(jù)量無法滿足需要時(shí),可執(zhí)行多層嵌入。為了簡(jiǎn)化ACD表述,文中多層嵌入采用相對(duì)獨(dú)立的方式,即每層的嵌入與相鄰層的嵌入不發(fā)生數(shù)據(jù)交互,各自分別依次嵌入數(shù)據(jù)。執(zhí)行多層嵌入時(shí),各層像素掃描方向在水平掃描、垂直掃描兩者間交替變化,非末層嵌入的取15,末層在[0, 15]中取值,對(duì)值進(jìn)行優(yōu)化,就是要找到在完整嵌入待隱藏?cái)?shù)據(jù)的前提下末層的最小值,它可使含隱載體失真最小。ACD采用折半迭代的方法優(yōu)化值,具體步驟詳見第4.5節(jié)的數(shù)據(jù)嵌入過程。由于允許多層嵌入,在數(shù)據(jù)提取端執(zhí)行對(duì)應(yīng)的多層提取時(shí),就要求能識(shí)別數(shù)據(jù)提取操作的最末層(對(duì)應(yīng)數(shù)據(jù)嵌入階段的首層),用于結(jié)束數(shù)據(jù)提取操作。ACD每層分別用1比特輔助信息作為層標(biāo)識(shí)位來實(shí)現(xiàn)這個(gè)要求,具體見第4.4節(jié)。
4.4 輔助信息傳送及結(jié)構(gòu)
RDH算法在數(shù)據(jù)提取/載體恢復(fù)端,需要數(shù)據(jù)嵌入時(shí)所用的,稱之為輔助信息的一些參數(shù)。為實(shí)現(xiàn)數(shù)據(jù)的盲提取和載體的盲恢復(fù),要求該信息包含在載體內(nèi),隨載體傳送。為此,ACD提出一種新穎的LSB置換法來實(shí)現(xiàn)輔助信息隨載體的傳送,具體過程如下:取每層的層標(biāo)識(shí)比特作為該層待嵌入的第一個(gè)數(shù)據(jù)比特,然后依次取已完成擴(kuò)展變換像素的LSB作為待嵌入比特。設(shè)該層擴(kuò)展嵌入完畢時(shí)已嵌入比特?cái)?shù)為,也就是說該層前?1個(gè)像素的LSB被嵌入到載體中,在擴(kuò)展嵌入完畢后,ACD需隱藏的數(shù)據(jù)及相應(yīng)的輔助信息就可依次保存在這?1個(gè)LSB中。
ACD各層需嵌入的數(shù)據(jù)比特串結(jié)構(gòu)規(guī)定如下:先構(gòu)造該層擴(kuò)展嵌入完畢后除層標(biāo)識(shí)之外的輔助信息比特串,然后用與當(dāng)前待嵌入的數(shù)據(jù)比特串合并的結(jié)果更新當(dāng)前為
=+(6)
如果中比特?cái)?shù)大于?1,則其前?1個(gè)比特填充到?1個(gè)LSB中后,用截除前?1比特的更新。如果D中比特?cái)?shù)不大于?1,則LSB中不足被比特填充的填充比特“1”,然后置為空。為在提取端能分辨出填充比特,令A(yù)CD需嵌入的初始值為ACD待隱藏的數(shù)據(jù)比特加一個(gè)作為填充比特起始標(biāo)識(shí)的“0”比特。數(shù)據(jù)提取端,丟棄提取比特串最末“0”及之后的“1”比特,可去除填充比特起始標(biāo)識(shí)和填充比特。
ACD算法中的輔助信息包括:末層、末層的像素掃描方式、各層的灰度溢出信息、各層的層標(biāo)識(shí)位。在多層嵌入過程中,每層各自處理自己的輔助信息,其中,首層嵌入的層標(biāo)識(shí)比特規(guī)定為“1”,其他層規(guī)定為“0”,ACD末層嵌入的輔助信息除了層標(biāo)識(shí)之外結(jié)構(gòu)為
非末層嵌入的輔助信息除層標(biāo)識(shí)之外的輔助信息結(jié)構(gòu)為
(8)
其中,為本層溢出信息比特串,2為表示末層嵌入?yún)?shù)的4比特表示掃描方向(0表示水平型掃描,1表示垂直型掃描),是長(zhǎng)度為的比特串,用于表示當(dāng)前層參與LSB置換的像素?cái)?shù)?1。由于非末層的固定為15,可由式(7)的推導(dǎo),故相比式(7),式(8)中的要少用5比特。
4.5 ACD算法實(shí)現(xiàn)過程
ACD算法的實(shí)現(xiàn)包括2部分,數(shù)據(jù)的嵌入和數(shù)據(jù)提取/載體恢復(fù),后一部分是前一部分的逆過程。設(shè)待隱藏的數(shù)據(jù)比特串為,載體圖像為I,含隱載體最大可接收的失真為,ACD的實(shí)現(xiàn)過程描述如下。
1) 數(shù)據(jù)嵌入過程
①令Δ=15,掃描方向=0,
//=0水平掃描,=1垂直掃描
②依次掃描像素,把圖像I轉(zhuǎn)換成像素序列O。
③自適應(yīng)確定變換方向后,對(duì)當(dāng)前像素對(duì)進(jìn)行數(shù)據(jù)嵌入處理:確定待嵌比特、執(zhí)行擴(kuò)展變換、收集溢出信息。
④擴(kuò)展嵌入處理完畢后,用式(8)按非末層嵌入模式構(gòu)造輔助信息,更新待嵌入的,設(shè)的比特?cái)?shù)為,如果+5不大于第4.4節(jié)所述的LSB置換數(shù)?1,則進(jìn)入末層嵌入模式,用式(7)重新構(gòu)造輔助信息和,把中比特依次填入LSB中,不足部分填入填充比特,保存當(dāng)前含隱圖像,進(jìn)入第⑤步的迭代求優(yōu);否則把含式(8)輔助信息的中按4.4節(jié)所述處理,然后用當(dāng)前含隱載體更新載體,計(jì)算當(dāng)前含隱載體的失真,如果大于,退出算法,提示嵌入失敗,否則改變掃描方向,轉(zhuǎn)第②步執(zhí)行新一層的數(shù)據(jù)嵌入。
⑤末層優(yōu)化階段執(zhí)行4次折半迭代,在末層嵌入迭代階段,如前一過程完整嵌入了,令,否則令,重復(fù)執(zhí)行最后一層的嵌入。輸出能滿足載荷數(shù)據(jù)完整嵌入且最小時(shí)的含隱圖像。
2) 數(shù)據(jù)提取/載體恢復(fù)過程
①設(shè)提取數(shù)據(jù)比特串為空,令掃描方向等于第一個(gè)像素的LSB。
②按依次掃描像素,把I'轉(zhuǎn)換成像素序列O'。順序掃描O',確定各(O',O'1)變換方向r。
④從O'末尾位置開始,根據(jù)中提供的輔助信息,進(jìn)行相應(yīng)的逆變換,提取數(shù)據(jù),同步依次恢復(fù)個(gè)被LSB置換的像素值。最后在中清除掉當(dāng)前層的輔助比特,得到更新后的。
⑤如果當(dāng)前層標(biāo)識(shí)為“0”,用當(dāng)前層輸出圖像更新',用15更新,改變掃描方向,然后轉(zhuǎn)到第2步;否則舍棄末尾的填充比特,得到所求的目標(biāo)數(shù)據(jù)和I,過程結(jié)束。
為了便于理解ACD實(shí)現(xiàn)過程,圖6給出了單層數(shù)據(jù)嵌入和提取的示例。數(shù)據(jù)嵌入過程如圖6(a)所示,從載體的左上角開始,依次在(O,O1)的當(dāng)前像素值上執(zhí)行擴(kuò)展變換。第一個(gè)要嵌入的比特是層標(biāo)識(shí)比特“1”,然后依次為已完成擴(kuò)展變換像素(如233、27、20…)的LSB。擴(kuò)展變換結(jié)束后,構(gòu)建,最后把次填充到對(duì)應(yīng)的14個(gè)LSB中。圖6(b)是數(shù)據(jù)提取的部分過程,首先令等于含隱載體的第一個(gè)LSB,然后按掃描次序取前1~5個(gè)像素的LSB,換算成十進(jìn)制數(shù) 14,取前14個(gè)LSB為當(dāng)前提取的數(shù)據(jù),從提取出=10;令初始2個(gè)變換對(duì)的變換方向?yàn)閞1,接著用當(dāng)前像素對(duì)的LSB置0后的前2個(gè)像素值來修改變換方向;最后從最后一個(gè)像素對(duì)開始,逆序進(jìn)行相應(yīng)的擴(kuò)展變換的逆處理,用提取的比特恢復(fù)相應(yīng)像素的LSB,如圖中的8被恢復(fù)為9。限于篇幅,圖6(b)示例中有關(guān)數(shù)據(jù)提取剩下未表述的部分請(qǐng)讀者根據(jù)文中ACD實(shí)現(xiàn)過程的描述自行完成。
(a) 數(shù)據(jù)嵌入過程
(b) 數(shù)據(jù)提取部分過程
圖6 ACD單層數(shù)據(jù)嵌入和提取過程示例
為驗(yàn)證ACD的有效性,本文用C++實(shí)現(xiàn)ACD和3個(gè)比較算法,執(zhí)行程序可在文獻(xiàn)[14]參閱。
ACD創(chuàng)新主要體現(xiàn)在有效改善現(xiàn)有PEE算法中灰度溢出解決方法的不足,為便于驗(yàn)證這個(gè)創(chuàng)新的貢獻(xiàn),3個(gè)比較算法采用與ACD相同的預(yù)測(cè)算子。3個(gè)比較算法根據(jù)各自所采用的灰度溢出解決方法,分別被簡(jiǎn)稱為DE-FB、DE-HM1、DE-HM2。
1) DE-FB:除了變換方向固定外(更改像素對(duì)的左邊像素),其他處理方法與ACD相同。
2) DE-HM1:除了預(yù)測(cè)算子改用相鄰像素預(yù)測(cè)外,其他處理方法與羅劍高[10]等RDH算法相同。
3) DE-HM2:與DE-HM1相似,不同的是在直方圖調(diào)整時(shí),DE-HM1把直方圖上[0,]和[255?,255]值分別調(diào)整到[+1, 2+1]和[254?2, 254?],而DE-HM2加入了簡(jiǎn)單的自適應(yīng)處理,在暗區(qū),根據(jù)[0,],[2+2, 3+2]像素?cái)?shù)量的大小決定合并區(qū)間,如果前者數(shù)小,則把[0,]的像素值加+1合并到區(qū)間[+1, 2+1],否則把[0, 2+1]區(qū)間的像素值加+1,[+1, 2+1]像素值合并到[2+2, 3+2],亮區(qū)的合并與暗區(qū)類似。本文需記錄的溢出信息比特?cái)?shù)是合并后區(qū)間的像素?cái)?shù)量,顯然,DE-HM2所需的溢出信息比特量小于或等于DE-HM1所需的量,是DE-HM1灰度溢出法的一種改進(jìn),其付出代價(jià)是溢出比特量的減少意味著參與調(diào)整的像素?cái)?shù)增加,這有可能相應(yīng)地增加失真。
實(shí)驗(yàn)載體圖來自文獻(xiàn)[15],待嵌入數(shù)據(jù)為隨機(jī)比特流。大量的實(shí)驗(yàn)結(jié)果表明,ACD具有非常優(yōu)良的防灰度溢出能力。圖7是實(shí)驗(yàn)中具有代表性的4幅測(cè)試圖,分別代表灰度邊界分布少、溢出問題可忽略的Lena,灰度分布均勻的Texmos1,灰度分布相對(duì)偏暗的Man,灰度分布集中在0和255的Ruler。圖8顯示的是作用在以上載體的4個(gè)算法的容量—失真性能實(shí)驗(yàn)結(jié)果對(duì)比。
圖8(a)中4條容量-失真曲線基本重合在一起,這是因?yàn)長(zhǎng)ena在0或255附近的像素?cái)?shù)量可忽略不計(jì),用于處理溢出所付出的性能損失也可忽略不計(jì)。Texmos1紋理豐富,灰度值均勻,0或255附近的像素極易導(dǎo)致溢出問題,ACD自適應(yīng)處理能在不增加溢出信息量的情況下減少較大比例的溢出問題,不過這有可能會(huì)增加相關(guān)像素的變化值,圖8(b)表明ACD采用的自適應(yīng)方法利大于弊,其算法性能較明顯優(yōu)于其他3種算法。Man的實(shí)驗(yàn)對(duì)比結(jié)果與Texmos1的實(shí)驗(yàn)對(duì)比結(jié)果類似,只是圖8(c)的數(shù)據(jù)嵌入容量相對(duì)較大,ACD在減少灰度溢出信息方面所獲的貢獻(xiàn)相對(duì)總嵌入量的比例沒有圖8(b)那么明顯。Ruler的灰度值只有0和255這2種,擴(kuò)展變換極易導(dǎo)致溢出,由于溢出輔助信息的急劇增加,DE-FB和DE-HM1已無法在該圖嵌入有效數(shù)據(jù),DE-HM2在這種載體場(chǎng)合表現(xiàn)優(yōu)于DE-HM1,但總體上不如ACD。由圖8可看出,ACD相對(duì)3種比較算法,具有非常好的灰度溢出問題的處理效果。4種算法比較而言,ACD的優(yōu)越性較為明顯,特別是在失真較大時(shí)(此時(shí)較大,溢出問題不容忽視)。
RDH技術(shù)經(jīng)過十多年的研究,雖取得了較大進(jìn)步,但總體還處在發(fā)展中,更為有效的算法及RDH容量的理論邊際、RDH技術(shù)的實(shí)際應(yīng)用等有待于科研人員做進(jìn)一步的研究。本文從有效控制灰度溢出的角度提出了一種變換方向自適應(yīng)的RDH算法——ACD。ACD在像素對(duì)中執(zhí)行像素差值擴(kuò)展變換,當(dāng)估測(cè)像素對(duì)處在暗區(qū)(灰度值靠近0)時(shí),以小值作為大值的預(yù)測(cè)值,更改大值,當(dāng)估測(cè)像素對(duì)處在亮區(qū)(灰度值靠近255)時(shí),以大值作為小值的預(yù)測(cè)值,更改小值,否則以像素對(duì)右值作為左值的預(yù)測(cè)值,更改左值。理論分析及實(shí)驗(yàn)結(jié)果表明,ACD有效利用局部特征自適應(yīng)調(diào)整像素對(duì)的變換方向,明顯地改善了灰度溢出問題,解決了現(xiàn)有灰度溢出解決方案使載體在偏暗或偏亮?xí)r因灰度溢出問題導(dǎo)致有效嵌入容量不穩(wěn)定的缺陷,ACD穩(wěn)定的容量—失真性能,適用于各種灰度直方圖分布的圖像載體。ACD的優(yōu)越性驗(yàn)證了變換方向自適應(yīng)思想的有效性,把這個(gè)思想用于其他預(yù)測(cè)誤差算子的PEE是下一步的研究方向。
[1] ASIFULLAH K, AYESHA S, SUMMUYYA M, et al. A recent survey of reversible watermarking techniques[J]. Information Sciences 2014,279: 251-272.
[2] TIAN J. Reversible data embedding using a difference expansion[J]. IEEE Transactions on Circuits and Systems for Video Technology. 2003,13(8):890-896.
[3] THODI D M, RODRIGUEZ J J. Expansion embedding techniques for reversible watermarking[J].IEEE Transactions on Image Processing,2007,16(3):721-730.
[4] VASILIY S, HYOUNG J K, JEHO N, et al. Reversible watermarking algorithm using sorting and prediction[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2009,19(7):989-999.
[5] CHEN M, CHEN ZY, ZENG X, et al. Model order selection in reversible image watermarking[J]. IEEE Journal of Selected Topics in Signal Processing, 2010, 4(3):592-604.
[6] 宣國(guó)榮, 姚秋明, 柴佩琪, 等.基于整數(shù)小波閾值嵌入的無損數(shù)據(jù)隱藏[J].計(jì)算機(jī)應(yīng)用, 2006, 26(12): 2890-2893.
XUAN G L, YAO Q M, CHAI P Q, et al. Lossless data hiding using integer wavelet transform and threshold embedding technique[J]. Computer Applications, 2006, 26(12):2089-209.
[7] LEE C F, CHEN H L, TSO H K. Embedding capacity raising in reversible data hiding based on prediction of difference expansion[J]. Journal of Systems and Software, 2010,83(10):1864-1872.
[8] PENG F, LI X L, YANG B. Adaptive reversible data hiding scheme based on integer transform[J]. Signal Processing, 2012, 92(1):54-62.
[9] WANG J X, NI J Q, PAN J W. A high capacity reversible data hiding scheme based on generalized prediction-error expansion and adaptive embedding[J]. Signal Processing, 2014, 98(5): 370-380.
[10] 羅劍高, 韓國(guó)強(qiáng). 基于完整上下文預(yù)測(cè)的可逆數(shù)據(jù)隱藏[J]. 計(jì)算機(jī)科學(xué), 2013,40(11A):219-223.
LUO J G, HAN G Q. Reversible data hiding based on full context prediction[J]. Computer Science, 2013, 40(11A): 219-223.
[11] 羅劍高, 韓國(guó)強(qiáng), 沃焱, 等. 篡改定位精度可動(dòng)態(tài)調(diào)整的無損圖像認(rèn)證算法[J]. 華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版), 2011, 39(7): 121-126.
LUO J G, HAN G Q, WO Y, et al. Lossless image authentication algorithm with dynamic adjustable tamper localization accuracy[J]. Journal of South China University of Technology (Natural Science Edition), 2011, 39(7): 121-126.
[12] 羅劍高, 韓國(guó)強(qiáng), 沃焱, 等. 基于自適應(yīng)圖像塊組合的無損圖像認(rèn)證算法[J]. 通信學(xué)報(bào), 2012, 33(6): 64-72.
LUO J G, HAN G Q, WO Y, et al. Lossless image authentication algorithm based on adaptive combinations of image basic blocks[J]. Journal on Communications, 2012, 33(6):64-72.
[13] 鄧小鴻, 陳志剛, 鄧惠文, 等.醫(yī)學(xué)圖像可逆數(shù)字水印防溢出處理研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2013, 49(23): 162-165.
DENG X H, CHEN Z G, LIU H W, et al. Study on preventing overflow and underflow of reversible digital watermarking for medical images[J]. Computer Engineering and Applications, 2013,49(23): 162-165.
[14] Miecu R&D center, ACD Demo software [EB/OL].[2015-1-11] http:// www.miecu.net/ research/rdh/.
[15] Signal and Image Processing Institute, University Southern California, Los Angeles. Image database[EB/OL]. [2015-1-11] http://sipi.usc.edu/ database/.
Novel reversible data hiding based on difference expansion
LUO Jian-gao1, HAN Guo-qiang2, WO Yan2
(1. Department of Computer, Guangdong AIB Polytechnic College, Guangzhou 510507, China;2. School of Computer Science and Engineering, South China University of Technology, Guangzhou 510006, China)
A novel reversible data hiding algorithm based on difference expansion called ACD was proposed, which used the so-called adaptive change direction technology. ACD embeds data by expanding the differences of neighboring pixel values. In a pair of pixels, a pixel was for reference and the other was for transform. ACD first estimates the type of the pixels area, then chooses transform pixels by the type that it chooses the large value pixel in dark areas and the small value pixel in bright areas, or else selects the pixels by default direction. Theoretical analysis and experimental results show that ACD solves the problem of gray overflow increased dramatically in the reversible data hiding based on prediction error expansion (PEE) when the carrier is very dark or bright. Compared with the PEE with the existing gray overflow solution, ACD is suitable for wider types of carrier and has more stable performance.
reversible data hiding, difference expansion, gray overflow, adaptive data embedding
TP391
A
10.11959/j.issn.1000-436x.2016030
2015-01-11;
2015-03-15
國(guó)家自然科學(xué)基金資助項(xiàng)目(No.61472145);國(guó)家自然科學(xué)基金廣東省聯(lián)合基金資助項(xiàng)目(No.U1035004)
The National Natural Science Foundation of China (No.61472145), The National Natural Science Foundation of China—Guangdong Province (No.U1035004)
羅劍高(1971-),男,江西金溪人,博士,廣東農(nóng)工商職業(yè)技術(shù)學(xué)院副教授,主要研究方向?yàn)閳D像處理、數(shù)字水印、信息安全等。
韓國(guó)強(qiáng)(1962-),男,江西臨川人,博士,華南理工大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)閳D像處理、多媒體技術(shù)等。
沃焱(1975-),女,云南昆明人,博士,華南理工大學(xué)教授,主要研究方向?yàn)閳D像處理、數(shù)字水印、信息安全等。