專利名稱:一種用于向數(shù)字圖像信號(hào)加入和提取數(shù)字水印的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于向數(shù)字圖像信號(hào)中加入和提取數(shù)字水印的方法。
背景技術(shù):
隨著信息時(shí)代的到來,特別是Internet的普及,信息的安全保護(hù)問題日益突出。當(dāng)前的信息安全技術(shù)基本上以密碼學(xué)理論為基礎(chǔ),其保護(hù)方式均是控制文件的存取,即將文件加密成密文,使非法用戶不能解讀,隨著多媒體技術(shù)的廣泛應(yīng)用,需要進(jìn)行加密、認(rèn)證和版權(quán)保護(hù)的聲像數(shù)據(jù)也越來越多。數(shù)字化的聲像數(shù)據(jù)從本質(zhì)上來說就是數(shù)字信號(hào),如果對(duì)這類信號(hào)也采用密碼加密的方式,則其本身的信號(hào)屬性就被忽略了。最近幾年,許多研究人員放棄了傳統(tǒng)的密碼學(xué)的技術(shù)路線,嘗試采用各種信號(hào)處理的方法對(duì)聲像數(shù)據(jù)進(jìn)行隱蔽加密,并將該技術(shù)應(yīng)用于制作多媒體的“數(shù)字水印”。
幾年來,數(shù)字水印技術(shù)(Digital Watermark)已經(jīng)被大量應(yīng)用于數(shù)字圖像版權(quán)保護(hù)等領(lǐng)域。數(shù)字水印技術(shù)是指用信號(hào)處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱含的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測器或閱讀器才能提取。數(shù)字水印設(shè)計(jì)必須滿足非法用戶不能識(shí)別,只能夠被合法的版權(quán)擁有者所確認(rèn)的要求。
數(shù)字水印技術(shù)已經(jīng)發(fā)展了兩大類方法第一種是將數(shù)字水印嵌入到頻域中,頻域中振幅較小的特定的某一段被改變。水印被嵌入到對(duì)圖像影響最小的DCT系數(shù)中去了;第二種是水印被嵌入一個(gè)空的字段中。一個(gè)預(yù)定的非隨機(jī)的像素集被選出來并被修改。對(duì)于第一種方法而言,現(xiàn)今所有的變換域上的嵌入數(shù)字水印的技術(shù)都是采用浮點(diǎn)運(yùn)算,在加入和提取過程中都存在舍入誤差,如DCT、DFT、小波變換、Hadamard變換?;谶@些變換的數(shù)字水印方法都是將水印信息嵌入到變換域的高頻部分,但這些方法會(huì)產(chǎn)生下列問題如果我們將圖像的變換域上的高頻分量提取的話,水印就被提取了,而且圖像的損失很小,達(dá)不到水印加密的目的。如果嵌入低頻分量中,由于在變換中會(huì)帶來誤差,圖像和水印信息的損失都很大,對(duì)圖像影響太大了。
對(duì)于第二種方法而言,由于是對(duì)特定的空字段加入水印信息,本身就加大了圖像的數(shù)據(jù)量,而且加密的水印與圖像本身結(jié)合不強(qiáng),從而會(huì)帶來安全的隱患。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在數(shù)字圖像中加入和提取數(shù)字水印的方法,這種方法由于采用了整數(shù)DCT變換,可實(shí)現(xiàn)圖像的無損重構(gòu),具有很好的安全性及很高的圖像質(zhì)量。
為實(shí)現(xiàn)上述目的,在數(shù)字信號(hào)中加入水印信號(hào)的步驟為-分塊器將待加水印的數(shù)字圖像分層、分塊;-隨機(jī)取塊器將分塊的圖像隨機(jī)取塊;-判別器將隨機(jī)取塊器確定的塊與臨時(shí)表中的塊比較,若無相同塊,則存入臨時(shí)表中,并將其送到整數(shù)DCT變換器,否則,回到隨機(jī)取塊器重新取塊;-整數(shù)DCT變換器將隨機(jī)取塊器確定的圖像塊進(jìn)行整數(shù)DCT變換;-水印插入器將水印信號(hào)插入整數(shù)DCT系數(shù)中,輸出嵌入水印的整數(shù)DCT數(shù)據(jù)塊;-反整數(shù)DCT變換器將水印插入器輸出的嵌入水印的整數(shù)DCT數(shù)據(jù)塊進(jìn)行反整數(shù)DCT變換,還原為嵌入水印的RGB圖像;
-合成器將嵌入水印的RGB圖像與未嵌入水印的RGB圖像合并,輸出完整的嵌入水印的數(shù)字圖像信號(hào)。
從數(shù)字水印圖像信號(hào)中提取水印信號(hào)的步驟為-分塊器將待加水印的數(shù)字圖像分層、分塊;-隨機(jī)取塊器將分塊的圖像隨機(jī)取塊;-判別器將隨機(jī)取塊器確定的塊與臨時(shí)表中的塊比較,若無相同塊,則將其送到整數(shù)DCT變換器,否則,回到隨機(jī)取塊器重新取塊;-整數(shù)DCT變換器將隨機(jī)取塊器確定的圖像塊進(jìn)行整數(shù)DCT變換,轉(zhuǎn)換成整數(shù)DCT數(shù)據(jù)塊;-水印提取器將水印信息從嵌入水印的整數(shù)DCT數(shù)據(jù)塊中提取出來;-合成器將水印提取器輸出的水印信息合并成數(shù)字水印信號(hào)。
采用本發(fā)明方法得到的數(shù)字水印信號(hào)所具有的優(yōu)點(diǎn)是它具有很高的圖像質(zhì)量和很高的安全性。
具本實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。
圖1是根據(jù)本發(fā)明表示在數(shù)字信號(hào)中加入水印信號(hào)的示意框圖。
圖2是根據(jù)本發(fā)明表示提取水印信號(hào)的示意框圖。
參見圖1,在將水印嵌入到數(shù)字圖像中時(shí),首先由分塊器1對(duì)數(shù)字圖像進(jìn)行分層,將其分為R、G、B三層,然后對(duì)每一層分塊,將其分為8*8的塊,并且按照一定的順序編號(hào)。分塊后由隨機(jī)取塊器確定水印信息嵌入的位置,一般用(x,y,l,b)表示水印嵌入的位置,其中l(wèi)表示R、G、B中的一層,取值為(0,1,2),分別代表圖像的R層、G層、B層。b表示R層圖像或G層圖像或者B層圖像分塊的序號(hào),實(shí)際上我們是將RGB層圖像進(jìn)行分塊,然后對(duì)這些分塊進(jìn)行編號(hào),b實(shí)際上是表示水印信息嵌入的塊。x、y則表示在分塊中嵌入的位置。如果作8*8分塊的話,x、y的取值范圍為(0-7)。水印嵌入的位置(x,y,l,b)是這樣確定的對(duì)每一幅圖像取一個(gè)標(biāo)識(shí)IDi,隨機(jī)選取兩個(gè)大的素?cái)?shù),p,q,計(jì)算參數(shù)n=p×q,這里p和q是秘密的,n是公開的。p和q均有512位,圖像的密碼設(shè)為K。一、隨機(jī)種子的產(chǎn)生,則分別取X=IDikmodn]]>L=IDi(k3)modn]]>Y=IDi(k2)modn]]>B=IDi(k4)modn]]>其中(X、Y、L、B)為(x、y、l、b)的隨機(jī)種子。二、初始大整數(shù)序列的產(chǎn)生,(Lx、Ly、Ll、Lb)Lx=X2modn Ll=L2modnLy=Y(jié)2modn Lb=B2modn三、隨機(jī)序列的產(chǎn)生(x、y、l、b)x=Lxmodmxl=Llmodmly=Lymodmyb=Lbmodmb(mx、my表示圖像分塊的大小) (l為圖像分的層數(shù))四、大整數(shù)序列的產(chǎn)生(Lx、Ly、Ll、Lb) Lx=Lx2modn Ly=Ly2modnLl=Ll2modn Lb=Lb2modn五、由四產(chǎn)生的(Lx、Ly、Ll、Lb) 轉(zhuǎn)到由三產(chǎn)生下一個(gè)(x、y、l、b),如此循環(huán),得到了一個(gè)偽隨機(jī)序列。在上面確定水印插入位置的隨機(jī)過程中,存在兩個(gè)問題。首先,位置 可能被重復(fù)選擇,從而出現(xiàn)一個(gè)水印不同的位將被嵌入到同樣的位置,這樣可能會(huì)丟失一些水印的字節(jié)信息。另外,如果將水印信息嵌入到直流分量,這樣圖像的損失很大,破壞了原有的圖像,而嵌入到高頻時(shí)圖像的損失很小,安全性又得不到保證。
為解決上述的問題,我們在判別器3中用一個(gè)臨時(shí)的矩陣表來紀(jì)錄所有的隨機(jī)塊x=Lxmodmx, y=Lymodmy, l=Llmodmlb=Lbmodmb當(dāng)一個(gè)隨機(jī)塊產(chǎn)生后,判別器3將這個(gè)隨機(jī)塊和臨時(shí)矩陣表中所有的塊進(jìn)行比較,如果新的隨機(jī)塊在臨時(shí)矩陣表中已存在,則放棄此隨機(jī)塊。否則,將新的隨機(jī)塊記錄到臨時(shí)矩陣表中。這樣可防止一個(gè)水印不同的位將被嵌入到同樣的位置。
在前面的論述中,已經(jīng)知道了如果將水印信息嵌入到直流分量時(shí)會(huì)給圖像帶來很大的損失,破壞原有的圖像。如果將圖像嵌入到高頻時(shí)圖像的損失很小,安全性得不到保證,因此只有將水印信息加入到圖像的中低頻部分,這樣才能保證既有較高的安全性又有良好的圖像質(zhì)量。為此,判別器3在獲取隨機(jī)數(shù)(x,y,l,b)以后,將對(duì)其作一個(gè)判斷,如果(x,y)=(0,0),就表明取的是直流分量,則棄掉此隨機(jī)塊,同樣,如果得到的x=7或者是y=7,則表明取到的是高頻分量,同樣也該略去。
隨機(jī)取塊器2確定的圖像塊經(jīng)判別器3判別后,由整數(shù)DCT變換器4將其作整數(shù)DCT變換,這里簡要介紹一下整數(shù)DCT,對(duì)于DCT-II,設(shè)x(n)(n=0,1,...,N-1)是一個(gè)實(shí)的輸入序列。設(shè)N=2′,這里t>0。DCT-II定義如下X(k)=Σn=0N-1x(n)cosπ(2n+1)k2N,k=0,1,···,N-1]]>設(shè) 為DCT-II的變換矩陣CNII=(cosπ(2n+1)2N),k,n=0,1,···,N-1]]>變換矩陣 能被分解為CNII=PNIN/200UN/2CN/2II00CN/2IIIN/200DN/2IN/2I^N/2IN/2-I^N/2]]>其中,IN/2表示N/2階的單位陣; 表示N/2階的反對(duì)角單位陣DN/2=diag(2cosπ2N,2cos3π2N,...,2cos(N-1)π2N),]]> 表示長度為N/2的DCT-II變換。有了這個(gè)分解,我們再用分?jǐn)?shù)(形如β/2λ)來代替 ,然后對(duì)分解式做幾次變換,最后便得到了IntDCT-II的快速算法step1計(jì)算
g(n)=x(n)+x(N-1-n),h(n)=x(n)-x(N-1-n),n=0,1,....,N/2-1;step2計(jì)算h^=E‾N/2F‾N/2h]]>h^=(h^(0),h^(1),...,h^(N/2-1))′,h=(h(0),h(1),...,h(N/2-1))′;]]>step3計(jì)算長度為N/2的IntDCT-II序列g(shù)(n)和h(n),輸出為G(k),H(k);step4計(jì)算X(2k)=G(k),k=0,1,...,N/2-1,X(1)=H(0)/2,X(2k+1)=H(k)-X(2k-1),k=1,2,…,N/2-1;從而我們的到了IntDCT-II的快速算法。
整數(shù)DCT變換器4將隨機(jī)取塊器2確定的圖像塊轉(zhuǎn)換成整數(shù)DCT數(shù)據(jù)塊,然后再送到水印插入器5。水印插入器5順序的讀取一個(gè)水印信息(1位),然后判斷其為0還是1,如果是0,則表示為偶數(shù),再對(duì)相應(yīng)的整數(shù)DCT系數(shù)塊(x,y)處的DCT系數(shù)進(jìn)行判斷,如果為偶數(shù)則保持不變,如果為奇數(shù)則將系數(shù)加1,使其變?yōu)榕紨?shù)。同樣,對(duì)取1時(shí)采用相反的過程,這樣就將水印信息嵌入到了圖像中。然后將嵌入水印的整數(shù)DCT系數(shù)塊送到反整數(shù)DCT變換器6,反整數(shù)DCT變換器6將嵌入水印的整數(shù)DCT數(shù)據(jù)塊進(jìn)行反整數(shù)DCT變換,轉(zhuǎn)換成嵌入水印的RGB圖像,然后將嵌入水印的RGB層圖像送到合成器7中,在這里與其它沒有插入水印的圖像塊合并成包含數(shù)字水印的完整圖像信號(hào),這樣就將數(shù)字水印插入了數(shù)字圖像中。
參見圖2,要將數(shù)字水印圖像中的水印信號(hào)提取出來,首先由分塊器8對(duì)數(shù)字水印圖像進(jìn)行分層,將其分別分為R、G、B三層。然后對(duì)每一層分塊,將其分為8*8的塊,并且按照一定的順序編號(hào)。分塊后由隨機(jī)取塊器9確定水印信息嵌入的位置,其確定過程和水印插入時(shí)相同,然后由判別器10將這個(gè)位置和臨時(shí)矩陣表中所有的位置進(jìn)行比較,如果新的位置在臨時(shí)表中已存在,則放棄此位置,否則,將位置記錄到臨時(shí)表中。隨機(jī)取塊器9確定的圖像塊經(jīng)判別器10判別后,由整數(shù)DCT變換器11將其作整數(shù)DCT變換,轉(zhuǎn)換成整數(shù)DCT數(shù)據(jù)塊,然后再送到水印提取器12。水印提取器12對(duì)隨機(jī)獲取位置的DCT系數(shù)作判斷,看它的奇偶性,如果為偶數(shù)我們就將其視為0,為奇數(shù)就將其視為1,這樣我們就得到了水印一個(gè)的數(shù)據(jù)流,重復(fù)這一過程我們就可以將水印數(shù)據(jù)從圖像中完全提取出來。然后將提取出來的水印數(shù)據(jù)送到合成器13中,并將之與提取出來的水印數(shù)據(jù)合并成數(shù)字水印圖像信號(hào),這樣就將插入數(shù)字圖像信號(hào)中的數(shù)字水印提取出來了。
權(quán)利要求
1.一種用于向數(shù)字圖像信號(hào)加入水印信號(hào)的方法,包括以下步驟-分塊器(1)將待加水印的數(shù)字圖像分層、分塊;-隨機(jī)取塊器(2)將分塊的圖像隨機(jī)取塊;-判別器(3)將隨機(jī)取塊器確定的塊與臨時(shí)表中的塊比較,若無相同塊,則存入臨時(shí)表中,并將其送到整數(shù)DCT變換器(4),否則,回到隨機(jī)取塊器(2)重新取塊;-整數(shù)DCT變換器(4)將隨機(jī)取塊器(2)確定的圖像塊進(jìn)行整數(shù)DCT變換;-水印插入器(5)將水印信號(hào)插入整數(shù)DCT系數(shù)中,輸出嵌入水印的整數(shù)DCT數(shù)據(jù)塊;-反整數(shù)DCT變換器(6)將水印插入器(5)輸出的嵌入水印的整數(shù)DCT數(shù)據(jù)塊進(jìn)行反整數(shù)DCT變換,轉(zhuǎn)換為嵌入水印的RGB圖像;-合成器(7)將嵌入水印的RGB圖像與未嵌入水印的RGB圖像合并,輸出完整的嵌入水印的數(shù)字圖像信號(hào)。
2.一種從已加水印的數(shù)字圖像中提取水印信號(hào)的方法,包括以下步驟-分塊器(8)將已加水印的數(shù)字圖像分層、分塊;-隨機(jī)取塊器(9)將分塊的圖像隨機(jī)取塊;-判別器(10)將隨機(jī)取塊器(9)確定的圖像塊與臨時(shí)表中的塊比較,若無相同塊,則存入臨時(shí)表中,并將其送到整數(shù)DCT變換器(11),否則,回到隨機(jī)取塊器(10)重新取塊;-整數(shù)DCT變換器(11)將隨機(jī)取塊器(9)確定的圖像塊進(jìn)行整數(shù)DCT變換,轉(zhuǎn)換成整數(shù)DCT數(shù)據(jù)塊;-水印提取器(12)將水印信息從嵌入水印的整數(shù)DCT數(shù)據(jù)塊中提取出來;-合成器(13)將水印提取器輸出的水印信息合并成數(shù)字水印信號(hào)。
全文摘要
一種用于向數(shù)字圖像信號(hào)加入和提取提取數(shù)字水印的方法,它通過對(duì)圖像進(jìn)行分層、分塊,然后采用非線性整數(shù)變換對(duì)圖像的分塊進(jìn)行變換,達(dá)到圖像數(shù)據(jù)的無損重構(gòu)。對(duì)嵌入的圖像數(shù)據(jù)采用Hash函數(shù)來對(duì)其位置進(jìn)行加密,利用Hash函數(shù)產(chǎn)生偽隨機(jī)序列。通過大整數(shù)以及整數(shù)DCT變換的系數(shù)來達(dá)到極高的安全性。在水印提取過程中,用Hash函數(shù)再現(xiàn)隨機(jī)序列,獲取水印圖像的信息。利用這種方法獲得的數(shù)字水印具有很高的圖像質(zhì)量和很高的安全性,具有廣泛的商業(yè)價(jià)值。
文檔編號(hào)G06T1/00GK1396569SQ0111458
公開日2003年2月12日 申請日期2001年7月13日 優(yōu)先權(quán)日2001年7月13日
發(fā)明者田力, 鮑家文, 何鴻君, 王洪波, 陳績喜, 彭玉賦, 羅莉, 石廣平, 羅永 申請人:佳程防偽科技(深圳)有限公司