本發(fā)明涉及多媒體信號處理領(lǐng)域,更具體地,涉及一種基于多層次IPVO的可逆水印計(jì)算方法。
背景技術(shù):
現(xiàn)有技術(shù)中,傳統(tǒng)的數(shù)字水印技術(shù)會(huì)造成宿主圖像的永久性失真,一些實(shí)際應(yīng)用中卻不允許對宿主圖像有一丁點(diǎn)的永久修改,比如醫(yī)療、軍事和司法等領(lǐng)域。以醫(yī)學(xué)圖像為例,每一幅醫(yī)學(xué)圖像的獲取需要精密儀器的完成,以及費(fèi)用的支持,圖像失真很大可能會(huì)造成誤診,例如,對于一幅ECG(electrocardiographic)信號圖,任何一點(diǎn)信號曲線的異常都有可能被解釋為某種病理特征??梢姡瑐鹘y(tǒng)的數(shù)字水印技術(shù)并不適用于醫(yī)學(xué)圖像。因此,可逆水印的技術(shù)引起了越來越多人的關(guān)注與研究,進(jìn)一步的講,可逆數(shù)字水印能以無損的方式將相關(guān)水印信息嵌入到宿主圖像中,能在接收端有效地提取水印并精確恢復(fù)原始圖像,解決圖像失真問題。
如何在保持載體圖像視覺質(zhì)量的情況下顯著提高水印嵌入的數(shù)據(jù)容量,成為近年來圖像可逆水印算法研究的主要方向之一。例如,Peng等人(F.Peng,X.L.Li,B.Yang,“Improved PVO-based reversible data hiding,”Digital Signal Processing,vol.25,pp.255-265,2014.)提出一種基于IPVO的可逆水印技術(shù)。在Peng等人的方法中,原始圖像被分成大小為n=r×c的圖像塊。對于任意一個(gè)圖像塊(p1,…,pn)(n≥3),其全部像素按照值的大小排序后得到(pσ(1),…,pσ(n)),其中σ:{1,...,n}→{1,...,n}是一對一的數(shù)據(jù)映射,它表示的是像素在排序之前的位置,注意:如果兩個(gè)像素的值相等,則原先位置在前的像素排序后仍在前而原先位置在后的像素排序后仍在后,即如果pσ(i)=pσ(j)且i<j,則pσ(1)≤…≤pσ(n),σ(i)<σ(j)。
在考慮了pσ(n)和pσ(n-1)之間的位置關(guān)系后,產(chǎn)生出一個(gè)新的差值dmax。
dmax=pu-pv (1)
其中
u=min(σ(n),σ(n-1)), (2)
v=max(σ(n),σ(n-1)).
注意:必須保證映射σ在嵌入前后維持不變,否則無法恢復(fù)出原始像素值和正確抽取出水印信息。當(dāng)pσ(n-1)=pσ(n)時(shí),σ(n-1)必定小于σ(n)。相應(yīng)地,pσ(n)被修改為p'σ(n):
其中b∈{0,1}代表1-比特水印信息。
在解碼端,借助d'max=p'u-p'v來恢復(fù)出原始像素pσ(n)和提取出原始水印信息。
●如果d'max>0,則可知p'u>p'v,進(jìn)而推導(dǎo)出σ(n)<σ(n-1),u=σ(n)和v=σ(n-1)。
如果d'max∈{1,2},提取的水印b=d'max-1,恢復(fù)出的原始像素為pσ(n)=p'u-b。
如果d'max>2,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(n)=p′u-1。
●如果d'max≤0,則可知pu≤pv,進(jìn)而推導(dǎo)出σ(n)>σ(n-1),u=σ(n-1)和v=σ(n)。
如果d'max∈{0,-1},提取的水印b=-d'max,恢復(fù)出的原始像素為pσ(n)=p'v-b。
如果d'max<-1,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(n)=p′v-1。
其中(u,v)來自于等式(1)。
事實(shí)上,將上述的核心思想直接應(yīng)用到(pσ(1),pσ(2),pσ(3))中,就能得到最小值修改的嵌入方案,細(xì)節(jié)如下:
假設(shè)兩個(gè)最小值之間的差值為dmin,其值計(jì)算如下:
dmin=ps-pt (4)
其中s=min(σ(1),σ(2)),t=max(σ(1),σ(2))。
同理,最小值pσ(1)被修改為p'σ(1):
在解碼端,借助d'min=p's-pt'來恢復(fù)出原始像素pσ(1)和提取出原始水印信息。
●如果d'min>0,則可知p's>pt',進(jìn)而推導(dǎo)出σ(1)>σ(2),s=σ(2)和t=σ(1)。
如果d'min∈{1,2},提取的水印b=d'min-1,恢復(fù)出的原始像素為pσ(1)=pt'+b。
如果d'min>2,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(1)=p′t+1。
●如果d'min≤0,則可知pu≤pv,進(jìn)而推導(dǎo)出σ(n)>σ(n-1),u=σ(n-1)和v=σ(n)。
如果d'min∈{0,-1},提取的水印b=-d'min,恢復(fù)出的原始像素為pσ(1)=p's+b。
如果d'min<-1,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(1)=p′s+1。
其中s=min(σ(1),σ(2)),t=max(σ(1),σ(2))。
在Peng等人的算法中,用排序后的第二大像素pσ(n-1)去預(yù)測最大像素pσ(n)(或用第二小像素pσ(2)去預(yù)測最小像素pσ(1)),相對于最近鄰預(yù)測方法(用每一個(gè)像素的右鄰或左鄰像素來預(yù)測這個(gè)像素),預(yù)測性能大大提高。然而,Peng等人的算法認(rèn)為所有的平滑塊都具有相同的平滑性,因此對每一個(gè)平滑塊都采用了相同的處理方式(即通過僅修改pσ(1)和pσ(n)來實(shí)現(xiàn)至多2比特的水印信息嵌入)。
從上述可逆水印計(jì)算方法看出,現(xiàn)有技術(shù)中將所有的平滑塊都具有相同的平滑性,因此對每一個(gè)平滑塊都采用了相同的處理方式,然而事實(shí)上,平滑塊的平滑性也是有很大差異,平滑級別高的塊理應(yīng)比平滑級別低的塊攜帶更多的水印比特。這種將所有平滑塊等同處理的方式并沒有更好的提高水印嵌入的數(shù)據(jù)容量,在一定環(huán)境下,同樣也會(huì)帶來不能精確處理信號的問題,導(dǎo)致圖像失真問題
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明的目的是:提出一種基于多層次IPVO的可逆水印計(jì)算方法,實(shí)現(xiàn)自適應(yīng)的可逆水印嵌入??梢杂糜卺t(yī)學(xué)圖像、軍事地圖和軍用圖像的管理等領(lǐng)域中,為判別醫(yī)學(xué)圖像、軍事地圖和軍用圖像的來源、信息版權(quán)等方面提供高質(zhì)量的圖像識別技術(shù)。
本發(fā)明為解決其技術(shù)問題所采用的技術(shù)方案是,一種基于多層次IPVO的可逆水印計(jì)算方法包括以下兩個(gè)步驟:
S1,水印嵌入步驟;
S2,水印提取和原始圖像恢復(fù)步驟。
進(jìn)一步的,S1步驟中,水印嵌入步驟又分成以下兩個(gè)步驟:
S11,圖像塊的局部定位;
S12,水印嵌入。
進(jìn)一步的,S11圖像塊的局部定位步驟中,將一幅載體圖像素分成互不重疊的圖像塊,每一個(gè)圖像塊包含n個(gè)像素。圖像塊的(n+1)個(gè)相鄰像素組成一個(gè)像素集合,并計(jì)算該集合的方差,通過該方差的大小來判定圖像塊是位于平滑區(qū)域還是紋理區(qū)域,即若方差小于預(yù)定的閾值,則認(rèn)為圖像塊屬于平滑區(qū)域,否則認(rèn)為圖像塊位于紋理區(qū)域。
進(jìn)一步的,S12水印嵌入步驟中,處理方式如下:對于位于紋理區(qū)域的圖像塊,為了降低失真,在嵌入過程中不會(huì)對它們做任何的修改;對于某一圖像塊(p1,p2,…,pn),按照從小到大的順序排序后得到(pσ(1),pσ(2),…,pσ(n))(即pσ(1)≤pσ(2)≤…≤pσ(n));將位于平滑區(qū)域的圖像塊分成以下兩個(gè)部分:
①第一部分,包含水印嵌入后沒有遭受像素溢出的圖像塊;
②第二部分,包含除第一部分后的剩余的圖像塊。
產(chǎn)生一個(gè)位置圖來標(biāo)識這兩部分,并將無損壓縮后的位置圖和載荷一起嵌入到載體圖像中。按照局部紋理特征的復(fù)雜程度將第一部分的圖像塊分成m(m≥4)類,當(dāng)n是奇數(shù)時(shí),中值為當(dāng)n是偶數(shù)時(shí),中值為和其中n表示塊的大??;保持圖像塊的中值不變,以中值為基點(diǎn)進(jìn)行計(jì)算;
對于屬于第k(k∈{1,…,m})層的圖像塊,當(dāng)n是奇數(shù)時(shí),用用預(yù)測所有比它小的值,并用預(yù)測所有比它大的值;當(dāng)n是偶數(shù)時(shí),用用預(yù)測所有比它小的值,并用預(yù)測所有比它大的值。通過該預(yù)測方式,對于屬于第k(k∈{1,…,m})層平滑度的圖像塊,能實(shí)現(xiàn)攜帶m-k+1比特水印信息。待所有屬于第一類的圖像塊經(jīng)上述修改之后,得到含水印的圖像。
進(jìn)一步的,S2步驟中,水印提取和原始圖像恢復(fù)包括以下步驟:
S21,按照和嵌入過程相同的方式將含水印的圖像分成互不重疊的圖像塊;
S22,抽取壓縮后的位置圖,并對其進(jìn)行無損恢復(fù)得到原始位置圖;
S23,采用和嵌入過程相反的順序?qū)K進(jìn)行水印的抽取,即先嵌的后抽取,后嵌的先抽取,對于某一圖像塊,如果其所對應(yīng)的方差大于預(yù)設(shè)閾值,則保持其不變,若其方差小于或等于預(yù)設(shè)閾值,且位置圖中所對應(yīng)的位置標(biāo)示的是0,也不做任何處理,對于剩余的圖像塊,即屬于第二類的圖像塊,對其進(jìn)行水印的抽取和原始圖像的恢復(fù)。
本發(fā)明在水印嵌入過程,將圖像塊布局定位,通過計(jì)算來判定圖像塊是位于平滑區(qū)域還是紋理區(qū)域,對每個(gè)區(qū)域的圖像塊進(jìn)行不同的處理。更為優(yōu)化的,對那些位于平滑區(qū)域的圖像塊分成兩個(gè)部分,設(shè)定保持圖像塊的中值不變,以中值為基點(diǎn)實(shí)現(xiàn)預(yù)測計(jì)算,對每一個(gè)平滑塊采用不同的處理方式,提高水印嵌入的數(shù)據(jù)容量,再進(jìn)行水印提取和原始圖像恢復(fù),有效解決圖像失真問題。
附圖說明
圖1是本發(fā)明一種基于多層次IPVO的可逆水印計(jì)算方法的流程框圖。
圖2是本發(fā)明中水印嵌入步驟的流程框圖。
圖3是本發(fā)明中水印提取和原始圖像恢復(fù)步驟的流程框圖。
圖4a是本發(fā)明以512×512大小的Tiffany為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
圖4b是本發(fā)明以512×512大小的Airplane為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
圖4c是本發(fā)明以512×512大小的Boat為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
圖4d是本發(fā)明以512×512大小的Sailboat為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
圖4e是本發(fā)明以512×512大小的Goldhill為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
圖4f是本發(fā)明以512×512大小的Elaine為測試圖像與Weng、Peng、Ou和Sachnev的方案的性能比較示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對優(yōu)選實(shí)施例作詳細(xì)說明。應(yīng)該說明的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
實(shí)施例1
參見圖1,一種基于多層次IPVO的可逆水印計(jì)算方法包括以下兩個(gè)步驟:
S1,水印嵌入步驟;
S2,水印提取和原始圖像恢復(fù)步驟。
參見圖2,在S1步驟中水印嵌入步驟又分成以下兩個(gè)步驟:
S11,圖像塊的局部定位;
S12,水印嵌入。
進(jìn)一步的,S11圖像塊的局部定位步驟中,將一幅載體圖像素分成互不重疊的圖像塊,每一個(gè)圖像塊包含n個(gè)像素。圖像塊的(n+1)個(gè)相鄰像素組成一個(gè)像素集合,并計(jì)算該集合的方差,通過該方差的大小來判定圖像塊是位于平滑區(qū)域還是紋理區(qū)域,即若方差小于預(yù)定的閾值,則認(rèn)為圖像塊屬于平滑區(qū)域,否則認(rèn)為圖像塊位于紋理區(qū)域。具體的計(jì)算方法如下:
將一副大小為R×C的原始圖像I分割成互不重疊的n=r×c大小的子塊。并以行的方向?qū)γ繅K進(jìn)行編號,記為:對于其中一個(gè)圖像塊對它按照奇數(shù)行從左到右,偶數(shù)行從右到左的方式進(jìn)行掃描,將二維的圖像塊轉(zhuǎn)換成一維像素序列p={p1,…,pn},其全部像素按照值的大小排序后得到(pσ(1),…,pσ(n))。
對于某一圖像塊若存在(r+c+1)個(gè)像素環(huán)繞著它,則將這些像素(用p1,c+1,…,pr,c+1,pr+1,c+1,pr+1,1,…,pr+1,c表示)構(gòu)成一個(gè)像素集IENP,并用σ表示像素集IENP的方差,從而可依據(jù)σ的大小來判定Bi,j是位于平滑區(qū)域還是紋理區(qū)域。由以下公式可計(jì)算出σ的值:
其中μENP表示集合IENP的均值。若方差σ小于某一給定的門限vTh,則認(rèn)為Bi,j和環(huán)繞它的所有像素之間存在著很強(qiáng)的相關(guān)性,即認(rèn)為Bi,j屬于平滑區(qū)域;否則認(rèn)為兩者之間的相關(guān)性弱,Bi,j屬于紋理區(qū)域。這里有一點(diǎn)需要注意:若R能被r整除,則對于塊不存在(r+c+1)個(gè)像素環(huán)繞著它們,因此為了保證算法的可逆性,通常在嵌入過程中不會(huì)對這類圖像塊做任何處理;若C能被c整除,則在嵌入過程中,也不會(huì)對塊做任何的修改以免破壞算法的可逆性。
對于某一圖像塊先按照給定的掃描順序(如zig-zag),將Bi,j轉(zhuǎn)換為一維的像素序列(p1,p2,…,pn),再做升序排列后得到(pσ(1),pσ(2),…,pσ(n))(即pσ(1)≤pσ(2)≤…≤pσ(n)),中值指的是(n是奇數(shù))或和(n是偶數(shù))。具體地說,將σ分成m個(gè)間隔,(n是奇數(shù))或(n是偶數(shù))。
對于某一圖像塊Bi,j,如果則其塊內(nèi)相關(guān)性最高,所對應(yīng)的平滑度被定義為第1層,并將它歸于集合G1中,以此類推,如果則其平滑度被定義為第k層平滑度,且該塊屬于集合Gk,其中k∈{2,…,m}。
進(jìn)一步的,S12水印嵌入步驟中,處理方式如下:對于位于紋理區(qū)域的圖像塊,為了降低失真,在嵌入過程中不會(huì)對它們做任何的修改;對于某一圖像塊(p1,p2,…,pn),按照從小到大的順序排序后得到(pσ(1),pσ(2),…,pσ(n))(即pσ(1)≤pσ(2)≤…≤pσ(n)),具體地,對于任一圖像塊,在其轉(zhuǎn)換成一維像素序列p={p1,…,pn}進(jìn)行水印嵌入時(shí),含水印的像素pi'∈□(i∈{1,…,n})必須在[0,255]范圍之內(nèi),否則含水印像素將遭受溢出(上溢(>255)或下溢(<0)),像素溢出將直接導(dǎo)致在解碼端無法正確恢復(fù)出原始圖像子塊p。為了避免像素溢出,我們定義D={p∈A:0≤pi'≤255(i∈{1,…,n})},其中A={p={p1,…,pn}:0≤pi≤255(i∈{1,…,n})}。
按照局部紋理特征的復(fù)雜程度將D分成兩部分:SP和D-SP,其中SP包含了局部復(fù)雜性小于和等于vTh的所有塊(平滑塊),即SP={p∈D,σ≤vTh};D-SP包含了所有紋理塊,即D-SP={p∈D,σ>vTh}。
將位于平滑區(qū)域的圖像塊分成以下兩個(gè)部分,即SP被進(jìn)一步分成m個(gè)子集Gk(k∈{1,…,m}):由此產(chǎn)生兩個(gè)部分:
①第一部分,包含水印嵌入后沒有遭受像素溢出的圖像塊;
②第二部分,包含除第一部分后的剩余的圖像塊。
產(chǎn)生一個(gè)位置圖來標(biāo)識這兩部分,并將無損壓縮后的位置圖和載荷一起嵌入到載體圖像中。位置圖的形成方法為,當(dāng)σ≤vTh時(shí),用一個(gè)大小為的一維二值位置圖,來區(qū)分一個(gè)平滑塊是否遭受到了像素溢出,具體地說,位置圖中符號‘1’表示SP中的圖像塊,‘0’表示(遭受了像素溢出的圖像塊)中的圖像塊。這里有一點(diǎn)需要注意:在解碼端,只要判斷出σ>vTh,就可以知道哪些圖像塊屬于D-SP,因此沒有必要記載D-SP中圖像塊的位置信息。用算術(shù)編碼無損壓縮位置圖。壓縮位置圖產(chǎn)生的碼流用L表示,假設(shè)其長度為LS。因此待嵌入水印信息來自兩個(gè)方面:1)壓縮后的碼流L;2)載荷P。
按照局部紋理特征的復(fù)雜程度將第一部分的圖像塊分成m(m≥4)類,當(dāng)n是奇數(shù)時(shí),中值為當(dāng)n是偶數(shù)時(shí),中值為和其中n表示塊的大??;保持圖像塊的中值不變,以中值為基點(diǎn)進(jìn)行計(jì)算;
對于任一子塊p,如果它屬于Gk(k∈{1,…,m})的圖像塊,當(dāng)n是奇數(shù)時(shí),用預(yù)測所有比它小的值,即中的每一個(gè)像素,產(chǎn)生(m+1-k)個(gè)預(yù)測誤差(即dimin(i∈{1,2,…,m-k+1})),用背景技術(shù)中的等式(5)對每一個(gè)預(yù)測誤差進(jìn)行水印嵌入,并用預(yù)測所有比它大的值,即中的每一個(gè)像素,產(chǎn)生(m+1-k)個(gè)預(yù)測誤差(即dimax(i∈{1,2,…,m-k+1})),用背景技術(shù)中的等式等式(3)對每一個(gè)預(yù)測誤差進(jìn)行水印嵌入;當(dāng)n是偶數(shù)時(shí),用預(yù)測所有比它小的值,即中的每一個(gè)像素,產(chǎn)生(m+1-k)個(gè)預(yù)測誤差(即dimin(i∈{1,2,…,m-k+1})),用背景技術(shù)中的等式等式(5)對每一個(gè)預(yù)測誤差進(jìn)行水印嵌入,并用預(yù)測所有比它大的值,即中的每一個(gè)像素,產(chǎn)生(m+1-k)個(gè)預(yù)測誤差(即dimax(i∈{1,2,…,m-k+1})),用背景技術(shù)中的等式(3)對每一個(gè)預(yù)測誤差進(jìn)行水印嵌入。
在本實(shí)施例中,更具體的,以k=1為例,當(dāng)n是奇數(shù)時(shí),用去預(yù)測中的每一個(gè)像素,同時(shí)用去預(yù)測中的每一個(gè)像素;當(dāng)n是偶數(shù)時(shí),用去預(yù)測中的每一個(gè)像素,同時(shí)用去預(yù)測中的每一個(gè)像素。通過以上的預(yù)測方式可以使得一個(gè)屬于第一層的圖像塊能產(chǎn)生2m個(gè)預(yù)測誤差,也就是可以實(shí)現(xiàn)至多2m比特的水印嵌入。
在本實(shí)施例中,再以k=m為例,用pσ(2)預(yù)測pσ(1),并用pσ(n-1)預(yù)測pσ(n),這樣一個(gè)塊可以產(chǎn)生兩個(gè)預(yù)測誤差,實(shí)現(xiàn)至多2個(gè)比特的水印嵌入。通過以上的方式,一個(gè)屬于G1的塊能至多攜帶2m個(gè)水印比特。k值越小,塊的局部平滑度越大,塊所能嵌入的水印比特?cái)?shù)越多;k值越大,塊的局部平滑度越小,所能嵌入的水印比特?cái)?shù)越少。從以上兩個(gè)例子可以看出塊越平滑,嵌入的水印信息越多,從而實(shí)現(xiàn)了自適應(yīng)的水印嵌入。
參見圖3,S2步驟中,水印提取和原始圖像恢復(fù)包括以下步驟:
S21,按照和嵌入過程相同的方式將含水印的圖像分成互不重疊的圖像塊;
S22,抽取壓縮后的位置圖,并對其進(jìn)行無損恢復(fù)得到原始位置圖;
S23,采用和嵌入過程相反的順序?qū)K進(jìn)行水印的抽取,即先嵌的后抽取,后嵌的先抽取,對于某一圖像塊,如果其所對應(yīng)的方差大于預(yù)設(shè)閾值,則保持其不變,若其方差小于或等于預(yù)設(shè)閾值,且位置圖中所對應(yīng)的位置標(biāo)示的是0,也不做任何處理,對于剩余的圖像塊,即屬于第二類的圖像塊,對其進(jìn)行水印的抽取和原始圖像的恢復(fù)。
更為具體的,在S21中,按照與嵌入過程相同的順序,將含水印的圖像IW分成大小為n的互不重疊的圖像塊。并以行的方向?qū)γ繅K進(jìn)行編號,記為:對于其中一個(gè)含水印的圖像塊對它按照奇數(shù)行從左到右,偶數(shù)行從右到左的方式進(jìn)行掃描,將二維的圖像塊轉(zhuǎn)換成一維像素序列p'={p1',p'2…,p'n}。
在步驟S22以及步驟S23中,位置圖的恢復(fù)依照收集前個(gè)像素序列中像素的最不重要位,形成一個(gè)比特流。在此比特流中找到算術(shù)編碼的結(jié)束符從開始到結(jié)束符的比特流被解壓縮得到原始位置圖。
而水印的抽取和原始圖像的恢復(fù)步驟中,為了保證可逆性,必須按照和嵌入過程相反的順序進(jìn)行水印信息的抽取和原始圖像的恢復(fù),即每一個(gè)塊對應(yīng)一個(gè)一維像素序列。對于和如果其沒有(r+c+1)相鄰的像素,則保持不變。否則,對于某一像素序列p′,將其所有相鄰像素p1,c+1,…,pr,c+1,pr+1,c+1,pr+1,1,…,pr+1,c構(gòu)成和嵌入過程中相同的IENP(注意:p1,c+1,…,pr,c+1,pr+1,c+1,pr+1,1,…,pr+1,c必須要先于p′恢復(fù)出來,才能保證從p′中正確恢復(fù)出原始像素序列p)。
IENP經(jīng)等式(6)得到p'所對應(yīng)的σ,如果σ大于或等于vTh,則保持不變;如果σ小于vTh,且在位置圖中所對應(yīng)的是`0’,則保持不變;如果在位置圖中所對應(yīng)的是`1’且當(dāng)n是奇數(shù)時(shí),用預(yù)測所有比它小的像素,即中的每一個(gè)像素,產(chǎn)生(m+1-k)個(gè)含水印的預(yù)測誤差(di'min(i∈{1,…,(m+1-k)})),同時(shí),用預(yù)測所有比它大的像素,即中的每一個(gè)像素,也產(chǎn)生(m+1-k)個(gè)含水印的預(yù)測誤差(di'max(i∈{1,…,(m+1-k)}));當(dāng)n是偶數(shù)時(shí),用預(yù)測集合中的每一個(gè)像素,產(chǎn)生(m-k+1)個(gè)含水印的預(yù)測誤差(di'min(i∈{1,…,(m+1-k)})),并用預(yù)測中的每一個(gè)像素,也產(chǎn)生(m+1-k)個(gè)含水印的預(yù)測誤差(di'max(i∈{1,…,(m+1-k)}))。無論n是奇數(shù)還是偶數(shù),對于di'max(i∈{1,…,(m+1-k)},按照如下方式進(jìn)行水印的抽取和原始像素的恢復(fù)。
在解碼端,借助d'max=p'u-p'v來分別恢復(fù)出原始像素pσ(n-1)和pσ(n),并提取出原始水印信息。
●如果d'max>0,則可知p'u>p'v,進(jìn)而推導(dǎo)出σ(n)<σ(n-1),u=σ(n)和v=σ(n-1)。如果d'max∈{1,2},提取的水印b=d'max-1,恢復(fù)出的原始像素為pσ(n)=p'u-b。如果d'max>2,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(n)=p′u-1。
●如果d'max≤0,則可知pu≤pv,進(jìn)而推導(dǎo)出σ(n)>σ(n-1),u=σ(n-1)和v=σ(n)。如果d'max∈{0,-1},提取的水印b=-d'max,恢復(fù)出的原始像素為pσ(n)=p'v-b。如果d'max<-1,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(n)=p'v-1。
其中(u,v)來自于等式(1)。
對于di'min(i∈{1,…,(m+1-k)},按照如下方式進(jìn)行水印的抽取和原始像素的恢復(fù)。
在解碼端,借助d'min=p's-pt'來分別恢復(fù)出原始像素pσ(1)和pσ(2),并提取出原始水印信息。
●如果d'min>0,則可知p's>pt',進(jìn)而推導(dǎo)出σ(1)>σ(2),s=σ(2)和t=σ(1)。如果d'min∈{1,2},提取的水印b=d'min-1,恢復(fù)出的原始像素為pσ(1)=pt'+b。如果d'min>2,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(1)=pt'+1。
●如果d'min≤0,則可知pu≤pv,進(jìn)而推導(dǎo)出σ(n)>σ(n-1),u=σ(n-1)和v=σ(n)。如果d'min∈{0,-1},提取的水印b=-d'min,恢復(fù)出的原始像素為pσ(1)=p's+b。如果d'min<-1,說明沒有隱藏任何水印信息,恢復(fù)出的原始像素為pσ(1)=p's+1。
其中s=min(σ(1),σ(2)),t=max(σ(1),σ(2))。
基于以上完成對其進(jìn)行水印的抽取和原始圖像的恢復(fù)。
實(shí)施例2
依照本發(fā)明中對基于多層次IPVO的可逆水印計(jì)算方法,采用六幅自然圖像作為測試圖像,分別是‘Airplane’,‘Elaine’,‘Peppers’,‘Boat’‘Sailboat’和‘Tiffany’。圖4a-f例證了本發(fā)明和Weng的方法,Peng的方法,Ou的方法和Sachnev的方法的率失真性能比較。
到目前為止,Peng等人(F.Peng,X.L.Li,B.Yang,Improved pvo-based reversible data hiding,Digit.Signal Process.25(2014)255–265.)在PVO的基礎(chǔ)上考慮了像素之間的位置關(guān)系而提出的一種基于IPVO的可逆水印算法。Weng的方法(X.Wang,J.Ding,Q.Q.Pei,Reversible data hiding based on an adaptive pixel-embedding strategy and two-layer embedding,Inform.Sci.(accepted).)提出了一種自適應(yīng)IPVO的可逆水印算法。Li的方法(X.L.Li,W.M.Zhang,X.L.Gui,B.Yang,A novel reversible data hiding scheme based on two-dimensional difference-histogram modification,IEEE Trans.Inf.Forensic Secur.8(7)(2013)1091–1100.)是基于二維差值修改的一種可逆水印算法。Sachnev的方法(V.Sachnev,H.J.Kim,J.Nam,S.Suresh,Y.Q.Shi,Reversible watermarking algorithm using sorting and prediction,IEEE Trans.Circuits Syst.Video Technol.19(7)(2009)989–999.)是采用菱形預(yù)測器和差值排序的一種可逆水印算法。
從圖4a-f可以看出,本發(fā)明的性能明顯優(yōu)于Weng的方法的性能。雖然Weng的方法也是一種自適應(yīng)IPVO的可逆水印方法,但是Weng的方法僅將局部平滑度分成了四個(gè)級別。事實(shí)上,對于一些含有大量平滑區(qū)域的測試圖像,例如Elaine,將平滑度簡單地分成四個(gè)級別并沒有完全利用所有的平滑像素。本發(fā)明將局部平滑度分成了m個(gè)級別,其中(n是奇數(shù))或(n是偶數(shù))。當(dāng)n=3×3時(shí),m=4;當(dāng)n=5×5,m=12,也就是說,塊越大,m的值就越大,相應(yīng)地,平滑度就分得越精細(xì);塊越小,m的值也越小,平滑度就分得較粗。對于屬于第k層的圖像塊,它能至多攜帶2(m-k+1)比特。綜上,每一個(gè)塊所能攜帶的水印比特不僅和塊的大小有關(guān)還和塊的局部復(fù)雜度有關(guān)。
對于圖4a-f這六幅測試圖像,本發(fā)明的性能遠(yuǎn)優(yōu)于其它三種方法(即Peng的方法,Ou的方法和Sachnev的方法),本發(fā)明的優(yōu)勢就在于,圖像塊的局部紋理特征越復(fù)雜,它所能攜帶的數(shù)據(jù)容量就越低;反之,塊越平滑,它所能攜帶的水印信息越多。因此,甚至在低嵌入比特率的時(shí)候,本發(fā)明的PSNR值遠(yuǎn)遠(yuǎn)優(yōu)Ou的方法和Peng方法的PSNR值。
大量的實(shí)驗(yàn)結(jié)果表明,與以往大部分的同類方案相比,本發(fā)明所設(shè)計(jì)可逆水印計(jì)算方法,無論是在嵌入容量上,還是在恢復(fù)圖像質(zhì)量的主觀評價(jià)上,都有了相當(dāng)程度的提高。綜上,本發(fā)明具有兩大優(yōu)點(diǎn):(1)平滑度被細(xì)分成m(m≥4)個(gè)層次,保持塊的中值點(diǎn)不變,以中值點(diǎn)為中心進(jìn)行自適應(yīng)像素修改,對于任一個(gè)屬于第k(k∈{1,…,m})層的圖像塊,其能至多攜帶2(m-k+1)比特水印信息,也就是說,k值越小,對應(yīng)的平滑度越高,塊所能攜帶得水印信息就越多,反之,k值越大,對應(yīng)的平滑度就越低,塊所能攜帶得水印信息就越少;(2)m和n有關(guān),也就是說,塊越大,m的值也就越大。
顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無需也無法對所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。