本發(fā)明屬于計算機信息安全領域。用于圖像版權保護,數(shù)據(jù)安全,以及安全的隱蔽通信。
背景技術:
當今時代,數(shù)字多媒體的爆炸式增長,特別是流媒體與圖形圖像更得到急速的傳播。然而,多媒體技術在給社會帶來進步的同時,由于數(shù)字媒體在網(wǎng)絡上的存儲,傳播等變得更加方便及易于獲取,盜版以及篡改等未被授權的復制等非法使用,也使得多媒體的知識產(chǎn)權保護異常的迫在眉睫。數(shù)字水印技術的出現(xiàn)于發(fā)展,毫無疑問成為版權保護的理想途徑。
數(shù)字多媒體數(shù)據(jù)希望能夠在匱乏的空間和日益緊張的帶寬內存儲與傳輸高清高品質的圖像,并在不同的不可預見的即時應用場景下,獲得在分辨率或質量上滿足差異化的重構圖像。早期的JPEG圖像壓縮標準不足以滿足新時期涌現(xiàn)出來的新需求,JPEG2000圖像壓縮標準也因此順應而生。JPEG2000具有漸進傳輸特性,在網(wǎng)絡中傳輸時,這種支持多分辨率表示的特性,包含了不同尺度的信息。一次壓縮,卻可以解壓出滿足不同需求的多分辨圖像,同時應對不同分辨率需求的應用和適配差異化的目標設備。遺憾的是,目前鮮有成熟實用的多尺度水印算法。雖然有相關文獻分析了關于JPEG2000質量可伸縮對于魯棒性水印的影響,但并不適用于分辨率可伸縮的碼流。部分基于JPEG2000的多尺度水印算法只能嵌入偽隨機序列,需要通過判定相似度并且設定相應閾值來確定水印是否存在,這樣的算法水印可辨識性弱。
技術實現(xiàn)要素:
本發(fā)明的目的是針對上述問題提供一種基于JPEG2000的多尺度拉普拉斯金字塔水印方法。
為實現(xiàn)本發(fā)明所述目的,本發(fā)明提供一種基于JPEG2000的多尺度拉普拉斯金字塔水印方法,其特征在于,該方法包括:
水印嵌入流程:將水印圖像按拉普拉斯金字塔變換分解后采用三值抖動調制方法嵌入到經(jīng)過預處理、小波變換、量化、分塊與奇異值分解后的JPEG2000圖像中,并進行EBCOT編碼,得到含水印的JPEG2000圖像;
水印提取流程:對嵌入水印的圖像進行解碼后一方面通過奇異值分解與三值抖動調制方法得到水印的位平面信息,繼而重建水印的拉普拉斯金字塔并通過拉普拉斯金字塔逆變換重構原始水印,另一方面進行小波逆變換并進行后處理,得到具有不同分辨率的JPEG2000圖像。
所述水印嵌入流程包括下列步驟:
11)將水印圖像按拉普拉斯金字塔變換分解成尺寸各異的三層圖像G2、L1和L0,作為雙精度存儲L1和L0,并分別對G2、L1和L0進行三值(-1,0,1)位平面分解;
12)預處理JPEG2000圖像,將JPEG2000圖像中的各個分量的動態(tài)范圍調整為標準動態(tài)范圍,得到預處理過的JPEG2000圖像;
13)對步驟12)中得到的預處理過的JPEG2000圖像進行3級小波變換,分解產(chǎn)生LH,HL和HH的3個高頻分量LHj,HLj和HHj以及LL的1個低頻分量LL0,其中j=1,2,3,LL0即為原始圖像;
14)分量的系數(shù)矩陣被稱為子帶,對步驟13)中得到的LHj,HLj和HHj以及LL0所對應的子帶,根據(jù)其動態(tài)范圍選擇量化步長Δ進行量化,得到量化后的JPEG2000圖像;
15)根據(jù)步驟14)中得到的量化后的JPEG2000圖像選擇嵌入子帶;
16)對步驟15)中得到的嵌入子帶中的每個2×2子塊進行奇異值分解,取出每個子塊中的第一個奇異值采用三值抖動調制的方法嵌入水印比特,得到嵌入水印比特后的子帶;
17)將步驟16)中得到的嵌入水印比特的子帶進行EBCOT兩級編碼,第—級是多通道編碼,以上下文的二元算術編碼為基礎;第二級是在第一級編碼的基礎上進行分層處理、打包操作并最終封裝成碼流得到嵌入水印后的JPEG2000圖像。
所述拉普拉斯金字塔變換包括構造高斯金字塔和變換高斯金字塔為拉普拉斯金字塔。
所述構造高斯金字塔具體為:記水印圖像為G0,作為高斯金字塔的底層,高斯金字塔的第1層圖像為Gl,w為一個二維的可分離的窗口函數(shù),即低通濾波器;利用w對Gl進行縮放,確保圖像縮放后的色彩變化不產(chǎn)生接縫效應,繼而形成了包含G0,G1...Gn各層的高斯金字塔,其中G0為塔底,Gn為頂層塔尖。
所述變換高斯金字塔為拉普拉斯金字塔具體為:水印圖像通過高斯金字塔變換生成各層圖像G0,G1...Gn;使用插值方法對各層圖像Gl進行填充,得到擴張后的圖像Gl',Gl'與Gl-1大小相等,其中第l層圖像則被表示為Ll;由L0,L1...Ln構成的金字塔即為拉普拉斯金字塔。
所述預處理JPEG2000圖像具體為:將JPEG2000圖像中的所有分量進行直流電平平移,即對所有分量減去2p-1,其中p由JPEG2000圖像內在的數(shù)據(jù)決定。
所述選擇嵌入子帶具體為:將G2的高4位平面的比特作為水印的掩碼信息嵌入到原始圖像LL0,其低4位平面作為水印的掩碼信息分別嵌入LH1和HL1中;L1的高4位平面的比特嵌入到HL2,其低4位平面的比特嵌入LH2中;而L0的高4位平面的比特嵌入到HL3,其低4位平面的比特嵌入到LH3。
所述采用三值抖動調制的方法嵌入水印比特具體為:f為待量化的數(shù)據(jù),Δ為量化步長,ω為待嵌入的水印比特,f'為量化調制后輸出的含水印系數(shù),量化步長Δ將分布的系數(shù)區(qū)間分隔為不連續(xù)的A、B、C區(qū)間集合,-1調制到A區(qū)間,0綁定B區(qū)間,1綁定C區(qū)間,當ω=-1時,f'落于與原始值距離最近的A區(qū)間的某一子區(qū)間的中點;當ω=0時,f'落于與原始值距離最近的B區(qū)間的某一子區(qū)間的中點;當ω=1時,f'落于與原始值距離最近的C區(qū)間的某一子區(qū)間的中點。
所述水印提取流程包括下列步驟:
21)EBCOT解碼嵌入水印后的JPEG2000圖像,得到特定子帶數(shù)據(jù);
22)判斷步驟21)中解碼的圖像是否含有水印,若是則對得到的特定子帶的每個2×2子塊進行奇異值分解,并采用三值抖動調制方法提取每個子塊中的第一個奇異值中水印比特,得到水印圖像的所有位平面;若否則進入步驟25);
23)根據(jù)步驟22)中得到的所有位平面重建拉普拉斯金字塔的G2、L1和L0;
24)對步驟23)中重建的拉普拉斯金字塔從頂?shù)降组_始逐層遞推,得到水印圖像G0;
25)對解碼后的JPEG2000圖像依次進行反量化、小波逆變換和JPEG2000后處理,得到具有不同分辨率的JPEG2000圖像。
所述提取每個子塊中的第一個奇異值中水印比特具體為:判斷f'所在區(qū)間,若其處在A區(qū)間,則ω=-1;若處在B區(qū)間則ω=0,若處在C區(qū)間則ω=1。
與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:
(1)本發(fā)明在充分研究JPEG2000的漸進傳輸特性的前提下,結合拉普拉斯金字塔變換的多尺度分析的特性,利用奇異值分解的內在穩(wěn)定性,提出并實現(xiàn)了一套性能良好的匹配該靜止圖像壓縮標準的多尺度灰度盲水印算法,達到了對原圖碼流的層層保護的效果,實現(xiàn)了一種能兼容JPEG2000標準漸進傳輸特性的、對整幅圖像加以保護的水印技術。
(2)本發(fā)明的水印算法具有良好的不可見性和較強的抗攻擊能力,并能夠實現(xiàn)對敏感信息的隱蔽通信、數(shù)字圖像的數(shù)字版權保護、證件的真査偽鑒別等功能,具有一定的實用價值。
(3)本發(fā)明通過對水印圖像進行拉普拉斯金字塔和多值的位平面水解,實現(xiàn)了嵌入水印容量顯著增加
(4)本發(fā)明充分利用三值抖動調制的原理,實現(xiàn)了多尺度水印的盲檢測。
(5)本發(fā)明的算法水印嵌入、提取模塊和編碼過程的各個模塊是獨立運行的,減少了各模塊之間的互相影響。
(6)本發(fā)明將水印算法直接應用于壓縮域,避免了二次壓縮造成圖像質量的損失,也節(jié)省了逆變換所消耗的資源。
附圖說明
圖1為本發(fā)明的水印嵌入流程圖;
圖2為本發(fā)明的水印提取流程圖。
具體實施方式
下面結合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
如圖1所示為本發(fā)明提出的水印嵌入方法的流程:
(11)水印比特的生成:將待嵌入的水印圖像按拉普拉斯金字塔變換分解。由于圖像的拉普拉斯金字塔變換以高斯金字塔作為基礎,因此先對水印圖像進行高斯金字塔分解:設原圖像記作G0,這也是高斯金字塔的底層(第0層),對輸入G0進行平滑的高斯濾波;接著完成隔行隔列的下采樣操作,進而輸出高斯金字塔的第一層;同樣對第一層做類似的操作輸出第二層,以此類推,各層構成圖像的高斯金字塔。
高斯金字塔的構造過程如下:首先,假設高斯金字塔的第l層圖像為Gl,w是一個二維的可分離的窗口函數(shù),實際是一個低通濾波器。利用窗口函數(shù)對Gl進行縮放,并且確保了圖像縮放后的色彩變化不會產(chǎn)生接縫效應。這樣就形成了完整的高斯金字塔,G0,G1…Gn就是其中各層圖像。其中G0為完全與原圖像等同的金字塔的底層,而頂層塔尖則表示為Gn。
再對高斯金字塔進行處理,使用插值方法對圖像Gl進行填充,得到擴張后的圖像Gl',結果Gl'的尺寸與Gl-1完全等大小。另外,集群中第l層圖像則被表示為Ll。由L0,L1…Ln構成的金字塔即為拉普拉斯金字塔。它的每一層圖像是高斯金字塔本層圖像與其高一圖像經(jīng)插值放大后圖像的差。
根據(jù)以上理論,原始圖像G0被分解為不同分辨率層次的3層圖像G2、L1、L0。其中,第一層G1由G0經(jīng)過多分辨率縮減得到,同理,第2層G2由G1變換而來。G1'由G1作插值運算得到,含G0的低頻信息,G2'由G2作插值運算得到,含G1的低頻信息,L0由G1'和G0作差值運算得到,L1由G1和G2'作差值運算得到。將L0和L1作為雙精度矩陣存儲,并分別對G2、L0和L1進行三值位平面分解。
(12)原始圖像進行預處理:一幅圖像,可能包含著一個或者多個分量,編碼器希望輸入的數(shù)據(jù)會對稱于0值,因此把各個分量的動態(tài)范圍調整為標準動態(tài)范圍。如果分量樣本是無符號數(shù),那么其動態(tài)范圍必定偏離原點0,因此需要將該樣本進行直流電平平移,即用所有樣本減去2p-1,其中p由圖像內在的數(shù)據(jù)決定。
(13)分量間變換后再通過3級小波變換分解產(chǎn)生LH,HL及HH的3個高頻系列,一個LL低頻系列。
(14)量化:經(jīng)過分量間和分量內的變換后,瓦片分量中的系數(shù)矩陣被稱為子帶,不同的子帶的動態(tài)范圍不同,故將選擇不同的量化步長,以求更大的壓縮率,量化步長的選取直接影響水印的不可見性和圖像的質量。
(15)嵌入子帶的選擇:原始圖像量化后,G2的高4位平面的比特作為水印的掩碼信息嵌入到原始圖像LL0,其低4位平面作為水印的掩碼信息分別嵌入HL1和LH1中;L1的高4位平面的比特嵌入到HL2,其低4位平面的比特嵌入LH2中;而L0的高4位平面的比特嵌入到HL3,L0的低4位平面的比特嵌入到LH3。
(16)嵌入子代的處理:對被嵌入的子帶中的每個2*2子塊進行奇異值分解,取出每個子塊中的第一個奇異值采用三值抖動調制方法嵌入水印比特。具體三值抖動調制過程如下:假設輸入f為待量化的數(shù)據(jù),量化器量化步長取Δ,待嵌入的比特為ω,量化調制后輸出為含水印系數(shù)f'。量化步長Δ將分布的系數(shù)區(qū)隔為不連續(xù)的A、B、C區(qū)間集合。遵循最近匹配量化的原則,并使得-1調制到A區(qū)間,0與B區(qū)間完成綁定,1與C區(qū)間綁定。當時ω=-1時,意味著調制后的輸出系數(shù)f'落在與原始值距離最靠近的A區(qū)間集的某一子區(qū)間的中點處;類似地,當ω=0時,f'落在與原始值距離最近的B區(qū)間集的某一子區(qū)間的中點處;同理,當ω=1時,f'落在與原始值距離最靠近的C區(qū)間集的某一子區(qū)間的中點處。
(17)EBCOT編碼:子帶系數(shù)需要進行高效有序地組織,編碼過程劃分為兩級:第—級編碼(tier-1)是多通道編碼,以上下文的二元算術編碼為基礎;第二級編碼(tier-2)是在tier-1基礎上進行分層(layer)處理、打包操作并最終封裝成碼流。
如圖2所示為本發(fā)明提出的水印提取的流程:
(21)對接收到的含水印的JPGE2000格式的碼流進行EBCOT解碼,但并不執(zhí)行逆量化,得出特定子帶數(shù)據(jù)。
(22)判斷圖像是否有水印存在,若有水印存在,則對特定子帶的每個2*2子塊做奇異值分解操作,并采用三值抖動調制法提取出每個子塊中的第一個奇異值中水印比特。說即根據(jù)含水印碼流的小波系數(shù)所屬的量化區(qū)間即可識別其相應位置的水印比特信息。至此得到了所有位平面。具體方法是:參數(shù)f被調制后,水印比特ω嵌入了量化結果f'中,提取水印比特時的原則就得根據(jù)系數(shù)所在的區(qū)間來判定:如果f'處在A區(qū)間集內,ω則對應著值為-1;如果f'落在B區(qū)間集內,則ω對應值為0;如果f'落在C區(qū)間集內,ω對應值是1。
(23)根據(jù)所得到的位平面可重建拉普拉斯金字塔的各層G2、L1和L0。
(24)由拉普拉斯金字塔逆變換重構原始水印。高斯金字塔每層的恢復,需要從拉普拉斯金字塔的由頂?shù)降组_始逐層進行遞推,最大尺寸則為原圖像G0,即提取出水印圖像。
(25)對EBCOT解碼后的碼流進行小波的逆變換,并進行后續(xù)的處理,產(chǎn)生不同分辨率的圖像。