陳 亮 劉惠文 鄧小鴻
基于整數(shù)小波變換的數(shù)字圖像可逆水印算法
陳 亮 劉惠文 鄧小鴻
(江西理工大學(xué)應(yīng)用科學(xué)學(xué)院 江西 贛州 341000)
針對(duì)現(xiàn)有基于頻域的無(wú)損數(shù)字水印算法在實(shí)施可逆性和嵌入容量上的不足,提出一種基于整數(shù)小波變換的無(wú)損數(shù)字圖像水印算法,用于圖像的大容量可逆信息隱藏。首先對(duì)圖像進(jìn)行LeGall5/3整數(shù)小波變換,然后在高頻子帶中采用直方圖平移方法嵌入水印。為了獲取最大的嵌入容量和減少圖像的失真,分別提出嵌入?yún)?shù)和停止參數(shù)選擇方法。同時(shí),為了防止溢出現(xiàn)象和減少附加信息,提出新的產(chǎn)生位置映射圖方法。實(shí)驗(yàn)結(jié)果證明了該算法在水印圖像的保真度和嵌入容量上面具有較好性能。另外,與相似算法的比較證明了該算法的優(yōu)越性。該算法適合于數(shù)字圖像載體中實(shí)施隱秘通信。
整數(shù)小波變換 可逆數(shù)字水印 直方圖平移 信息隱藏
可逆數(shù)字水印又稱為無(wú)損或無(wú)失真數(shù)字水印,由于其獨(dú)特的無(wú)損特性已經(jīng)成為數(shù)字水印技術(shù)的一個(gè)重要研究方向[1,2]。無(wú)損數(shù)字水印能將具有特定功能的水印信息嵌入在多媒體載體中,對(duì)多媒體的內(nèi)容進(jìn)行保護(hù)或?qū)嵤╇[秘通信。在提取端提取水印后,能將水印載體無(wú)損恢復(fù)到原始的狀態(tài)。無(wú)損數(shù)字水印技術(shù)能廣泛應(yīng)用于一些需要水印來(lái)實(shí)現(xiàn)內(nèi)容保護(hù)又對(duì)原始載體完整性有特殊要求特定的領(lǐng)域。如在醫(yī)學(xué)圖像應(yīng)用中,可以將病人的電子病歷等隱私數(shù)據(jù)以水印方式嵌入對(duì)應(yīng)的醫(yī)學(xué)圖像中,在提取時(shí)可以得到原始的醫(yī)學(xué)圖像,進(jìn)行高質(zhì)量的診斷和下一步處理[3,4]。
利用無(wú)損數(shù)字水印技術(shù)在圖像中進(jìn)行信息隱藏屬于脆弱水印方法,意味著只要含水印的載體一旦被修改,嵌入在原始載體中的水印信息將不可恢復(fù)或者不可讀。目前算法主要分為基于空域和頻域算法,具有代表性的空域算法如基于差值擴(kuò)展[5-7]和基于直方圖平移的方法[8-10],前者嵌入容量更大,隱秘圖像的質(zhì)量較低,運(yùn)行效率也更低,后者具有操作簡(jiǎn)單,嵌入容量可預(yù)先估計(jì)等優(yōu)點(diǎn)?;诳沼蚍椒ㄖ苯釉趫D像像素級(jí)進(jìn)行操作,算法執(zhí)行效率較高,嵌入容量較大,但存在著隱秘圖像質(zhì)量較差和魯棒性差的特點(diǎn)。研究者們開(kāi)始研究基于頻域的可逆水印算法。在變換域中隱藏信息首先將原始載體圖像進(jìn)行頻域上的正變換,然后選取不同頻域系數(shù)進(jìn)行水印嵌入,最后進(jìn)行逆變換得到水印圖像。由于圖像的頻域變換比空域方法具接近于人類視覺(jué)系統(tǒng)HVS(Human Visual System)特性,能充分利用各種視覺(jué)掩蔽特性,水印圖像的隱秘性和魯棒性更好。曾驍?shù)热薣11]利用圖像離散余弦變換DCT(Discrete Cosine Transform)后,中低頻系數(shù)大量為零的現(xiàn)象,利用零系數(shù)索引值進(jìn)行水印的嵌入。但DCT變換過(guò)程中涉及到浮點(diǎn)數(shù)操作,水印算法實(shí)施可逆性困難。呂皖麗等人[12]利用Berkeley正交小波變換符合HVS的特點(diǎn),在圖像的感興趣區(qū)域嵌入水印。圖像的感興趣區(qū)域限制了水印嵌入位置,嵌入容量不高。Chang等人[13]提出了將圖像進(jìn)行Haar小波變換,用自適應(yīng)的算術(shù)編碼方法對(duì)高頻子帶進(jìn)行編碼來(lái)嵌入隱秘?cái)?shù)據(jù)。但自適應(yīng)的編碼方法增大了算法的復(fù)雜度。綜上,基于頻域的算法存在著嵌入容量小、算法復(fù)雜度高和實(shí)施可逆性困難等問(wèn)題。
針對(duì)上述基于頻域方法的不足,本文提出一種基于整數(shù)小波變換的數(shù)字圖像可逆水印算法,算法充分利用圖像小波變換后的高頻子帶系數(shù)進(jìn)行水印嵌入,對(duì)傳統(tǒng)的直方圖平移方法進(jìn)行改進(jìn),設(shè)計(jì)了嵌入?yún)?shù)選擇算法。為了保證高嵌入容量的同時(shí)注重隱秘圖像失真度,設(shè)計(jì)了嵌入停止參數(shù)選擇算法和防止溢出算法。
1.1 整數(shù)小波變換
在介紹整數(shù)小波變換技術(shù)之前,簡(jiǎn)單介紹一下小波變換技術(shù)。小波變換能將圖像進(jìn)行多分辨率的分解,每級(jí)小波變換將得到4個(gè)頻率子圖,分別為L(zhǎng)L(低頻子圖)、HL(垂直方向中高頻子圖)、LH(水平方向中高頻子圖)和HH(高頻子圖)。其中,LL子圖集中了圖像的絕大部分能量,是原始圖像的逼近子圖,可以進(jìn)行更高級(jí)別的小波分級(jí),即可得到第二級(jí)的4個(gè)頻率子圖(LL2, HL2, Lp和Hp),中高頻子圖代表了圖像的邊緣和紋理信息。如果要追求水印的不可見(jiàn)性,則可選擇中高頻子帶進(jìn)行水印嵌入,因?yàn)檫@一部分是人類視覺(jué)不敏感區(qū)域,如果要選擇追求水印的魯棒性,則可選擇在低頻子帶中進(jìn)行水印嵌入,因?yàn)檫@一部分內(nèi)容能更好地抵抗一般的圖像處理,如壓縮等。圖1給出了圖像進(jìn)行三級(jí)小波分解的示意圖。箭頭方向代表能量的逐級(jí)遞減。
圖1 圖像三級(jí)小波分解示意圖
普通的小波轉(zhuǎn)換并不能被利用到可逆水印方法中,因?yàn)椴恢С滞耆目赡嫘浴1热缫粋€(gè)8 bit灰度的圖像,像素值是0~255之間的整數(shù),普通的小波變換后的系數(shù)修改可能造成水印圖像中的像素值是非整數(shù),這使得可逆性實(shí)施困難。為了避免這些問(wèn)題和保證圖像變換的可逆性,可逆的基于提升方案的整數(shù)-整數(shù)小波變換被采用?;谔嵘桨傅恼麛?shù)—整數(shù)小波變換將整數(shù)映射到整數(shù),在小波正變換和逆變換中并不產(chǎn)生任何信息的丟失,在本文的水印策略中采用LeGall5/3整數(shù)小波變換[14]。在一個(gè)一維的信號(hào)s=[s0,1,s0,2,…,s0,N],這里s0,i是整數(shù),s1,n代表一級(jí)小波正變換分解后的低頻系數(shù),d1,n代表高頻系數(shù)??杀硎緸椋?/p>
d1,n=s0,2n+1-?1/2(s0,2n+s0,2n+2)+1/2」s1,n=s0,2n+?1/4(d1,n-1+d1,n)+1/2」
(1)
其中,sj,n和dj,n分別代表第j級(jí)小波轉(zhuǎn)換的第n個(gè)低頻和高頻小波系數(shù)。函數(shù)?·」代表向下取整函數(shù)。和一般的小波變換方法一樣,第一級(jí)分解得到的小波低高頻系數(shù)可以進(jìn)一步分解為更高的級(jí)數(shù)。為了將二維的信號(hào)如圖像進(jìn)行一級(jí)分解,利用式(1)分別在水平和垂直兩個(gè)方向進(jìn)行。分級(jí)的逆向轉(zhuǎn)換可用下式表示:
s0,2n=s1,n-?1/4(d1,n-1+d1,n)+1/2」s0,2n+1=d1,n+?1/2(sj,ndj,n+s0,2n+2)+1/2」
(2)
1.2 直方圖平移
直方圖平移方法是常用的一種無(wú)損數(shù)據(jù)隱藏方法。直方圖平移方法的嵌入原理是產(chǎn)生一個(gè)間隙,這個(gè)間隙就是在原始圖像直方圖或者轉(zhuǎn)換域直方圖中嵌入數(shù)據(jù)能利用的自由空間。用一個(gè)例子來(lái)說(shuō)明直方圖方法嵌入數(shù)據(jù)的過(guò)程。圖2給出了一個(gè)灰度圖像的HH子帶系數(shù)的直方圖,注意高頻子帶的系數(shù)集中于0值點(diǎn)附近。
圖2 灰度圖像的HH子帶系數(shù)直方圖
為了在系數(shù)值為n處嵌入數(shù)據(jù),首先要產(chǎn)生嵌入間隙,將所有值大于n的系數(shù)值加1,如圖3所示,這里n=0。在間隙產(chǎn)生后,二進(jìn)制的水印消息可以嵌入在自由空間。當(dāng)然,也可以將系數(shù)向反方向進(jìn)行調(diào)整,例如,選擇系數(shù)為-1的嵌入水印,那么所有小于-1的系數(shù)往負(fù)方向調(diào)整一個(gè)幅度來(lái)產(chǎn)生間隙。
圖3 直方圖間隙示意圖
在嵌入時(shí),掃描系數(shù)值,所有系數(shù)值等于0的系數(shù)為可嵌入水印的系數(shù)。如果待嵌入的水印為0,那么當(dāng)前的系數(shù)保持不變;如果待嵌入的水印為1,那么將當(dāng)前的系數(shù)加1。如果帶嵌入數(shù)據(jù)的總量大于系數(shù)值等于n的系數(shù)個(gè)數(shù),那么可以繼續(xù)利用其他的系數(shù)值來(lái)產(chǎn)生更多的自由空間。在提取端,掃描所有的系數(shù),所有值等于n或者n+1的系數(shù)含有水印信息。如果當(dāng)前系數(shù)值等于n,那么解碼水印位0;如果當(dāng)前系數(shù)值等于n+1,解碼水印位1,并且將系數(shù)值減去1恢復(fù)原始系數(shù)值。通過(guò)這種方法可以將嵌入過(guò)程中所有修改后的系數(shù)恢復(fù),從而無(wú)損恢復(fù)出原始圖像。
基于整數(shù)小波變換的數(shù)字圖像可逆水印算法嵌入過(guò)程如圖4所示。嵌入算法主要由6個(gè)主要模塊組成,其中,整數(shù)—整數(shù)小波正變換和逆變換分別將圖像從空域轉(zhuǎn)換為頻域和從頻域轉(zhuǎn)換為空域。嵌入?yún)?shù)選擇模塊用于選擇水印嵌入的位置,防溢出模塊用于防止嵌入過(guò)程中由于溢出而引起的圖像嚴(yán)重失真現(xiàn)象,并減少附加信息的長(zhǎng)度。直方圖平移模塊用來(lái)進(jìn)行水印嵌入,嵌入停止參數(shù)選擇模塊用于在嵌入過(guò)程中控制算法的嵌入容量和圖像失真。
圖4 算法嵌入過(guò)程圖
2.1 防溢出處理
在圖像的小波系數(shù)上采用直方圖平移方法嵌入數(shù)據(jù)會(huì)引起空域上像素值的變化,這種變化可能會(huì)導(dǎo)致不可避免的上溢和下溢現(xiàn)象。以8 bit深度的數(shù)字圖像為例,上溢代表像素值超過(guò)了255,下溢代表像素值小于0,雖然在圖像顯示的時(shí)候,大于255的像素值會(huì)產(chǎn)生截?cái)啵?57的像素值會(huì)突變成1,從直觀上看一個(gè)白色的像素點(diǎn)突變成黑色的點(diǎn),這就會(huì)造成圖像顯示時(shí)出現(xiàn)鹽椒噪聲現(xiàn)象,嚴(yán)重影響圖像質(zhì)量。為了防止溢出,大多數(shù)解決方法均利用位置映射圖來(lái)標(biāo)明哪些系數(shù)不能更改。為了將映射圖傳遞給解碼端,映射圖一般會(huì)經(jīng)過(guò)壓縮處理并且嵌入在宿主媒體中。如果采用的壓縮方法是無(wú)損的,那么壓縮率通常不會(huì)很大,映射圖信息會(huì)占用大部分的嵌入容量空間,從而使得實(shí)際可嵌入水印信息減少。上述問(wèn)題在早些的基于差值擴(kuò)展的無(wú)損水印算法中尤為明顯。
本文提出了一個(gè)新的產(chǎn)生映射圖的方法,新方法充分利用小波轉(zhuǎn)換的特點(diǎn)來(lái)減少系數(shù)映射圖大尺寸的問(wèn)題。小波轉(zhuǎn)換顯示出了在圖像空域和頻域中的良好關(guān)聯(lián)性和分辨率,其高頻子帶攜帶了圖像的空域信息。由于溢出問(wèn)題的產(chǎn)生源于那些處于邊界的像素,所以在頻域上定位相應(yīng)系數(shù)是可能的。在定位這些特別的系數(shù)后,在嵌入過(guò)程中,映射圖被參照來(lái)排除這些接近邊界值的像素。為了更清楚地說(shuō)明本文采用的防溢出方法,以一個(gè)實(shí)例說(shuō)明。假設(shè)原始的信號(hào)是一個(gè)4×4的二維數(shù)組,數(shù)組的值為像素值,并且在嵌入過(guò)程中要排除小于10和大于250灰度的像素值。原始信號(hào)數(shù)組如圖5所示。
圖5 原始信號(hào)數(shù)組
引入一個(gè)4×4的二進(jìn)制系數(shù)映射數(shù)組,數(shù)組的值取1和0,取1的點(diǎn)對(duì)應(yīng)圖4中的相同位置的像素值可以被修改,取0的不能修改,則映射數(shù)組如下所示:
為了找到相應(yīng)的小波系數(shù),首先將圖5的原始信號(hào)進(jìn)行整數(shù)小波變換。為不失一般性,假設(shè)嵌入過(guò)程選取HH子帶中嵌入1 bit信息“1”。圖6給出了原始信號(hào)進(jìn)行整數(shù)小波變換后獲取的HH子帶系數(shù)。
圖6 整數(shù)小波變換后獲取的高頻子帶系數(shù)
為了處理HH子帶的尺寸和減小二進(jìn)制映射數(shù)組的大小,可以利用降低采樣的方法得到新的二進(jìn)制映射數(shù)組[1 1;1 0],即使映射數(shù)組的維數(shù)不一樣,但是HH子帶包含了大量的原始圖像的空域信息,這個(gè)方法是有效的,這樣嵌入過(guò)程中選擇{-130,-203,-198}進(jìn)行嵌入。原始的映射數(shù)組的維數(shù)和原始圖像的一致,在絕大多數(shù)圖像中存在大量的冗余信息,因?yàn)槌嗽趫D像的邊緣部分,圖像的像素變化平緩,很少有突變的情況發(fā)生。所以,為了減少映射數(shù)組的大小,原始的映射數(shù)組能容易被降低采樣。實(shí)驗(yàn)結(jié)果也證明,從Hp子帶中通過(guò)提升采樣的方法能產(chǎn)生HH1的映射數(shù)組。這意味著,總的系數(shù)映射數(shù)組的尺寸能限定到一個(gè)子帶的系數(shù)映射數(shù)組的尺寸,為了使方法更加有效,映射數(shù)組的尺寸可以進(jìn)一步減小。在提出的方法中,選擇的小波映射數(shù)組為Hp子帶的大小,僅為原始圖像的1/64。這個(gè)映射信息作為水印的附加信息嵌入,并且用于解碼端的數(shù)據(jù)提取和圖像恢復(fù)。
2.2 嵌入?yún)?shù)選擇
在本文的方法中,水印信息嵌入在轉(zhuǎn)換域圖像的高頻系數(shù)中。高頻子帶又稱為細(xì)節(jié)子帶,其分布特點(diǎn)近似為中值為0的拉普拉斯分布。事實(shí)上,為了最小化嵌入帶來(lái)的失真和最大化嵌入容量,直方圖平移從0值點(diǎn)開(kāi)始,數(shù)據(jù)嵌入在第一次產(chǎn)生的間隙中。如果在所有0值點(diǎn)的系數(shù)都被利用完后還有數(shù)據(jù)沒(méi)有嵌入,系數(shù)等于-1的繼續(xù)被平移。通過(guò)連續(xù)的操作,系數(shù)值等于2(原始系數(shù)等于1,但是由于第一次平移后變成了2),等于-3,4,-5等等系數(shù)依次被平移直到所有的數(shù)據(jù)都被嵌入,或者是滿足算法停止條件為止。如果算法停止條件滿足,嵌入算法轉(zhuǎn)到另一個(gè)子帶或者更深級(jí)別的小波分解的系數(shù)中開(kāi)始上述的多級(jí)嵌入過(guò)程。
在每個(gè)子帶中從值等于0的系數(shù)開(kāi)始進(jìn)行直方圖平移嵌入數(shù)據(jù)的優(yōu)勢(shì)在于,在嵌入相同數(shù)量的數(shù)據(jù)時(shí)只需要更小幅度的平移調(diào)整。直方圖中平移的數(shù)量直接影響到了最高幅度處的系數(shù),并導(dǎo)致水印圖像失真。另外,不同子帶的小波系數(shù)具有不同的能量,對(duì)最后形成的水印圖像和失真級(jí)別的影響也不一樣。提出的方法利用這些特性來(lái)獲得水印圖像的更高視覺(jué)質(zhì)量和峰值信噪比。所以,嵌入過(guò)程總是首先選擇在第一級(jí)整數(shù)小波轉(zhuǎn)換的HH1子帶中嵌入數(shù)據(jù)。為了獲得最好的視覺(jué)質(zhì)量和最小的失真,定義了一個(gè)算法停止參數(shù)γ1,γ1為所有可選擇系數(shù)集合{0,-1,2,-3,…,m}的順序,這里m就是當(dāng)前子帶中最后一個(gè)可利用的系數(shù)。例如γ1=4意味著平移操作一直執(zhí)行到系數(shù)集合中的第4個(gè)值為止,即-3是最后一個(gè)進(jìn)行平移嵌入數(shù)據(jù)的系數(shù)。如果γ1已經(jīng)滿足情況下,嵌入所需的空間并未滿足,那么轉(zhuǎn)向HL1和LH1子帶進(jìn)行操作,同時(shí)要考慮在這些子帶中操作造成的失真和容量等性能。之后,最有效的停止參數(shù)γ2也會(huì)被找到。如果需要更多的嵌入空間,這個(gè)過(guò)程會(huì)一直持續(xù)到更深級(jí)別的小波變換(如Hp,HL2/Lp等)。值得注意的是,γ1被限定為嵌入過(guò)程中所有HH子帶中的停止參數(shù),而γ2是不同小波級(jí)別中所有HL和LH子帶中的參數(shù)。雖然可以為每一個(gè)分解級(jí)別的每一個(gè)子帶制定停止參數(shù),但考慮到算法的復(fù)雜度和對(duì)算法性能的改進(jìn)并不明顯,本文的算法僅僅討論γ1和γ2兩個(gè)參數(shù)。停止參數(shù)的選擇確保了參加平移操作的系數(shù)總和大于待嵌入的水印信息和附加信息。如果帶嵌入的數(shù)據(jù)量大于了所有小波級(jí)別中可利用系數(shù)的總和,那么算法僅采用單層嵌入過(guò)程是不可行的,必須進(jìn)行多層嵌入。多層嵌入的意思是當(dāng)?shù)谝淮吻度脒^(guò)程全部結(jié)束后,在得到的第一層水印圖像中繼續(xù)采用相同的方法進(jìn)行第二次嵌入,由于算法的可逆性,多層嵌入策略是可取的。
2.3 嵌入停止參數(shù)選擇
該算法一個(gè)顯著創(chuàng)新點(diǎn)就是選擇最佳的停止條件和參數(shù)來(lái)最大化嵌入容量和將失真級(jí)別控制到最低。γ1和γ2兩個(gè)參數(shù)對(duì)算法性能起著至關(guān)重要的作用,并且分別被用于嵌入過(guò)程中的編碼和提取過(guò)程中的解碼操作,獲取兩個(gè)參數(shù)過(guò)程如下所示:
(1) 算法開(kāi)始時(shí),設(shè)γ1和γ2的初值為0,并且對(duì)載體圖像進(jìn)行1級(jí)整數(shù)—整數(shù)的小波變換。
(2) 一個(gè)循環(huán)過(guò)程用來(lái)評(píng)估不同階段下的水印圖像性能。這個(gè)過(guò)程開(kāi)始時(shí),根據(jù)γ1的值(其值可能有正數(shù)或者負(fù)數(shù))平移所有HH1子帶中的系數(shù),在第一次循環(huán)時(shí),γ1=1,所以第一次平移嵌入將所有的系數(shù)值變?yōu)榇笥诨蛘叩扔?。然后,開(kāi)始檢查平移產(chǎn)生的自由空間(要考慮2.1節(jié)中系數(shù)映射圖)是否足夠嵌入總的水印負(fù)載。如果需要更多的嵌入空間,計(jì)算將γ1的值加1情況下,平移HH1子帶中的系數(shù)形成的圖像的峰值信噪比PSNR1。另外,計(jì)算在γ1=0時(shí)平移HL1和LH1子帶后形成圖像的峰值信噪比PSNR2。如果PSNR1≥PSNR2,那么循環(huán)繼續(xù),否則重置γ1。這個(gè)步驟確保了最后獲得較好的γ1,使得直方圖平移嵌入數(shù)據(jù)具有最高的水印圖像質(zhì)量,即最大的PSNR值。
(3) 如果在子帶HL1和LH1中平移得到的圖像質(zhì)量更高,則需要確定第二個(gè)停止參數(shù)γ2。選擇的子帶名需要被記錄下來(lái),表示為subidx,作為附加信息或者頭信息在嵌入過(guò)程中指明HH1子帶后參與操作的子帶是HL1還是LH1。這些信息作為數(shù)據(jù)提取和原始圖像恢復(fù)時(shí)的依據(jù)。
(5) 一旦獲得了γ1和γ2,將兩個(gè)停止參數(shù)用來(lái)檢查是否有足夠的空間來(lái)嵌入水印負(fù)載。如果宿主圖像可以滿足,停止參數(shù)被用來(lái)指導(dǎo)不同小波級(jí)系數(shù)中的數(shù)據(jù)嵌入,并且能保證水印圖像的最小失真。另外一種情況是宿主圖像不能滿足嵌入要求,策略要犧牲一定的失真級(jí)別來(lái)增加嵌入容量,在γ1和γ2的值基礎(chǔ)上繼續(xù)進(jìn)行平移嵌入。雖然最終導(dǎo)致停止參數(shù)會(huì)偏離最優(yōu)點(diǎn),但是可以增加數(shù)據(jù)的嵌入容量,當(dāng)然必須保證形成的水印圖像具有可接受的視覺(jué)質(zhì)量。
2.4 水印嵌入和提取過(guò)程
圖7給出了本文算法設(shè)計(jì)的單層水印嵌入流程。
圖7 單層水印嵌入過(guò)程圖
水印提取是嵌入的逆過(guò)程,其過(guò)程簡(jiǎn)要說(shuō)明如下:
(1) 將水印圖像進(jìn)行整數(shù)小波變換,提取頭信息;
(2) 利用頭信息提取總的負(fù)載,利用可逆直方圖變換將不同小波級(jí)別的不同子帶的系數(shù)進(jìn)行恢復(fù);
(3) 如果根據(jù)頭信息判斷出仍然有剩余部分的水印信息沒(méi)有提取完,則重復(fù)提取過(guò)程,直到最后一個(gè)部分的水印信息被提取。換句話說(shuō),提取過(guò)程要進(jìn)行與嵌入過(guò)程中相同的次數(shù);
(4) 當(dāng)所有的水印被提取后,也就是說(shuō)所有被修改的系數(shù)被恢復(fù),采用可逆整數(shù)小波變換得到原始圖像。提取出的水印按照之前劃分的順序進(jìn)行重組,并且使用解密密鑰進(jìn)行解密得到恢復(fù)后的水印。
水印嵌入和提取算法偽碼描述如下:
算法1:水印嵌入算法
1: 讀取原始圖像,并生成系數(shù)映射矩陣
2: 讀取原始水印信息,獲取水印總長(zhǎng)度
3: 將原始圖像進(jìn)行整數(shù)—整數(shù)小波變換
4: 根據(jù)系數(shù)映射矩陣,獲取嵌入停止參數(shù)
5: 記錄附加信息與原始水印信息一起形成總的嵌入負(fù)載
6: 直方圖平移嵌入數(shù)據(jù)
7: if 單次嵌入不能嵌入所有負(fù)載 then
8: 將水印圖像作為原始圖像,將剩余水印信息作為原始水印,轉(zhuǎn)步驟1執(zhí)行
9: end if
10: 得到最終水印圖像
在嵌入過(guò)程中,為了保證水印信息的安全,對(duì)其進(jìn)行加密處理,嵌入的數(shù)據(jù)包含水印負(fù)載和頭信息,頭信息包含了系數(shù)映射信息、停止參數(shù)、小波分解級(jí)數(shù)和水印嵌入重?cái)?shù)。
算法2:水印提取算法
1: 讀取原始水印圖像
2: 將水印圖像進(jìn)行整數(shù)—整數(shù)小波正變換
3: 進(jìn)行水印負(fù)載提取
4: 對(duì)水印負(fù)載進(jìn)行分解,得到附加信息和水印負(fù)載
5: 可逆直方圖平移恢復(fù)系數(shù)
6: if 水印提取未完成 then
7: 轉(zhuǎn)步驟2執(zhí)行
8: end if
9: 將水印圖像進(jìn)行整數(shù)—整數(shù)小波逆變換
10: 得到原始宿主圖像
實(shí)驗(yàn)隨機(jī)選取了3副常見(jiàn)的自然灰度圖像(Lena, Baboon, Peppers均來(lái)自網(wǎng)絡(luò),512×512×8 bit深度,BMP格式,水平和垂直分辨率均為71 DPI,大小均為257 KB)和3幅醫(yī)學(xué)灰度圖像(MRI_Skull, CT_Lung和US_Womb來(lái)自中南大學(xué)湘雅醫(yī)院數(shù)據(jù)中心,512×512×8 bit深度,JPG格式,水平和垂直分辨率均為72 DPI,大小均為39.7 KB),如圖8所示。編程環(huán)境為Matlab 7.0和Windows XP操作系統(tǒng)(主頻1.6 GHz,內(nèi)存1.25 GB)。
圖8 試驗(yàn)中選取的測(cè)試圖像
水印嵌入容量用bpp衡量,嵌入水印信息使用Matlab中的rand()隨機(jī)函數(shù)產(chǎn)生。圖像失真度衡量PSNR計(jì)算公式如下:
(3)
其中,M,N,P分別代表圖像的寬、高和位深度,I(i,j)和Iw(i,j)分別代表原始圖像和水印圖像像素值。
3.1 算法復(fù)雜度分析
本文算法的計(jì)算復(fù)雜度取決于小波轉(zhuǎn)換和直方圖平移的操作。標(biāo)準(zhǔn)離散小波轉(zhuǎn)換的時(shí)間復(fù)雜度是O(N)。直方圖平移的計(jì)算復(fù)雜度與輸入像素的個(gè)數(shù)N和平移次數(shù)k1直接相關(guān),時(shí)間復(fù)雜度為O(k1×N)。另外,本文的算法需要計(jì)算在第一級(jí)小波轉(zhuǎn)換中的高頻子帶中進(jìn)行調(diào)整造成水印圖像的PSNR值,用來(lái)決定停止參數(shù)。這些計(jì)算的花費(fèi)與第一級(jí)小波轉(zhuǎn)換的高頻子帶中直方圖調(diào)整的總次數(shù)k2成正比,與每一步中的小波分解也成正比關(guān)系。所以,算法總的時(shí)間復(fù)雜度為O(k1×N2)。
3.2 實(shí)驗(yàn)結(jié)果
圖9給出了不同的載體圖像在不同的嵌入容量下的PSNR值測(cè)試結(jié)果。
圖9 不同載體圖像在不同的嵌入容量下的PSNR測(cè)試結(jié)果
從圖9中可以看出,首先除Baboon圖像外,其他圖像能在嵌入容量達(dá)到接近1 bpp時(shí)保持較好的水印圖像質(zhì)量,PSNR值在30 dB以上。其次,醫(yī)學(xué)圖像的實(shí)際嵌入性能明顯優(yōu)于自然圖像,由于醫(yī)學(xué)圖像的特點(diǎn),小波系數(shù)的直方圖更加集中于0點(diǎn),并且仍然保持拉普拉斯分布。這表明少量的直方圖平移能產(chǎn)生高的水印嵌入空間,并且?guī)?lái)更小的失真,這個(gè)特點(diǎn)比自然圖像具有優(yōu)勢(shì)。另外,同樣類型的圖像,由于其自身紋理特征不同,嵌入性能有著明顯差異,如Baboon圖像紋理最為復(fù)雜,其高頻系數(shù)直方圖中分布相對(duì)均勻,造成更多的系數(shù)用來(lái)嵌入數(shù)據(jù),相比實(shí)驗(yàn)中其他的自然圖像具有最低的PSNR值,在目前的算法中,很少有算法能在Baboon這樣的圖像載體中單層嵌入容量達(dá)到1 bpp。醫(yī)學(xué)圖像中,US_Womb圖像的紋理最為復(fù)雜,相鄰像素間相關(guān)性較差,其嵌入性能最差,接近于一般的自然圖像,如Lena。由于數(shù)據(jù)嵌入在高頻小波子帶中,每一個(gè)水印圖像具有高頻噪聲,并且由于更高高頻系數(shù)的存在,比原始圖像更加銳化,但是即使在較低的PSNR值情況下,也沒(méi)有對(duì)圖像的視覺(jué)質(zhì)量造成嚴(yán)重的影響??傮w上來(lái)看,在每一個(gè)負(fù)載容量下的失真性能取決于每個(gè)圖像本身的特征,這是因?yàn)槊恳环鶊D像的高頻和低頻系數(shù)的數(shù)量不同,并且灰度直方圖的形狀影響了防止溢出過(guò)程中的系數(shù)映射矩陣。另外由于醫(yī)學(xué)圖像通常具有12 bit位深度,本文研究了圖像位深度對(duì)本文算法的影響,通過(guò)實(shí)驗(yàn)分析發(fā)現(xiàn),同一幅MRI_Skull的醫(yī)學(xué)圖像,12 bit位深度的嵌入容量要遠(yuǎn)遠(yuǎn)高于8 bit位深度的圖像,因?yàn)樵谟?2 bit位深度表示圖像像素時(shí),最高的像素值達(dá)到4095,一般的圖像像素值不會(huì)利用到如此大的空間,處于上溢邊緣的像素大大減少,減小了附加信息的長(zhǎng)度。另外通過(guò)小波分解后,高頻子帶系數(shù)處于0值附近的數(shù)量大幅增加,增加了嵌入容量。
為了得到更高的嵌入容量,可以采用多層嵌入策略。在多層嵌入策略中,水印圖像被多次用來(lái)執(zhí)行嵌入過(guò)程,從而嵌入更多的數(shù)據(jù)。圖10給出了Lena在采用本文算法進(jìn)行多層嵌入后的結(jié)果。為了更好觀測(cè)失真現(xiàn)象,對(duì)圖像進(jìn)行放大處理,Lena測(cè)試圖像在經(jīng)歷2層和3層嵌入后得到的水印圖像,其嵌入容量可以得到2.7 bpp。通過(guò)比較原始圖像和高嵌入容量的水印圖像發(fā)現(xiàn),具有低的PSNR的圖像并不一定意味著低的視覺(jué)質(zhì)量。雖然銳化影響加強(qiáng)了并且比較容易被察覺(jué),但是圖像的視覺(jué)質(zhì)量對(duì)肉眼是可接受的。
圖10 Lena多層嵌入測(cè)試結(jié)果
為了比較本文算法與相似方法的性能,選取了2個(gè)具有代表性的算法,分別為文獻(xiàn)[6]提出的方法,該方法在基于差值擴(kuò)展方法中具有較好的性能,另外一個(gè)為文獻(xiàn)[15]提出的方法,該方法利用直方圖平移和差分直方圖嵌入數(shù)據(jù)。嵌入圖像以Baboon為例,實(shí)驗(yàn)結(jié)果如圖11所示。
從圖11可以看出,相比其他的方法而言,本文方法在嵌入容量bpp>0.4時(shí)具有高的嵌入性能,在低的嵌入容量時(shí),文獻(xiàn)[6]的方法具有更高的PSNR值,因?yàn)閷?duì)嵌入塊的選擇進(jìn)行了優(yōu)化,而本文提出的方法對(duì)所有具有相同值的系數(shù)進(jìn)行了統(tǒng)一調(diào)整。文獻(xiàn)[6]的方法的最高嵌入容量只有0.7 bpp。文獻(xiàn)[15]通過(guò)仔細(xì)選擇和調(diào)整直方圖平移開(kāi)始系數(shù)和限制待嵌入數(shù)據(jù)的數(shù)量可以得到更高的PSNR值,這樣,算法的復(fù)雜度將會(huì)顯著增大,然而帶來(lái)的視覺(jué)質(zhì)量的提升確是十分有限的。另外,從實(shí)驗(yàn)結(jié)果中可以看出,通常情況下,基于頻域的算法比基于空域的算法具有更好的性能,這是因?yàn)樵陬l域數(shù)據(jù)的相關(guān)性更好,能夠產(chǎn)生更多的空間來(lái)進(jìn)行信息隱藏,并且能將失真級(jí)別控制在可接受的范圍。這一點(diǎn)在嵌入高容量數(shù)據(jù)時(shí)體現(xiàn)的尤為明顯。
圖11 與相似方法比較結(jié)果
本文提出了一種基于整數(shù)小波變換和直方圖平移的數(shù)字圖像可逆水印算法。利用整數(shù)小波分解后的高頻系數(shù)進(jìn)行水印嵌入,嵌入?yún)?shù)的選擇算法保證了高的嵌入容量,嵌入停止參數(shù)選擇算法保證了水印圖像的保真度。另外為了有效防止嵌入過(guò)程中產(chǎn)生的溢出現(xiàn)象,提出了新的位置映射方法。實(shí)驗(yàn)結(jié)果表明,該方法具有較大的嵌入容量并將圖像失真控制在較好的范圍內(nèi)。另外,本文方法可以執(zhí)行多級(jí)嵌入以獲得更高的嵌入容量。該方法可用于在醫(yī)學(xué)數(shù)字圖像中進(jìn)行病人電子病歷隱藏,實(shí)現(xiàn)診斷圖像與電子病歷的有效匹配,并能節(jié)省存儲(chǔ)空間和傳輸帶寬,具有較好的應(yīng)用前景。
[1] 王繼軍.圖像差值空間大容量可逆數(shù)字水印算法[J].中國(guó)圖象圖形學(xué)報(bào),2014,19(4):527-533.
[2] Deng X H,Chen Z G,Zeng F,et al.Authentication and Recovery of Medical Diagnostic Image Using Dual Reversible Digital Watermarking[J].Journal of Nanoscience and Nanotechnology,2013,13(3):2099-2107.
[3] 高海波,鄧小鴻,陳志剛.基于可逆可見(jiàn)水印的醫(yī)學(xué)圖像隱私保護(hù)算法[J].計(jì)算機(jī)應(yīng)用,2014,34(1):119-123.
[4] 李文娜,高立群,孔祥勇,等.ROI和輪廓波結(jié)合的醫(yī)學(xué)圖像盲水印算法[J].哈爾濱工程大學(xué)學(xué)報(bào),2013,34(7):918-923.
[5] Tian J.Reversible Data Embedding Using a Difference Expansion[J].IEEE Transactions on Circuits and System for Video Technology,2003,13(8):890-896.
[6] Lee C F,Chen H L,Tso H K.Embedding Capacity Raising in Reversible Data Hiding on Prediction of Difference Expansion[J].The Journal of Systems and Software,2010,83(10):1864-1872.
[7] 邱應(yīng)強(qiáng),余輪.基于整數(shù)變換的自適應(yīng)圖像可逆水印方法[J].電子與信息學(xué)報(bào),2014,36(6):1278-1284.
[8] Ni Z,Shi Y Q,Ansari N,et al.Reversible Data Hiding[J].IEEE Transactions on Circuits and System for Video Technology,2006,16(3):354-362.
[9] 劉芳,汪玉凱.一種基于差值直方圖平移的多層可逆水印算法[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(1):303-307.
[10] 王祥,李可,付凱元,等.直方圖平移的自適應(yīng)大容量可逆水印算法[J].西安電子科技大學(xué)學(xué)報(bào),2014,41(1):124-129.
[11] 曾驍,陳真勇,陳明,等.基于零系數(shù)索引的可逆圖像水印[J].計(jì)算機(jī)研究與發(fā)展,2010,47(7):1304-1312.
[12] 呂皖麗,郭玉堂,羅斌.結(jié)合初級(jí)視皮層特性的感興趣區(qū)域數(shù)字水印算法[J].電子科技大學(xué)學(xué)報(bào),2011,40(6):915-920.
[13] Chang C C,Pai P Y,Yeh C M,et al.A High Payload Frequency-based Reversible Image Hiding Method[J].Information Sciences,2010,180(11):2286-2298.
[14] 高廣春,趙勝穎,朱紅麗,等.基于提升格式的自適應(yīng)預(yù)測(cè)小波變換算法[J].電路與系統(tǒng)學(xué)報(bào),2010,15(5):31-34.
[15] 鄭淑麗,邢慧芬,王美玲,等.基于直方圖平移和差分直方圖的可逆水印[J].系統(tǒng)仿真學(xué)報(bào),2013,25(11):2717-2722.
A DIGITAL IMAGE REVERSIBLE WATERMARKING ALGORITHM BASED ON INTEGER WAVELET TRANSFORM
Chen Liang Liu Huiwen Deng Xiaohong
(CollegeofAppliedScience,JiangxiUniversityofScienceandTechnology,Ganzhou341000,Jiangxi,China)
In order to overcome the deficiencies of execution reversibility and embedding capacity in frequent domain-based lossless digital watermarking algorism, we presented an integer wavelet transform-based lossless digital image watermarking algorithm for image’s reversible data hiding with high capacity. First we conducted the LeGall5/3 integer wavelet transform on original image, and then embedded watermark into high frequency sub-bands using histogram shifting method. In order to obtain the maximum embedding capacity and to reduce image distortion, we proposed the embedding parameters and stopping parameters selection method respectively. At the same time, in order to prevent overflow phenomenon and to reduce additional information, we proposed a new location mapping generation method. Experimental results showed that the proposed algorithm had good performances in fidelity of watermarked image and embedding capacity. In addition, the comparison with similar method also proved the superiority of the proposed algorithm. The algorithm is applicable to carrying out secret communication in digital image carries.
Integer wavelet transform Reversible digital watermarking Histogram shifting Information hiding
2014-11-07。國(guó)家自然科學(xué)基金項(xiàng)目(61272494,4136 2015);江西省教育廳教改項(xiàng)目(JZJG14341)。陳亮,講師,主研領(lǐng)域:信息安全。劉惠文,助教。鄧小鴻,副教授。
TP391
A
10.3969/j.issn.1000-386x.2016.04.067