數(shù)字水印源碼_第1頁
數(shù)字水印源碼_第2頁
數(shù)字水印源碼_第3頁
數(shù)字水印源碼_第4頁
數(shù)字水印源碼_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)字水印源碼,希望對(duì)大家學(xué)習(xí)有幫助.% 由高斯正態(tài)分布序列 g1 產(chǎn)生 364 的水印信%號(hào) w0,w0 由(0,1)組成。clearrandn(state,1106);g1=randn(36,4);for i=1:36 for j=1:4 if g1(i,j)=0 w0(i,j)=1; else w0(i,j)=0; end; end;end;figure;imshow(w0);title(水印);% 對(duì)水印信號(hào) w0 進(jìn)行(7,4)漢明編碼,得到一%367 的分組碼 x0。x0=w0;for i=1:36 s=8*x0(i,1)+4*x0(i,2)+2*x0(i,3)+x0(i,4); s

2、witch s case 0 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 1 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 2 x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 3 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 4 x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; case 5 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 6 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 7 x0(i,5)=0;x0(i,6)=1

3、;x0(i,7)=0; case 8 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 9 x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 10 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 11 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 12 x0(i,5)=0;x0(i,6)=1;x0(i,7)=0; case 13 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 14 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 15 x0(i,5)=1

4、;x0(i,6)=1;x0(i,7)=1; end;end;% 對(duì) x0 進(jìn)行行向位擴(kuò)展,得到一個(gè)由(-1,1)組成%的擴(kuò)展序列 y。cr 為擴(kuò)展因子。cr=256;for i=1:252 if x0(i)=1 y(i,1:cr)=1; else y(i,1:cr)=-1; end;end;y(253:256,:)=0;% 以下產(chǎn)生偽隨機(jī)序列 p。為此先設(shè)定密鑰(1114)%并產(chǎn)生高斯正態(tài)分布序列g(shù)2,再由g2產(chǎn)生由(-1,1)%組成的偽隨機(jī)序列 p。randn(state,1114);g2=randn(256,256);5.17 用MATLAB數(shù)字圖像水印一、引言隨著Internet的普及,

5、信息的安全保護(hù)問題日益突出。如何有效地防止數(shù)據(jù)的非法復(fù)制和鑒別數(shù)字媒體的知識(shí)產(chǎn)權(quán),成為亟需解決的問題。1993年Caronni提出了數(shù)字水印的概念,并應(yīng)用于數(shù)字圖像,此后,研究人員將數(shù)字水印的概念擴(kuò)展到電視圖像和聲音等領(lǐng)域,數(shù)字水印技術(shù)作為版權(quán)保護(hù)的重要手段而得到了廣泛的研究和應(yīng)用。數(shù)字水印技術(shù)涉及到大量圖像處理算法、數(shù)學(xué)計(jì)算工具等,用普通編程工具實(shí)現(xiàn)上述算法將要花費(fèi)大量的時(shí)間。MATLAB語言是MathWorks公司推出的一種簡(jiǎn)單、高效、功能極強(qiáng)的高級(jí)語言,具有高性能數(shù)值計(jì)算能力和可視化計(jì)算環(huán)境。許多復(fù)雜的計(jì)算問題只需短短的幾行代碼就可在MATLAB中實(shí)現(xiàn)。本文基于典型的DCT(離散余弦變換

6、)數(shù)字水印算法過程,詳細(xì)介紹用MATLAB實(shí)現(xiàn)數(shù)字水印的嵌入、提取和攻擊測(cè)試的方法。二、數(shù)字水印技術(shù)從信號(hào)處理的角度看,在載體圖像中嵌入數(shù)字水印可以視為在強(qiáng)背景(即原始圖像)下疊加一個(gè)視覺上看不到的弱信號(hào)(水印),由于人的視覺系統(tǒng)(Human Visual System,HVS)分辨率受到一定的限制,只要疊加信號(hào)的幅度低于HVS的對(duì)比度門限,HVS就無法感覺到信號(hào)的存在,因此,通過對(duì)載體對(duì)象作一定的調(diào)整,就有可能在不引起人感知的情況下嵌入一些信息。.數(shù)字水印的嵌入水印嵌入就是把水印信號(hào)W() 嵌入到原始圖像X0=0()中。水印嵌入過程如圖1所示。水印嵌入準(zhǔn)則分為:加法準(zhǔn)則:W() =0()+(

7、) 乘法準(zhǔn)則:W() =0()(1+()為強(qiáng)度因子,為了保證在水印不可見的前提下,盡可能提高嵌入水印的強(qiáng)度。的選擇必須考慮圖像的性質(zhì)和視覺系統(tǒng)的特性。2.水印的提取與檢測(cè)在某些水印系統(tǒng)中,水印可以被精確地提取出來,這一過程被稱作水印提取。例如在完整性確認(rèn)的應(yīng)用中,必須能夠精確地提取出嵌入的水印,并且通過水印的完整性來確認(rèn)多媒體數(shù)據(jù)的完整性。如果提取出的水印發(fā)生了部分的變化,最好還能夠通過變化的水印的位置來確定原始數(shù)據(jù)被篡改的位置。水印在提取檢測(cè)時(shí)可以需要原始圖像的參與,也可以不需要原始圖像的參與。但將水印技術(shù)用于圖像的網(wǎng)絡(luò)發(fā)布和傳播時(shí),如果檢測(cè)時(shí)需要使用原始圖像則是個(gè)缺陷,因此,當(dāng)前大多數(shù)的水

8、印檢測(cè)算法不需要原始圖像的參與。圖2、圖3分別是水印提取和檢測(cè)的框圖,虛線部分表示在提取或判斷水印信號(hào)時(shí)原始圖像不是必需的。三、DCT 域數(shù)字圖像水印算法從技術(shù)上講,目前的數(shù)字水印算法可以分成兩類:空域水印算法和頻域(變換域)水印算法??沼蛩∷惴ㄊ侵笇⑺⌒盘?hào)直接嵌入在原始數(shù)據(jù)中。頻域水印算法首先將原始的數(shù)據(jù)進(jìn)行DCT 或小波變換,在頻域上嵌入水印信息,然后經(jīng)反變換輸出。在檢測(cè)水印時(shí),也要首先對(duì)信號(hào)作相應(yīng)的數(shù)學(xué)變換,然后通過相關(guān)運(yùn)算檢測(cè)水印。選擇二值化灰度圖像作為水印信息,根據(jù)水印圖像的二值性選擇不同的嵌入系數(shù),并將原始圖像進(jìn)行8 8 的分塊,將數(shù)字水印的灰度值直接植入到原始灰度圖像的DCT

