專利名稱:一種數(shù)字圖像中可逆水印的嵌入方法及其提取方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息隱藏和數(shù)字水印技術(shù)領(lǐng)域,尤其涉及一種數(shù)字圖像中可逆水印的 嵌入方法及其提取方法。
背景技術(shù):
信息隱藏(Information Hiding)是信息安全領(lǐng)域的一個新的研究熱點,近十幾 年來該方向的研究越來越受到人們的關(guān)注,研究隊伍迅速擴(kuò)大,并且其研究成果在軍事、政 治、商業(yè)等領(lǐng)域中得到了廣泛的應(yīng)用。它為在開放的網(wǎng)絡(luò)環(huán)境下進(jìn)行涉密的數(shù)據(jù)通信、數(shù)字 產(chǎn)品的知識產(chǎn)權(quán)保護(hù)、重要文件和數(shù)字簽名的真實性鑒別以及機密文件泄密之后的消息源 頭追蹤提供了可靠的信息安全保障。數(shù)字水印(Digital Watermarking)和圖像隱寫(Steganography)是信息隱藏技 術(shù)的兩大分支。這兩大分支在技術(shù)實現(xiàn)上有很多相同之處,但又各有特點,并且其目的有很 大的不同。數(shù)字水印技術(shù)的目的是對多媒體數(shù)據(jù)進(jìn)行版權(quán)保護(hù),從而更側(cè)重于秘密信息的 穩(wěn)健性;而圖像隱寫技術(shù)的目的是為了將信息秘密地、安全地送達(dá),由于要盡可能地不引起 第三方的懷疑,因而更注重于發(fā)送消息的隱蔽性。數(shù)字水印是一種將有用信息嵌入到多媒體文件中的過程。對于大多數(shù)水印算法來 說,載體信號的冗余信息會被提取出來并用水印所替代。因而,在水印嵌入之后,載體信號 就會被破壞,并且很難從嵌入水印后的內(nèi)容中完全恢復(fù)出來。然而,在醫(yī)學(xué)和軍事上的一些 應(yīng)用中,載體圖像對于圖像分析是非常重要的。這類圖像數(shù)據(jù)完整性的保護(hù)可以通過嵌入 水印來實現(xiàn),但要求水印提取后能完全恢復(fù)原始圖像。在這種條件下,能夠提取水印并且能 夠恢復(fù)原始圖像的可逆水印的概念被提出來,為這類問題提供了一種比較好的解決方案。一般來說,評價可逆水印方法的好壞主要是從兩個方面嵌入率和視覺質(zhì)量。具體 來說,就是希望在盡可能增加嵌入率的基礎(chǔ)上,保持較小的失真度。為了達(dá)到這個目的,一 系列的方法被提出,如基于直方圖平移的算法,基于壓縮技術(shù)的算法,基于整數(shù)變換的算 法。這些方法能夠達(dá)到比較不錯的效果,也基本能夠滿足對可逆水印的應(yīng)用要求。然而,通過對以上方法的研究發(fā)現(xiàn),現(xiàn)有的用于可逆水印方法都很難同時滿足下 述的要求(1)高嵌入率。我們用單位嵌入率(即每個像素能夠嵌入的比特數(shù))來衡量各類 方法的嵌入率大小。單位嵌入率值越大,嵌入率越高,算法的嵌入能力越強。通過對比以往 算法,我們發(fā)現(xiàn),在一次嵌入的條件下,只有很少的幾個算法能夠達(dá)到1.0的單位嵌入率;(2)低失真度。我們用峰值信噪比來衡量嵌入水印后圖像的失真度。峰值信噪比 越大,失真度越低。現(xiàn)有的可逆水印方法在嵌入率比較小的情況下,峰值信噪比比較大。然 而,隨著嵌入率越來越大,峰值信噪比會較大幅度的下降,造成水印圖像的視覺效果非常不 好。(3)自由嵌入任意比特的數(shù)據(jù)。在已有的水印算法中,有很多是不能根據(jù)需要自由 選擇嵌入率,這就給可逆水印的應(yīng)用帶來了很大的不便。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)字圖像中可逆水印的嵌入方法及其提取方法,可保證更高的嵌入率以及更好的視覺效果,并解決了依照嵌入率來自由嵌入水印的問題。本發(fā)明提供一種數(shù)字圖像中可逆水印的嵌入方法,該方法包括以下步驟A.將載體圖像劃分為互不相交的像素塊,每個塊內(nèi)的像素個數(shù)相同;B.定義一個位置標(biāo)志序列,用來記錄劃分后的每個像素塊是否能夠嵌入水印而不 引起溢出問題,如果某像素塊可以嵌入水印,則其對應(yīng)的位置標(biāo)志序列位為1,否則為0。這 里溢出的定義是,假設(shè)像素值的取值范圍是O L(對于一般的灰度圖像往往是0 255), 如果嵌入之后,某些像素值小于0或者大于L,則稱此結(jié)果是溢出的;C.使用壓縮算法對得到的位置標(biāo)志序列進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序 列上添加一個獨一無二的結(jié)尾標(biāo)志序列;D.根據(jù)壓縮后的位置標(biāo)志序列的長度,把所有的像素塊分成I1, I2, I3三部分;E.對I1和I3中的不會引起溢出問題的像素塊進(jìn)行特定的整數(shù)變換,嵌入水印信 息;F.把I1像素塊中的每個像素值的最低有效位記錄在一序列C中,然后把它們用壓 縮后的位置標(biāo)志序列來代替。這里最低有效位的定義是對于一個像素值,用二進(jìn)制的形式 表示它,最后一位的數(shù)值(0/1)就是它的最低有效位。G.用與嵌入水印相同的方式把序列C嵌入到I2的像素塊中。本發(fā)明提供了一種數(shù)字圖像中可逆水印的提取方法,該方法包括以下步驟A.將嵌入水印后的圖像,與所述水印嵌入相同的方式劃分為互不相交的像素塊, 每個塊內(nèi)的像素個數(shù)相同;B.由于嵌入過程中,像素值最低有效位被提取到序列C中嵌入到I2部分,而位置 標(biāo)志序列是在I1部分,成了 I1部分新的最低有效位序列,因此按照圖像的光柵掃描順序讀 取每個像素值的最低有效位,直到獨一無二的結(jié)尾標(biāo)志序列,此時得到的序列就是壓縮后 的位置標(biāo)志序列;C.根據(jù)壓縮后的位置標(biāo)志序列的長度,可以像水印嵌入一樣把像素塊分成I1, I2, I3三部分,然后使用壓縮算法對得到的位置標(biāo)志序列進(jìn)行解壓縮,得到壓縮前的位置標(biāo)志 序列;D.參考位置標(biāo)志序列對I2中的像素塊進(jìn)行整數(shù)變換的逆變換,并由此可以獲得I2 所有像素的原始像素值以及嵌入I2中的最低有效位序列C ;E.用序列C中的值來替換I1中像素值的最低有效位;F.參考位置標(biāo)志序列對I1和I3像素塊進(jìn)行整數(shù)變換的逆變換,由此可以獲得I1 和I3所有像素的原始像素值以及嵌入I1和I3中的水印信息;本發(fā)明提供了一種實現(xiàn)可逆水印的嵌入裝置,該裝置包括分塊單元,用于將數(shù)字圖像的分成不相交的大小相等的像素塊;判定單元,用于判斷哪些像素塊是可嵌入水印的,得到位置標(biāo)志序列;壓縮單元,用于對位置標(biāo)志序列使用壓縮算法進(jìn)行壓縮,得到壓縮后的位置標(biāo)志 序列,并在壓縮后的結(jié)果末尾添加一個獨一無二的結(jié)尾標(biāo)志序列;
嵌入單元,用于嵌入可逆水印。首先根據(jù)壓縮后的位置標(biāo)志序列把像素塊分成I1,I2,13三部分,并把要嵌入的水印轉(zhuǎn)換成適合嵌入的進(jìn)制形式。然后參照位置標(biāo)志序列的標(biāo) 志位信息,對I1和I3可嵌入的像素塊進(jìn)行整數(shù)變換嵌入水印信息,并記錄嵌入后I1中像素 值的最低有效位序列。再用壓縮后的位置標(biāo)志序列替換I1中像素值的最低有效位序列,并 以與嵌入水印相同的方式把保存的I1的最低有效位序列嵌入到I2可嵌入的像素塊中。本發(fā)明提供了一種實現(xiàn)可逆水印的提取裝置,該裝置包括分塊單元,用于將數(shù)字圖像的分成不相交的大小相等的像素塊;讀取單元,用于按照順序讀取像素值的最低有效位,直到獨一無二的結(jié)尾標(biāo)志序 列,從而得到壓縮后的位置標(biāo)志序列;解壓縮單元,用于對壓縮后的位置標(biāo)志序列使用壓縮算法進(jìn)行解壓縮,得到壓縮 前的位置標(biāo)志序列;提取單元,用于提取水印并恢復(fù)原始圖像。根據(jù)壓縮后的位置標(biāo)志序列把像素塊 分成I1, I2, 13三部分,用解壓縮單元對位置標(biāo)志序列解壓縮,獲得壓縮前的位置標(biāo)志序列, 參照位置標(biāo)志序列對I2中符合條件的像素塊進(jìn)行特定的整數(shù)變換逆變換以恢復(fù)原始圖像 并提取嵌入信息,將其轉(zhuǎn)化成二進(jìn)制形式用以替換單元I1中像素值的最低有效位序列,再 利用位置標(biāo)志序列對I1和I3中符合條件的像素塊進(jìn)行特定的整數(shù)變換逆變換以恢復(fù)原始 圖像并提取水印,并恢復(fù)這兩部分的原始像素值;采用本發(fā)明,可以成功實現(xiàn)可逆水印在灰度圖像的嵌入和提取,以及原始圖像的 恢復(fù)。嵌入水印后的圖像的視覺效果良好,可以達(dá)到很高的單位嵌入率,并且能夠自由嵌入 任意嵌入率的數(shù)據(jù),另外水印提取和圖像恢復(fù)時不需要原始圖像參與。因此,本方法是一種 性能良好的可逆水印算法,可以用于醫(yī)療或者軍事圖像的信息隱藏與圖像恢復(fù)等。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于采用本發(fā)明,以成功實現(xiàn)數(shù)字水印在灰度圖像中的嵌入和提取,以及原始圖像的恢 復(fù)。嵌入水印后的圖像的視覺效果良好,能夠提供較高的嵌入能力,并且可以依照需求嵌入給 定大小的水印,水印提取時不需要原始圖像參與。因此,本方法是一種效果良好的可逆算法, 可以用于重要文檔的信息隱藏、消息源頭追蹤和版權(quán)保護(hù)等,具有廣泛的商業(yè)應(yīng)用前景。
圖1為本發(fā)明的方法流程圖;(A)可逆水印嵌入方法流程圖,(B)可逆水印提取方法流程圖,圖2為Lena的灰度圖像;(A)嵌入水印信息前,⑶嵌入水印信息后,圖3為Baboon的灰度圖像;(A)嵌入水印信息前,⑶嵌入水印信息前,圖4為Airplane的灰度圖像;(A)嵌入水印信息前,⑶嵌入水印信息前。
具體實施例方式為了能夠提高單位嵌入率,使嵌入水印的圖像保持良好的視覺效果,做到水印檢測的盲提取和圖像恢復(fù),本發(fā)明提供一種灰度圖像中可逆水印的嵌入方法和一種灰度圖像 中可逆水印的提取方法。在介紹具體的嵌入流程之前,要給出一些基本定義。首先,我們給出嵌入水印信息 所需要用到的整數(shù)變換T(X,W)<formula>formula see original document page 8</formula>其中X = (x0, X1......xn)是嵌入水印之前的像素塊的像素值集合,Y = (y0,
Y1......yn)是嵌入水印之后的像素值集合,W= (wi; W1... wn) (0 ^ Wi ^ k-Ι)是要嵌入的
水印信息,n^l,k>l是兩個給定的整數(shù)。這里,我們用嵌入水印前后,像素值差的平方
i-n
和的期望來計算某個像素塊失真的大小,可知失真大小歲go=玖Σ(只-A)2)對于一個
'=OC
確定的像素塊來說,d(x)是一個以a(X)為變量的二次函數(shù),欲令其取最小值(亦即使得失 真最小),根據(jù)計算當(dāng)取
<formula>formula see original document page 8</formula>可以證明我們給出的整數(shù)變換是單射。它的逆變換為
‘?!?+ k 」20 + 1) L k _其中i e {0,1,......η}。此逆變換用于在水印提取過程中提取嵌入的水印并恢
復(fù)原始像素值。下面定義可嵌入水印的像素塊。令A(yù) = {X = (x0, X1, ... , xn) =Xi 是整數(shù)且 0 彡 Xi 彡 255}A是大小為(η+1)的所有可能像素值組的集合。為了解決溢出問題,也就是實施整 數(shù)變換后,為了保證得到的像素值都不會超出灰度圖像像素值的取值范圍(0 255),我們 定義一個A的子集合<formula>formula see original document page 8</formula>
根據(jù)定義可知,D集合中的元素能夠保證T (X,W) e A,亦即避免了溢出問題。然 而,為了控制嵌入后的失真,我們并不是把所有像素值從屬于D的像素塊都定為可嵌入塊。 而是定義D的一個子集合St = {X e D :e(X)彡t}作為可嵌入像素塊的像素值的集合。其
中t > 0是個給定的整數(shù)。= V^ ;是對一個像素塊估計的嵌入失真。上面已經(jīng)給出了算法需要的一些基本定義。但是要進(jìn)行嵌入和提取水印的操作, 還有兩個問題沒有解決一是四個給定的參數(shù)(ni,n2,k,t)是如何確定的,二是因為提取的 時候也需要這些參數(shù),應(yīng)該如何把這些參數(shù)安全的在編碼者和解碼者之間傳遞呢?對于第 一個問題,首先我們知道,t的作用主要是控制嵌入失真的,也就是盡量選擇引起嵌入失真小的像素塊來嵌入水印。在(r^rvk)給定的條件下,t越小,則嵌入失真會越小。另一方 面,t越小,屬于St集合的像素值組就越少,可嵌入水印的像素塊也就越少,單位嵌入率也就 越低。為了既滿足嵌入水印的要求,又能盡量獲得小的失真,當(dāng)(ni,n2,k)和要嵌入的水印 大小P(單位比特)給定的條件下,我們需要對t進(jìn)行搜索,從1開始逐漸增大,直到t達(dá) 到e(X)的上限或者可嵌入水印的大小超過了 P為止。需要說明的是,如果t已經(jīng) 達(dá)到e (X)的上限而還不能滿足嵌入P比特的要求,則說明在此Oi1, n2, k)組合下,不能滿 足嵌入P比特水印的要求。對于Oi1, n2, k)來說,不同的參數(shù)選擇對于本方法的嵌入能力 以及失真大小都會有影響。為了獲得盡可能好的嵌入效果,我們設(shè)定一個取值范圍2 ^ H1, n2 ^ 5, k e {2,4,8},對(叫,n2, k)進(jìn)行枚舉,找到能夠嵌入給定比特水印的且失真最小的 參數(shù)作為我們最終選定的參數(shù)。對于第二個傳遞參數(shù)的問題,我們可以把這些參數(shù)看作輔 助信息,用一定長度的空間存儲這些輔助信息,并把它加在壓縮后的位置標(biāo)志序列前面,與 之一起嵌入到圖像中加以傳遞。這種方法還可以用于傳遞包括嵌入率在內(nèi)的所有輔助信 肩、ο可逆水印的嵌入方法的具體流程如下,參見圖I(A)步驟101 獲取灰度圖象;步驟102 將圖像劃分為互不相交的Ii1Xn2大小的像素塊,每個像素塊包含n+1個 像素,n+1 = Ii1Xn2 ;2 ( η” η2 ( 5,
步驟103 對于每一個像素塊,判斷它是否能夠嵌入水印,亦即該像素塊的像素值 組X是否滿足X e St,如果可以,記錄一個1,否則記錄一個0,由此我們就得到了二進(jìn)制表 示的位置標(biāo)志序列LM ;步驟104 用數(shù)學(xué)編碼對LM進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序列末尾添加 一個獨一無二的結(jié)尾標(biāo)志序列,由此獲得序列LMC,我們假設(shè)所得的結(jié)果序列LMC的長度為 L ;步驟105 將所有的像素塊分成三個部分=I1J2J3,其中I1包含叫=^/…+ 1)"^
像素塊,I2包括 個可嵌入水印的像素塊,其余的被劃分到I3 ; ^log2 κ步驟106 對于I1和I3中的每個像素塊,參照壓縮前位置標(biāo)志序列的記錄,如果 它是可嵌入的,亦即位置標(biāo)志序列的對應(yīng)記錄為1,則使用整數(shù)變換進(jìn)行水印嵌入,否則不 變;步驟107 記錄I1中每個像素值的最低有效位,由此獲得最低有效位序列C,并用 LMC替換I1中像素值的最低有效位。步驟108 按照嵌入水印的方法,把序列C嵌入到I2中的可嵌入像素塊中??赡嫠〉奶崛》椒ǖ木唧w流程如下,參見圖1 (B)步驟111 獲取嵌入水印信號的灰度圖像;步驟112 將嵌入水印信號的灰度圖像,按照與水印嵌入相同的方式,劃分為多個 像素塊;步驟113 按照圖像的光柵掃描順序讀取像素值的最低有效位,直到遇見結(jié)尾標(biāo) 志序列為止,由此我們可以獲得壓縮后的位置標(biāo)志序列LMC,然后根據(jù)LMC的長度L,類似于嵌入過程那樣我們可以獲得mi=「z/("+1)"i,進(jìn)而把所有的像素塊分成I1, I2, I3三個部分,
除此之外,還可以利用數(shù)據(jù)編碼對LMC解壓縮,得到壓縮前的位置標(biāo)志序列LM ;步驟114 對于I2中的每個像素塊,查看其在LM中對應(yīng)的標(biāo)志位,如果標(biāo)志位是1, 就用整數(shù)變換的逆變換進(jìn)行反解,可以獲得嵌入的水印以及像素塊原始像素值,如果像素 值為0,則不進(jìn)行任何操作,由此從I2中可以提取一個序列C,它也就是在嵌入過程中定義 的最低有效位序列;步驟115 用C替換現(xiàn)在的I1中像素值的最低有效位,對于I1和I3中的每個像素 塊,按照類似步驟114的方式進(jìn)行反解,可獲得嵌入到I1和I3中的水印信息以及它們的像 素塊的原始像素值,進(jìn)而獲得了原始圖像和嵌入水印。我們前面說過,本方法可以實現(xiàn)自由嵌入給定大小的水印信息,為了達(dá)到這個目 的,需要對上面的嵌入提取步驟做一點小的修改。假設(shè)我們要嵌入P比特的水印,在嵌入過 程中,在步驟106的時候,并不對I1和I3中的每個可嵌入水印的像素塊都嵌入,而是在嵌 入了 P比特之后,就停止嵌入過程,保持剩余像素塊不變。嵌入大小P可以按照上面說的輔 助信息傳遞方法嵌入到圖像中。而在提取的時候,我們可以先得到輔助信息P。在步驟115 中,只利用整數(shù)變換逆變換提取I1和I3中嵌入的P比特信息,保持剩余的像素塊不變。由 此可以實現(xiàn)水印信息的自由嵌入。下面結(jié)合附圖對本發(fā)明作進(jìn)一步的說明一、水印嵌入過程1、給定長度為ρ (P = L512*512mi」)的待嵌入水印信號W= {Wi j丨,其中 ,」=
0或者1。注意此時水印為二進(jìn)制表示形式。當(dāng)確定了參數(shù)k進(jìn)行嵌入時,要把水印轉(zhuǎn)換成 k進(jìn)制。2、設(shè)定一個范圍2彡ηι,η2彡5,k e {2,4,8}進(jìn)行枚舉。我們對于每一組(ni;n2, k)可能的取值,選擇相應(yīng)的合適t值,亦即讓t從1逐漸增大,直到算法可嵌入的水印比特 數(shù)不少于P。然后對于每一組的(r^rvl^t),進(jìn)行下面操作3-9。3、將圖2(A)給出的512X512的灰度圖像Lena劃分為互不相交的Ii1Xn2大小的 像素塊,每個像素塊包含(n+1) (n+1 = H1Xn2)個像素。4、對于每一個像素塊,判斷它是否嵌入水印,亦即該像素塊的像素值組X是否滿 SXe St,如果可以,記錄一個1,否則記錄一個0,由此我們就得到了二進(jìn)制表示的位置標(biāo) 志序列LM ;5、用數(shù)學(xué)編碼對LM進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序列末尾添加一個獨 一無二的結(jié)尾標(biāo)志序列,由此獲得序列LMC;用3個3比特數(shù)分別記錄叫,n2, k,用兩個32 比特數(shù)分別記錄t和P,并把這些數(shù)全部加在LMC序列前面。我們假設(shè)所得的結(jié)果序列總長 度為L。6、將所有的像素塊分成三個部分=I1J2U3,其中I1包含mi=「^/(" + 1)"l個像素塊,
I2包括 個可嵌入水印的像素塊,其余的被劃分到I3 ; log2 κ7、對于I1和I3中的每個像素塊,參照壓縮前位置標(biāo)志序列的記錄,如果它是可嵌 入的,亦即位置標(biāo)志序列的對應(yīng)記錄為1,則使用整數(shù)變換進(jìn)行水印嵌入,否則不變;直到P比特的水印信息全部嵌入完畢為止。8、記錄I1中每個像素值的最低有效位,由此獲得最低有效位序列C,并用LMC替換 I1中像素值的最低有效位。9、按照嵌入水印的方法,把序列C嵌入到I2中的可嵌入像素塊中。這里注意我們 得到的C是二進(jìn)制序列,要用整數(shù)變換進(jìn)行嵌入,首先要把它變成k進(jìn)制數(shù)據(jù)序列。10、對于上面每組Oi1,n2,k,t),計算嵌入后的失真大小,選擇失真最小的圖像作為 嵌入后的最終結(jié)果。二、水印提取過程1、根據(jù)獲取的水印圖像2(B),順序讀取像素值的最低有效位,直到遇見結(jié)尾標(biāo)志 序列為止,假設(shè)其長度為L。由讀取的前73位獲得輔助信息ni,n2,k,t和P,進(jìn)而可以按照 與水印嵌入相同的方式,把圖像劃分為多個像素塊;輔助信息后面是壓縮后的位置標(biāo)志序 列LMC,可以利用數(shù)據(jù)編碼對LMC解壓縮,得到壓縮前的位置標(biāo)志序列LM。除此之外,類似
于嵌入過程那樣我們可以獲得m1=[L/(n+1)]進(jìn)而把所有的像素塊分成I1, I2, I3三個部分;2、對于I2中的每個像素塊,查看其在LM中對應(yīng)的標(biāo)志位,如果標(biāo)志位是1,就用整 數(shù)變換的逆變換進(jìn)行反解,可以獲得嵌入的數(shù)據(jù)以及像素塊原始像素值,如果像素值為0, 則不進(jìn)行任何操作。注意此時反解整數(shù)變換提取的數(shù)據(jù)是k進(jìn)制的,要把它轉(zhuǎn)化成2進(jìn)制 形式,由此從I2中可以提取一個序列C,它也就是在嵌入過程中定義的最低有效位序列。3、用C替換現(xiàn)在的I1中像素值的最低有效位,對于I1和I3中的每個像素塊,按照 類似步驟114的方式進(jìn)行反解,可逐步獲得嵌入到I1和I3中的水印信息以及它們的像素塊 的原始像素值,進(jìn)而獲得了原始圖像和嵌入水印。但是不是I1和I3中所有的可嵌入像素塊 都嵌入了水印,所以提取的時候要參考參數(shù)P,一旦提取的水印已經(jīng)等于P,則停止反解過 程,保持像素塊不變。4、以上操作可以獲得原始圖像2 (A)以及嵌入的水印信息W= {wi,j}0最后再通過幾個實施例來說明本發(fā)明所述的在灰度圖像中嵌入可逆水印和提取 水印方法的性能。實施例一如圖3(A)所示的一幅灰度圖像Baboon,我們使用本發(fā)明所述的方法對其嵌入 Ρ = |_512*512*0.1」比特水印信息。水印嵌入的流程和所需的參數(shù)前面已經(jīng)詳述,這里不再 重復(fù)。圖3(B)是嵌入水印后的圖像??梢钥吹剑度胨『蟮膱D像的視覺效果良好,實際 上,只有鼻子周圍顏色比較單一紋理極其簡單的部分,才能稍稍看出平滑度有些許不同,其 他地方發(fā)現(xiàn)很難看出被修改的痕跡。接著通過本發(fā)明中的水印算法提取水印,可以成功提 取全部P比特的水印信息,并恢復(fù)原始圖像。上述實例可以表明使用本算法嵌入后,可以達(dá)到很好的視覺效果。實施例二 對如圖4㈧示的一幅灰度圖像Airplane,用所述的方法對其嵌入P=[512*512*1.8]比特水印信息。水印嵌入的流程和所需的參數(shù)和上一實例相同,這里不 再重復(fù)。圖4(B)是嵌入水印后的圖像。通過水印提取算法可以從中成功提取全部比特的水印信息并能夠恢復(fù)原始圖像。上述實例中我們達(dá)到了 1. 8比特的單位像素嵌入率,這在可逆水印算法中是比較難得的。說明本方法具有較高的嵌入能力。本發(fā)明提供了一種嵌入可逆水印的裝置,該裝置包括分塊單元,用于將數(shù)字圖像的分成不相交的大小相等的像素塊;判定單元,用于判斷哪些像素塊是可嵌入水印的,得到位置標(biāo)志序列;壓縮單元,用于對位置標(biāo)志序列使用壓縮算法進(jìn)行壓縮,得到壓縮后的位置標(biāo)志 序列,并在壓縮后的結(jié)果末尾添加一個獨一無二的結(jié)尾標(biāo)志序列,同時在其開頭存入各種 輔助信息;嵌入單元,用于嵌入可逆水印。首先根據(jù)壓縮后的位置標(biāo)志序列把像素塊分成I1, I2,13三部分,并把要嵌入的水印轉(zhuǎn)換成適合嵌入的進(jìn)制形式。然后參照位置標(biāo)志序列的標(biāo) 志位信息,對I1和I3可嵌入的像素塊進(jìn)行整數(shù)變換嵌入水印信息,并記錄嵌入水印后I1中 像素值的最低有效位序列。再用壓縮單元對位置標(biāo)志序列進(jìn)行壓縮,把壓縮后的位置標(biāo)志 序列替換I1中像素值的最低有效位序列,并以與嵌入水印相同的方式把保存的I1的最低有 效位序列嵌入到I2可嵌入的像素塊中。嵌入單元包括進(jìn)制轉(zhuǎn)換單元,用于把要嵌入的二進(jìn)制水印信息或者最低有效位 序列轉(zhuǎn)化成適合嵌入的k進(jìn)制形式;判斷單元,根據(jù)輸入的位置標(biāo)志序列判定一個像素塊 是否可以嵌入數(shù)據(jù);分組單元,用于根據(jù)位置標(biāo)志序列的長度把所有像素塊分成三個組I1, I2, I3 ;整數(shù)變換單元,對可以嵌入數(shù)據(jù)的一組像素值實施整數(shù)變換;替換和記錄單元,用于 記錄嵌入水印后I1中像素值的最低有效位序列,并用壓縮后的位置標(biāo)志序列替換最低有效 位序列。下面結(jié)合具體實施例對本發(fā)明的可逆水印提取以及恢復(fù)原始圖像裝置進(jìn)行說 明本發(fā)明提供了一種可逆水印提取以及恢復(fù)原始圖像的裝置,該裝置包括分塊單元,用于將數(shù)字圖像的分成不相交的大小相等的像素塊;讀取單元,用于按照順序讀取像素值的最低有效位,直到獨一無二的結(jié)尾標(biāo)志序 列,從而得到壓縮后的位置標(biāo)志序列以及各種輔助信息;解壓縮單元,用于對壓縮后的位置標(biāo)志序列使用壓縮算法進(jìn)行解壓縮,得到壓縮 前的位置標(biāo)志序列;提取單元,用于提取水印并恢復(fù)原始圖像。根據(jù)壓縮后的位置標(biāo)志序列把像素塊 分成I1, I2, 13三部分,用解壓縮單元對位置標(biāo)志序列解壓縮,獲得壓縮前的位置標(biāo)志序列, 參照位置標(biāo)志序列對I2中符合條件的像素塊進(jìn)行特定的整數(shù)變換逆變換以恢復(fù)原始圖像 并提取嵌入信息,將其轉(zhuǎn)化成二進(jìn)制形式用以替換單元I1中像素值的最低有效位序列,再 利用位置標(biāo)志序列對I1和I3中符合條件的像素塊進(jìn)行特定的整數(shù)變換逆變換以恢復(fù)原始 圖像并提取水印,并恢復(fù)這兩部分的原始像素值;提取單元包括進(jìn)制轉(zhuǎn)換單元,用于把要提取的k進(jìn)制水印信息或者最低有效位 序列轉(zhuǎn)化成二進(jìn)制形式;判斷單元,根據(jù)壓縮前的位置標(biāo)志序列判定一個像素塊是否可以 嵌入了數(shù)據(jù);分組單元,用于根據(jù)壓縮后的位置標(biāo)志序列的長度把所有像素塊分成三個組 I1, I2, I3;整數(shù)變換逆變換單元,對嵌入了數(shù)據(jù)的一組像素值實施整數(shù)變換逆變換;替換單元,用壓縮后的位置標(biāo)志序列替換I1像素值的最低有效位序列。下面結(jié)合具體實施例對本水印嵌入裝置的工作流程進(jìn)行說明(假設(shè)所有參數(shù)已 給定)步驟SOl 用嵌入裝置的分塊單元將圖像2 (A)劃分為互不相交的Ii1Xn2大小的像 素塊,每個像素塊包含(n+1) (n+1 = H1Xn2)個像素;步驟S02 用嵌入裝置的判定單元判斷每個像素塊是否可以嵌入數(shù)據(jù),由此我們 就得到了二進(jìn)制表示的位置標(biāo)志序列LM ;步驟S03 用嵌入裝置的壓縮單元對LM進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序 列末尾添加一個獨一無二的結(jié)尾標(biāo)志序列,同時在開始位置加入所有輔助信息,由此獲得 序列LMC,我們假設(shè)所得的結(jié)果序列LMC的長度為L ;步驟S04 用嵌入裝置的嵌入單元把水印信息和LMC嵌入圖像中。具體同水印嵌 入方法部分的步驟105-108。下面結(jié)合具體實施例對本水印嵌入裝置的工作流程進(jìn)行說明
步驟Sll 用嵌入裝置的讀取單元按照順序讀取像素值的最低有效位,直到獨一 無二的結(jié)尾標(biāo)志序列,從而得到壓縮后的位置標(biāo)志序列LMC以及各種輔助信息;步驟S12 用提取裝置的分塊單元將圖像2 (A)劃分為互不相交的Ii1Xn2大小的像 素塊,每個像素塊包含(n+1) (n+1 = H1Xn2)個像素;步驟S13 用提取裝置的解壓縮單元對獲得LMC解壓縮,得到壓縮前的位置標(biāo)志序 歹Ij LM0步驟S13 用提取裝置的提取單元提取水印信息并恢復(fù)原始圖像,具體步驟如水 印提取算法部分的步驟113-115。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
一種數(shù)字圖像中可逆水印的嵌入方法,其步驟為1)初始化或設(shè)定像素塊的大小為n+1個象素、整數(shù)變換為k進(jìn)制的整數(shù)變換;其中n為自然數(shù)、k為自然數(shù);2)根據(jù)像素塊的大小將載體圖像劃分為互不相交的若干像素塊;3)判斷每一像素塊是否能夠嵌入水印,并將判斷結(jié)果保存在一位置標(biāo)志序列中;4)在位置標(biāo)志序列上添加一結(jié)尾標(biāo)志序列;5)根據(jù)4)所得的位置標(biāo)志序列的長度L,把所有的像素塊劃分為I1,I2,I3三部分;其中I1包含個像素塊,I2包括個能嵌入水印的像素塊,剩余像素塊劃分到I3中;6)根據(jù)3)得到的位置標(biāo)志序列,使用k進(jìn)制的整數(shù)變換對I1和I3中的每個像素塊進(jìn)行水印嵌入;7)將I1所含像素塊中每個像素值的最低有效位記錄在一序列C中,并用4)所得的位置標(biāo)志序列替換I1中像素值的最低有效位;8)使用k進(jìn)制的整數(shù)變換將序列C嵌入到I2中的可嵌入像素塊中。FSA00000100287500011.tif,FSA00000100287500012.tif
2.如權(quán)利要求1所述的方法,其特征在于所述像素塊的大小為niXn2;其中,niXn2 = n+1,叫、 分別為像素塊的邊長;設(shè)定ni、n2、k的取值范圍,其中,2 < ni彡5,2彡n2彡5, k G (2,4,8)。
3.如權(quán)利要求2所述的方法,其特征在于所述ni、n2、k的取值方法為枚舉ni、n2、k的 取值,分別計算嵌入水印后的某像素塊失真度,選取失真度最小時的ni、n2、k的取值。
4.如權(quán)利要求1所述的方法,其特征在于所述步驟4)中,首先對得到的位置標(biāo)志序列 進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序列上添加一結(jié)尾標(biāo)志序列。
5.如權(quán)利要求1所述的方法,其特征在于所述步驟3)中,判斷每一像素塊是否能夠嵌 入水印,如果可以則在該位置標(biāo)志序列中記錄相應(yīng)像素塊的取值為1,否則為0 ;該位置標(biāo) 志序列為二進(jìn)制的位置標(biāo)志序列。
6.一種數(shù)字圖像中可逆水印的提取方法,其步驟為1)將嵌入水印后的圖像劃分為互不相交的若干像素塊;其中像素塊的大小與嵌入水 印時的大小相同,每個像素塊包含n+1個像素,n為自然數(shù);2)按照圖像的掃描順序讀取每個像素值的最低有效位,直到設(shè)定的結(jié)尾標(biāo)志序列,得 到一位置標(biāo)志序列;3)根據(jù)2)所得的位置標(biāo)志序列的長度L,把所有的像素塊劃分為Ip12,13三部分;其 中11包含m=「Z/^+1)"l個像素塊,〗2包括⑦+個能嵌入水印的像素塊,剩余像素塊 劃分到13中;k為整數(shù)變換的進(jìn)制數(shù),k的取值與嵌入水印時取值相同;4)根據(jù)2)所得的位置標(biāo)志序列對12中的像素塊進(jìn)行k進(jìn)制整數(shù)變換的逆變換,得到 12所有像素的原始像素值以及嵌入12中的序列C ;5)用序列C中的值替換L中像素值的最低有效位;6)根據(jù)2)所得的位置標(biāo)志序列對^和13像素塊進(jìn)行k進(jìn)制整數(shù)變換的逆變換,得到I和13所有像素的原始像素值以及嵌入到L和13中的水印信息。
7.一種數(shù)字圖像中可逆水印的嵌入方法,其步驟為1)設(shè)置變量r^r^k及其取值范圍,待嵌入水印信號的長度為P比特,其中,ni、n2分別 為像素塊的邊長,k為整數(shù)變換的進(jìn)制;2)枚舉ni、n2、k的取值,對于每一組(叫, ,!^,設(shè)定一失真度閾值仏如果能夠嵌入? 比特水印且嵌入像素塊的失真度小于閾值t,則記錄當(dāng)前組的四元組信息(ni,n2,k,t);3)根據(jù)每一四元組(r^rvht),將載體圖像劃分為互不相交的??!義 大小的像素塊, 每個像素塊包含n+1個像素;4)判斷每一像素塊是否能夠嵌入水印,并將判斷結(jié)果保存在一位置標(biāo)志序列中;5)將四元組(ni,n2,k,t)記錄位置標(biāo)志序列中,且在位置標(biāo)志序列上添加一結(jié)尾標(biāo)志 序列;6)根據(jù)5)所得的位置標(biāo)志序列的長度L,把所有的像素塊劃分為Ip12,13三部分;其巾+^XoTk白勺像夬,■ 像《士夬劃分到13中;7)根據(jù)4)得到的位置標(biāo)志序列,使用k進(jìn)制的整數(shù)變換對^和13中的像素塊進(jìn)行水 印嵌入,直到P比特水印信息全部嵌入;8)將^所含像素塊中每個像素值的最低有效位記錄在一序列C中,并用5)所得的位 置標(biāo)志序列替換^中像素值的最低有效位;9)使用k進(jìn)制的整數(shù)變換將序列C嵌入到12中的可嵌入像素塊中;10)計算各四元組(ni,n2,k,t)對應(yīng)的圖像嵌入失真度,選擇失真度最小的圖像作為嵌 入圖像。
8.如權(quán)利要求7所述的方法,其特征在于設(shè)定的ni、n2、k的取值范圍分別為 2 ^ rii ^ 5,2 ^ n2 ^ 5, k G (2,4,8)。
9.如權(quán)利要求7所述的方法,其特征在于閾值t的確定方法為按照當(dāng)前組(ni,n2,k) 進(jìn)行水印嵌入時,將閾值t從1開始逐漸增大,對應(yīng)于每一個t值,如果嵌入像素塊的失真 度小于當(dāng)前t值,且能夠嵌入P比特水印,則取當(dāng)前t值為當(dāng)前組(ni,n2,k)的嵌入失真度 閾值。
10.如權(quán)利要求7或8或9所述的方法,其特征在于所述步驟5)中,首先對得到的位置 標(biāo)志序列進(jìn)行無損壓縮,并在壓縮后的位置標(biāo)志序列上添加一結(jié)尾標(biāo)志序列。
11.一種數(shù)字圖像中可逆水印的提取方法,其步驟為1)按照圖像的掃描順序讀取每個像素值的最低有效位,直到設(shè)定的結(jié)尾標(biāo)志序列,得 到一位置標(biāo)志序列;2)根據(jù)位置標(biāo)志序列中的四元組(叫,n2,k,t)將圖像劃分為互不相交的像素塊;3)根據(jù)位置標(biāo)志序列的長度L,把所有的像素塊劃分為Ip12,13三部分;其中L包含<formula>formula see original document page 3</formula>像素塊,〗2包括(二1個能嵌入水印的像素塊,剩余像素塊劃分到工3中;k為整數(shù)變換的進(jìn)制數(shù),k的取值與嵌入水印時取值相同;4)根據(jù)位置標(biāo)志序列對12中的像素塊進(jìn)行k進(jìn)制整數(shù)變換的逆變換,得到12所有像素的原始像素值以及嵌入12中的序列C ;5)用序列C中的值替換L中像素值的最低有效位;6)根據(jù)位置標(biāo)志序列對像素塊進(jìn)行k進(jìn)制整數(shù)變換的逆變換,直到提取的水印 長度等于P比特,得到Ii和13所有像素的原始像素值以及嵌入到Ii和13中的水印信息。
全文摘要
本發(fā)明涉及一種數(shù)字圖像中可逆水印的嵌入方法及其提取方法,屬于信息技術(shù)領(lǐng)域。本嵌入方法為首先劃分載體圖像并建立一位置標(biāo)志序列LMC,然后把所有的像素塊分成I1,I2,I3三部分;對I1和I3中的像素塊進(jìn)行水印嵌入;把I1中最低有效位記錄在一序列C中,用LMC替換I1中最低有效位;最后將序列C嵌入到I2中的可嵌入像素塊中。本提取方法為首先劃分載體圖像,提取位置標(biāo)志序列LMC;然后把像素塊分成I1,I2,I3三部分;根據(jù)LMC對I2中的像素塊進(jìn)行逆變換,得到原始像素值以序列C;用序列C中的值替換I1中最低有效位;最后根據(jù)LMC對I1和I3像素塊進(jìn)行逆變換,得到原始像素值以及嵌入的水印信息。本發(fā)明提高了嵌入能力,提取時無需原始圖像參與。
文檔編號G06T1/00GK101833746SQ201010159959
公開日2010年9月15日 申請日期2010年4月23日 優(yōu)先權(quán)日2010年4月23日
發(fā)明者亓文法, 李曉龍, 楊斌, 王超 申請人:北京大學(xué)