基于Matlab的數字水印設計基于空域的水印實現_第1頁
基于Matlab的數字水印設計基于空域的水印實現_第2頁
基于Matlab的數字水印設計基于空域的水印實現_第3頁
基于Matlab的數字水印設計基于空域的水印實現_第4頁
基于Matlab的數字水印設計基于空域的水印實現_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄1設計目的12設計要求23相關知識33.1 數字水印的相關知識數字水印的相關知識33.2 數字水印技術的基本原理43.3數字水印的分類54設計內容64.1 LSB算法介紹64.1.1 LSB算法的基本原理64.1.2 LSB算法基本步驟64.2 LSB算法的實現64.3設計流程圖74.3.1水印嵌入的流程圖74.3.2水印提取的流程圖85程序源代碼96仿真結果與分析126.1 嵌入水印后的運行結果126.2 提取水印后的運行結果136.3 結果分析147結論語158參考文獻161設計目的(1)了解數字水印的基本概念,深入理解基于LSB算法的數字水印嵌入與提取方法。(2)運用MATLAB語言

2、編程實現圖像水印的嵌入和提取。(3)能夠顯示水印嵌入前后的載體圖像,能夠顯示嵌入與提取的水印。(4)熟練掌握 MATLAB軟件的基本操作。(5)學會掌握 MATLAB軟件的程序編程。(6)培養(yǎng)獨立分析和解決問題的能力,學會撰寫課程設計的總結報告。2設計要求 本設計利用MATLAB進行編程及仿真,仿真內容為基于Matlab的數字水印設計,基于空域的水印實現。擬利用所學數字圖象處理技術知識,在MATLAB軟件系統上來實現對圖像水印的嵌入和提取。(1)掌握課程設計的相關知識、概念、思路及目的。(2)程序設計合理、能夠正確運行且操作簡單,可實施性強。(3)掌握數字水印技術的基本原理。(4)掌握基于空域

3、的LSB算法并明確程序操作步驟的先后順序。3相關知識3.1 數字水印的相關知識數字水印的相關知識數字水?。―igital Watermark)技術是指用信號處理的方法在數字化的多媒體數據中嵌入隱蔽的標記,這種標記通常是不可見的,只有通過專用的檢測器或閱讀器才能提取。數字水印是信息隱藏技術的一個重要研究方向。在數字水印技術中,水印的數據量和魯棒性構成了一對基本矛盾。從主觀上講,理想的水印算法應該既能隱藏大量數據,又可以抗各種信道噪聲和信號變形。然而在實際中,這兩個指標往往不能同時實現,不過這并不會影響數字水印技術的應用,因為實際應用一般只偏重其中的一個方面。如果是為了隱蔽通信,數據量顯然是最重要

4、的,由于通信方式極為隱蔽,遭遇敵方篡改攻擊的可能性很小,因而對魯棒性要求不高。但對保證數據安全來說,情況恰恰相反,各種保密的數據隨時面臨著被盜取和篡改的危險,所以魯棒性是十分重要的,此時,隱藏數據量的要求居于次要地位。數字水印技術是通過一定的算法將一些標志性信息直接嵌到多媒體內容當中,但不影響原內容的價值和使用,并且不能被人的知覺系統覺察或注意到。水印信息可以是作者的序列號、公司標志、有特殊意義的文本等,可用來識別文件、圖像或音樂制品的來源、版本、原作者、擁有者、發(fā)行人、合法使用人對數字產品的擁有權。與加密技術不同,數字水印技術并不能阻止盜版活動的發(fā)生,但它可以判別對象是否受到保護,監(jiān)視被保護