9、 變換域中,實(shí)現(xiàn)水印的嵌入。具體方法如下:.水印嵌入設(shè)X是M*N 大小的原始圖像, W是水印圖像,大小為P*Q,M 和N 分別是P 和Q 的偶數(shù)倍。把水印W 加載到圖像X中,算法分以下幾步進(jìn)行:將X分解為(M8)*(N8)個(gè)8*8大小的方塊BX(m,n),同時(shí),將W也分解為(M8)*(N8)個(gè)(8PM)*(8QN)大小的方塊BW(m,n),1mM8 ,1nN8。對(duì)每一個(gè)BX(m,n)進(jìn)行DCT變換:DBX(m ,n)= DCT(BX(m ,n)。對(duì)每一個(gè)DBX(m ,n)和BW(m ,n),Si為從DBX(m ,n)的中頻選出的加載的位置,1i(8P/M)*(8Q/N),ti為水印BW(m,n

10、)的位置坐標(biāo)1i(8P/M)*(8Q/N)。DBX(m, n)(si)=*BW(m,n)(ti),其中是加權(quán)系數(shù),用DBX(m,n)(si)來代替DBX(m,n)(si)得到加載水印后的圖像。對(duì)以上得到的每一個(gè)DBCI(m,n)進(jìn)行逆DCT 變換:IDBX(m,n) = IDCT(DBX(m , n)。并將各方塊IDBX(m,n)合并為一個(gè)整圖X,即加載了水印的新圖像。.水印提取設(shè)圖像X為已經(jīng)加載了水印的載體圖像?,F(xiàn)要將所加載的水印從X中提取出來。其過程為上述加載水印算法的逆運(yùn)算:將X分為(M/8)*(N/8)個(gè)88大小的方塊BX(m,n),1m M/8,1nN/8。對(duì)每一個(gè)BX(m,n)進(jìn)行

11、二維DCT反變換:BX(m,n)=iDCT(BX(m,n)。對(duì)每一個(gè)BX(m,n),按照式BW(m,n)(ti)= 1/*BX(m,n)(si)得到BW(m, n)。將上面得到的所有BW(m,n)合并成一個(gè)整圖W 。四、數(shù)字水印的嵌入與提取MATLAB中對(duì)一維和二維信號(hào)分別提供了各種變換和逆變換函數(shù)。例如dct()、dct2()分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的DCT(離散余弦變換),idct()、idct2()分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的IDCT(逆向離散余弦變換),它們是實(shí)現(xiàn)頻域水印算法必不可少的工具。下面以一個(gè)在頻域嵌入和提取黑白圖像水印程序?yàn)槔o出使用MATLAB實(shí)現(xiàn)數(shù)字水印的過程。嵌入水

12、印的算法描述:讀取原始圖像和黑白水印圖像到二維數(shù)組I與J;將原始圖像I分割為互不覆蓋的圖像塊blockL(x,y),1 x, y 8,L =1,2.M *M /64,對(duì)blockL(x,y) 進(jìn)行DCT變換,得到dct _ blockL(u,v);取黑白水印圖像中的一個(gè)元素J(p,q),嵌入原始圖像塊的DCT的低頻系數(shù)中;對(duì)嵌入水印信息后的圖像塊dct_blockL(u,v) 進(jìn)行反DCT變換;得到blockL( x,y);合并圖像塊,得到嵌入黑白水印后的圖像。下面是嵌入與提取水印的程序?qū)嵗\(yùn)行結(jié)果如圖4所示。%嵌入水印的程序代碼M=256; %原圖像長度N=32; %水印圖像長度K=8;I

13、=zeros(M,M);J=zeros(N,N);BLOCK = zeros(K,K);%顯示原圖像subplot(3,2,1);I=imread(mona.bmp,bmp);imshow(I);title(原始公開圖像);%顯示水印圖像subplot(3,2,2);J=imread(flag.bmp,bmp);imshow(J);title(水印圖像);%水印嵌入for p=1:N for q=1:N x=(p-1)*K+1; y=(q-1)*K+1; BLOCK=I(x:x+K-1,y:y+K-1); BLOCK=dct2(BLOCK); if J(p,q)=0 a=-1; else a=

14、1; end BLOCK=BLOCK*(1+a*0.03); BLOCK=idct2(BLOCK); I(x:x+K-1,y:y+K-1)=BLOCK; endend%顯示嵌入水印后的圖像subplot(3,2,3);imshow(I);title(嵌入水印后的圖像);imwrite(I,watermarked.bmp,bmp);%從嵌入水印的圖像中提取水印I=imread(mona,bmp);J=imread(watermarked.bmp,bmp);for p=1:Nfor q=1:Nx=(p-1)*K+1;y=(q-1)*K+1;BLOCK1=I(x:x+K-1,y:y+K-1);BLO

15、CK2=J(x:x+K-1,y:y+K-1);BLOCK1=idct2(BLOCK1);BLOCK2=idct2(BLOCK2);a=BLOCK2(1,1)/BLOCK1(1,1)-1;if a0W(p,q)=0;elseW(p,q)=1;endendend%顯示提取的水印subplot(3,2,4);imshow(W);title(從含水印圖像中提取的水印);圖4基于DCT變換的水印嵌入與提取五、水印攻擊測(cè)試由于數(shù)字水印在實(shí)際應(yīng)用中可能會(huì)遭到各種各樣的攻擊,因此對(duì)算法進(jìn)行攻擊測(cè)試是衡量一個(gè)水印算法優(yōu)劣的重要手段。下面是一個(gè)水印攻擊與水印提取的程序?qū)嵗?,首先?duì)嵌入水印后的圖像進(jìn)行JPEG壓縮(

16、一種水印攻擊),而后從壓縮的圖像中提取出水印,如圖5所示。從圖5中可以看到DCT域的水印算法抵抗JPEG壓縮攻擊的效果是比較好的。圖5圖像壓縮后提取的水印%水印攻擊測(cè)試M=256; N=32; K=8;I=zeros(M,M); J=zeros(M,M); w=zeros(N,N);BLOCK1=zeros(K,K); BLOCK2=zeros(K,K);%對(duì)嵌入水印后的圖像進(jìn)行JPEG壓縮L=imread(watermarked.bmp,bmp);imwrite(L,attack.jpg,jpeg,Quality,45);J=imread(attack.jpg,jpeg);subplot(3,2,5);imshow(J);title(壓縮后的圖像);I=imread(mona,bmp);%從壓縮的圖像中提取水印for p=1:Nfor q=1:Nx=(p-1)*K+1; y=(q-1)*K+1;BLOCK1=I(x:x+K-1,y:y+K-1);BLOCK2=J(x:x+K-1,y:y+K-1);BLOCK1=idct2(BLOCK1);BLOCK2=idct2(BLOCK2);a=BLOCK2(1,1)/BLOCK1(1,1)-1;if a0W(p,q)=0;elseW(p,q)=1;endendend%顯示提取的水印subpl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論