5、數據的傳播、真?zhèn)舞b別和非法拷貝、解決版權糾紛并為法庭提供證據。為了給攻擊者增加去除水印的難度,目前大多數水印制作方案都采用密碼學中的加密(包括公開密鑰、私有密鑰)體系來加強,在水印的嵌入、提取時采用一種密鑰,甚至幾種密鑰聯合使用。隨著計算機應用逐漸廣泛、網絡技術的迅速發(fā)展,使音頻、視頻等多媒體信息都能以數字形式傳輸和播放,從而使大規(guī)模非授權拷貝成為了可能,而這樣會損害音樂、電影、書籍和軟件等出版業(yè)的發(fā)展,為了保護知識產權引發(fā)了一個很有意義的研究方向:信息隱藏。本文首先介紹了了數字水印技術的原理和分類,接著對LSB算法原理及LSB算法實現進行了介紹,最后使用MATLAB 對其加密過程進行了仿真。

6、3.2 數字水印技術的基本原理 數字水印的主要目的是將特定的信息加入到需要保護的媒體信息中,加入的信息一般是能夠代表媒體信息版權的內容,如公司標志、媒體作者、特定代碼等,而且要保證數字水印能夠抵抗一定的攻擊,而不被輕易的破壞和修改,同時數字水印要能夠被提取或者能夠被檢測到。數字水印的具體內容、算法、提取或檢測過程根據實際應用有不同的要求。數字水印的嵌入和提取過程如圖3.1,圖3.2所示。水印信息密鑰圖像帶有水印的圖像加密算法圖3.1 數字水印的嵌入過程水印圖像密鑰原始水印解密算法圖3.2 數字水印的提取過程 圖3.1是數字水印的嵌入過程,加入密鑰可以提高數字水印的隱蔽性、抗攻擊性,而并非是必須

7、的。根據用途不同,嵌入的水印有些是需要還原的,而有些則只需驗證水印的存在性,前者需要數字水印的提取算法,而圖3.2需要數字水印的檢測算法,根據具體的水印算法,嵌入或提取的過程可能有所不同。3.3數字水印的分類數字水印算法一般可分為兩種空域法和頻域法,頻域法有以下優(yōu)點:(1)嵌入的水印信號能量可以分布到空域的所有像素上,有利于保證水印的不可見 性;(2)視覺系統(HVS)的某些特性(如頻率的掩蔽特性)可以更方便地結合到水印編碼過程中;(3)頻域法可與國際數據壓縮標準兼容,從而實現在壓縮域(compressed domain)內的水印編碼。所以我們也以頻域法為主介紹MATLAB在數字水印技術中的使

8、用。 按數字水印的特性可分為魯捧數字水印和脆弱數字水印。魯棒數字水印主要用于標識數字媒體信息的版權信息,它要求嵌入的水印能夠抵抗對媒體的常規(guī)編輯和惡意攻擊,在對媒體進行如:裁剪、旋轉、縮放、壓縮的變換后水印信息不受到較大損害。而脆弱水印相反,它對攻擊敏感,可以根據脆弱水印的狀態(tài)判斷原始信息是否被修改過。 按數字水印所附載的媒體可分為圖像水印、音頻水印、視頻水印和文本水印等。每一種數字化的媒體都有相應的水印算法,這也造成了數字水印算法的復雜性。 按數字水印隱藏的位置劃分可以分為空 (時)域數字水印、頻域數字水印、時頻域數字水印和時間度數字水印。原始信息通常在空域或者時域上表示,根據信號處理理論有

9、多種變換將信號變化到另外的域上,每一種域上都可以嵌入數字水 印,也就產生了相應的數字水印算法。 按數字水印的可見性可以分為可見數字水印和非可見數字水印??梢姅底炙⊥ǔJ菍⒐颈硎警B加到原始圖像上,算法比較簡單,也有相應的應用軟件,如Undreamt Marking Technologies公司的Photo Watermark。而不可見數字水印要求嵌入的水印是不能被人的視覺系統感知的,其算法相對復雜。 關于數字水印算法的分類還有很多不同的分類方法,比如按用途劃分,按檢測過程劃分等,限于篇幅,本文僅介紹了較為常見的基于空域的LSB算法。4設計內容4.1 LSB算法介紹 LSB是一種簡單傳統的信息

10、隱藏算法,屬于數字水印技術中的一種。本文首先介紹了LSB技術的原理和特點,然后討論了基于LSB的數字水印算法。最后利用MATLAB 2009 b對這一算法的加密過程進行了仿真。4.1.1 LSB算法的基本原理 對空域的LSB做替換,用來替換LSB的序列就是需要加入的水印信息、水印的數字摘要或者由水印生成的偽隨機序列。由于水印信息嵌入的位置是LSB,為了滿足水印的不可見性,允許嵌入的水印強度不可能太高。然而針對空域的各種處理,如游程編碼前的預處理,會對不顯著分量進行一定的壓縮,所以LSB算法對這些操作很敏感。因此LSB算法最初是用于脆弱性水印的。4.1.2 LSB算法基本步驟(1) 將得到的隱藏

11、有秘密信息的十進制像素值轉換為二進制數據.(2) 用二進制秘密信息中的每一比特信息替換與之相對應的載體數據的最低有效位.(3)將得到的含秘密信息的二進制數據轉換為十進制像素值,從而獲得含秘密信息的圖像.4.2 LSB算法的實現 LSB算法實現較為簡單,首先,需要考慮嵌入的數字水印的數據量,如果嵌入最低的1位,則可以嵌入的信息量是原始圖像信息量的18,如果適用最低兩位則可以嵌入的信息量是14。但是嵌入的數字水印的信息量越大,同時對圖像的視覺效果影響也越大。在這里要嵌入一個二值的圖像。然后,適當調整數字水印圖像的大小和比特位數,以適應數字水印圖像數據量的要求。最后,對原始圖像中要使用的最低位置0,

12、再將數字水印數據放人原始圖像的最低位即可。下面通過MATLAB 2009 b2實現這一算法。這里選用一幅3264*2448像素,256灰度的圖像,數字水印用“萬泉公園”的字樣的二值圖像。 置0的方法是調用模2函數mod(a,2),將得到的數值與原水印相減,從而得到最低位為0的圖片。(使用兩位最低有效位的話則用模4函數mod(a,4)然后相減)。LSB算法簡單,實現容易,同時可以保證數字水印的不可見性,由于可以在最低位的每個像素上都插人數字水印信息,因此有較大的信息嵌入量。LSB算法一般嵌入圖像的最低一位或者兩位,如果嵌入的位數太多,則會被人眼察覺到。但是由于數字水印位于圖像的不重要像素位上,因

13、此很容易被圖像過濾、量化和幾何型變等操作破壞,以致無法恢復數字水印。針對基本的LSB算法的缺點,一些研究者也提出了一些改進的算法,如奇偶標識位隱藏算法、索引數據鏈隱藏算法等,這些算法能增強數字水印的隱蔽性。4.3設計流程圖4.3.1水印嵌入的流程圖讀取圖像和水印圖像 用bitset函數將原圖的最低有效位值換為水印的值得到有水印的圖像 圖4.1 水印嵌入的流程圖4.3.2水印提取的流程圖 讀取帶有水印的圖像和水印圖像用嵌入水印圖像的最低有效位重建水印 得到嵌入的水印 圖4.2水印提取的流程圖 5程序源代碼(1) 嵌入水印代碼clear all;% 保存開始時間start_time=cputime

14、; % 讀入原圖像file_name='E:1.BMP;cover_object,map=imread(file_name); % 讀入水印圖像file_name='E:2.BMP'message,map1=imread(file_name);message1=message;message=double(message); %轉換為double數message=fix(message./2); %轉換為0,1組成的矩陣message=uint8(message); %轉換為uint8數 % 原圖的行數與列數Mc=size(cover_object,1); %原圖的行數

15、Nc=size(cover_object,2); %原圖的列數 % 水印的行數與列數Mm=size(message,1); %水印的行數Nm=size(message,2); %水印的列數% 將水印擴展為原圖像大小,并寫入watermarkfor ii = 1:Mcfor jj = 1:Ncwatermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1);% 用mod函數進行求余處理endend % 將原圖的最低有效位值換為水印的值watermarked_image=cover_object;for ii = 1:Mcfor jj = 1:Ncwaterm

16、arked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj);% 用bitset函數將原圖的最低有效位值換為水印的值endend % 將嵌入水印圖像寫入lsb_watermarked.bmpimwrite(watermarked_image,'lsb_watermarked.bmp','bmp');% 顯示運行時間elapsed_time=cputime-start_time, % 顯示嵌入水印圖像figure(1);subplot(1,2,1);imshow(watermarked_

17、image,);title('嵌入水印圖像');subplot(1,2,2);imshow(cover_object,);title('原圖像'); %擴展后水印for ii = 1:Mcfor jj = 1:Ncwatermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1);%用mod函數對水印進行擴展endend %顯示結果figure(2);subplot(1,2,1);imshow(watermark1,);title('擴展后的水印');figure(2);subplot(1,2,2);ims

18、how(message1,);title('原水印');(2) 水印的提取過程clear all;% 保存開始時間start_time=cputime; % 讀入嵌入水印圖像file_name='lsb_watermarked.bmp'watermarked_image=imread(file_name);% 嵌入水印圖像的行數與列數 Mw=size(watermarked_image,1);%嵌入水印圖像行數Nw=size(watermarked_image,2);%嵌入水印圖像列數 %讀入原始水印file_name='E:2.BMP'orig

19、_watermark=imread(file_name);%原始水印的行數與列數Mm=size(orig_watermark,1); %水印的行數Nm=size(orig_watermark,2); %水印的列數 % 用嵌入水印圖像的最低有效位重建水印for ii = 1:Mwfor jj = 1:Nwwatermark(ii,jj)=bitget(watermarked_image(ii,jj),1); % 用bitget函數重建水印endend% 將提取水印變?yōu)樵妓〈笮atermark=2*double(watermark);for ii = 1:Mm-1for jj = 1:Nm-

20、1watermark1(ii+1,jj+1)=watermark(ii,jj);endendwatermark1(1,1)=watermark(Mm,Nm);% 顯示運行時間elapsed_time=cputime-start_time,% 顯示嵌入水印圖像,提取水印以及原始水印figure(1);subplot(1,2,1);imshow(watermarked_image,);title('嵌入水印圖像'); figure(2);subplot(1,2,1);imshow(watermark1,);title('提取水印'); figure(2);subpl

21、ot(1,2,2);imshow(orig_watermark,);title('原始水印');6仿真結果與分析6.1 嵌入水印后的運行結果(1) 根據水印嵌入算法及顯示函數,得出原圖像和嵌入水印后的圖像,如圖6.1圖6.1 原圖像和嵌入水印后的圖像(2) 將要嵌入到圖像中的水印顯示出來,如圖6.2圖6.2 原水印的圖像6.2 提取水印后的運行結果(1) 將水印通過嵌入算法嵌入到圖像中,并將嵌入水印的圖像寫入到temp.jpg中,嵌入水印的圖像如圖6.3圖6.3 嵌入水印的圖像(2)通過提取水印的過程算法將水印從原圖像中提取出來,如圖6.4圖6.4 原水印與提取的水印圖像6.3 結果分析(1)嵌入水印后的運行結果結果圖如上圖6.1和圖6.2,圖6.1表示的是原圖像和嵌入水印后的結果圖像,圖 6.2表示的是原水印和擴展后的水印的結果圖像。通過圖示顯示,可知LSB算法的實現簡單和保證水印的不可見性.(2)提取水印后的運行結果結果圖如上圖6.3和圖6

溫馨提示

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

評論

0/150

提交評論