基于Matlab的數(shù)字水印設(shè)計(jì)—基于DCT域的水印實(shí)現(xiàn)_第1頁
基于Matlab的數(shù)字水印設(shè)計(jì)—基于DCT域的水印實(shí)現(xiàn)_第2頁
基于Matlab的數(shù)字水印設(shè)計(jì)—基于DCT域的水印實(shí)現(xiàn)_第3頁
基于Matlab的數(shù)字水印設(shè)計(jì)—基于DCT域的水印實(shí)現(xiàn)_第4頁
基于Matlab的數(shù)字水印設(shè)計(jì)—基于DCT域的水印實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、沈陽理工大學(xué)數(shù)字圖像處理課程設(shè)計(jì)成 績(jī) 評(píng) 定 表學(xué)生姓名班級(jí)學(xué)號(hào)1203030113專 業(yè)電子信息工程課程設(shè)計(jì)題目基于Matlab的數(shù)字水印設(shè)計(jì)基于DCT域的水印實(shí)現(xiàn)評(píng)語組長(zhǎng)簽字:成績(jī)?nèi)掌?2015年7月20日課程設(shè)計(jì)任務(wù)書學(xué) 院信息科學(xué)與工程專 業(yè)電子信息工程學(xué)生姓名班級(jí)學(xué)號(hào) 1203030113課程設(shè)計(jì)題目基于Matlab的數(shù)字水印設(shè)計(jì)基于DCT域的水印實(shí)現(xiàn)實(shí)踐教學(xué)要求與任務(wù):本設(shè)計(jì)利用MATLAB進(jìn)行編程及仿真,仿真內(nèi)容為基于DCT域的數(shù)字水印實(shí)現(xiàn)。擬利用所學(xué)數(shù)字圖象處理技術(shù)知識(shí),在MATLAB軟件系統(tǒng)上來實(shí)現(xiàn)水印的嵌入和提取,以對(duì)水印嵌入與提取算法的不可見性、魯棒性進(jìn)行驗(yàn)證性測(cè)試。工

2、作計(jì)劃與進(jìn)度安排: 2015年7月10日11日:熟悉編程環(huán)境,查閱相關(guān)資料。2015年7月11日12日:水印算法設(shè)計(jì)。2015年7月12日13日:編碼、調(diào)試、實(shí)驗(yàn)與分析。2015年7月13日14日:撰寫課程設(shè)計(jì)報(bào)告。2015年7月14日15日:準(zhǔn)備答辯。指導(dǎo)教師: 2015 年7 月2日專業(yè)負(fù)責(zé)人: 2015年7月2日學(xué)院教學(xué)副院長(zhǎng): 2015年7月2日摘 要數(shù)字水?。―igital Watermark)技術(shù)是指用信號(hào)處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測(cè)器或閱讀器才能提取。數(shù)字水印是信息隱藏技術(shù)的一個(gè)重要研究方向。隨著數(shù)字水印技術(shù)

3、的發(fā)展,數(shù)字水印的應(yīng)用領(lǐng)域也得到了擴(kuò)展,數(shù)字水印的基本應(yīng)用領(lǐng)域是版權(quán)保護(hù)、隱藏標(biāo)識(shí)、認(rèn)證和安全不可見通信。 當(dāng)數(shù)字水印應(yīng)用于版權(quán)保護(hù)時(shí),潛在的應(yīng)用市場(chǎng)在于電子商務(wù)、在線或離線地分發(fā)多媒體內(nèi)容以及大規(guī)模的廣播服務(wù)。數(shù)字水印用于隱藏標(biāo)識(shí)時(shí),可在醫(yī)學(xué)、制圖、數(shù)字成像、數(shù)字圖像監(jiān)控、多媒體索引和基于內(nèi)容的檢索等領(lǐng)域得到應(yīng)用。數(shù)字水印的認(rèn)證方面主要ID卡、信用卡、ATM卡等上面數(shù)字水印的安全不可見通信將在國防和情報(bào)部門得到廣泛的應(yīng)用。本文主要是根據(jù)所學(xué)的數(shù)字圖象處理知識(shí),在MATLAB環(huán)境下,通過系統(tǒng)編程的方式,建立并實(shí)現(xiàn)基于DCT域的數(shù)字水印加密系統(tǒng)。該系統(tǒng)主要包含數(shù)字水印的嵌入與提取,仿真結(jié)果表明,

4、數(shù)字水印算法具有有效性、可靠性、抗攻擊性、魯棒性和不可見性,能夠?yàn)閿?shù)字媒體信息在防偽、防篡改、認(rèn)證、保障數(shù)據(jù)安全和完整性等方面提供有效的技術(shù)保障。關(guān)鍵詞:數(shù)字水??;MATLAB;DCT目 錄1 課程設(shè)計(jì)目的12 課程設(shè)計(jì)要求23 數(shù)字水印技術(shù)基本原理33.1 數(shù)字水印基本框架33.2 算法分類33.2.1 DCT法43.2.2 其他方法43.3 實(shí)際需要考慮的問題43.3.1 不可見性43.3.2 魯棒性53.3.3 水印容量53.3.4 安全性54 基于DCT變換仿真64.1 算法原理64.1.1 準(zhǔn)備工作64.1.2 選取8*8變換塊74.1.3 邊界自適應(yīng)74.1.4 DCT變換與嵌入7

5、4.1.5 恢復(fù)空域84.2 嵌入算法擴(kuò)展84.2.1 RGB彩色圖像三個(gè)矩陣的劃分84.2.2 八色彩色水印84.3 水印的提取94.4 仿真程序95 結(jié)果分析14結(jié)束語17參考文獻(xiàn)181課程設(shè)計(jì)目的數(shù)字水印技術(shù)是用信號(hào)處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測(cè)器或閱讀器才能提取。數(shù)字水印是信息隱藏技術(shù)的一個(gè)重要研究方向。在數(shù)字水印技術(shù)中,水印的數(shù)據(jù)量和魯棒性構(gòu)成了一對(duì)基本矛盾。從主觀上講,理想的水印算法應(yīng)該既能隱藏大量數(shù)據(jù),又可以抗各種信道噪聲和信號(hào)變形。然而在實(shí)際中,這兩個(gè)指標(biāo)往往不能同時(shí)實(shí)現(xiàn),不過這并不會(huì)影響數(shù)字水印技術(shù)的應(yīng)用,因?yàn)閷?shí)際應(yīng)

6、用一般只偏重其中的一個(gè)方面。如果是為了隱蔽通信,數(shù)據(jù)量顯然是最重要的,由于通信方式極為隱蔽,遭遇敵方篡改攻擊的可能性很小,因而對(duì)魯棒性要求不高。但對(duì)保證數(shù)據(jù)安全來說,情況恰恰相反,各種保密的數(shù)據(jù)隨時(shí)面臨著被盜取和篡改的危險(xiǎn),所以魯棒性是十分重要的,此時(shí),隱藏?cái)?shù)據(jù)量的要求居于次要地位。數(shù)字水印技術(shù)是通過一定的算法將一些標(biāo)志性信息直接嵌到多媒體內(nèi)容當(dāng)中,但不影響原內(nèi)容的價(jià)值和使用,并且不能被人的知覺系統(tǒng)覺察或注意到。水印信息可以是作者的序列號(hào)、公司標(biāo)志、有特殊意義的文本等,可用來識(shí)別文件、圖像或音樂制品的來源、版本、原作者、擁有者、發(fā)行人、合法使用人對(duì)數(shù)字產(chǎn)品的擁有權(quán)。與加密技術(shù)不同,數(shù)字水印技術(shù)

7、并不能阻止盜版活動(dòng)的發(fā)生,但它可以判別對(duì)象是否受到保護(hù),監(jiān)視被保護(hù)數(shù)據(jù)的傳播、真?zhèn)舞b別和非法拷貝、解決版權(quán)糾紛并為法庭提供證據(jù)??偟膩碚f,數(shù)字水印可以攜帶有版權(quán)保護(hù)信息和認(rèn)證信息,保護(hù)數(shù)字產(chǎn)品的合法拷貝和傳播。2課程設(shè)計(jì)要求利用所學(xué)的數(shù)字圖像處理技術(shù),建立并實(shí)現(xiàn)基于DCT的數(shù)字水印加密系統(tǒng),利用MATLAB軟件系統(tǒng)來實(shí)現(xiàn)水印的嵌入和提取,并對(duì)算法的不可見性、魯棒性進(jìn)行測(cè)試。具體要求:  (1)熟悉和掌握MATLAB程序設(shè)計(jì)方法;  (2)學(xué)習(xí)和熟悉MATLAB圖像處理工具箱; (3)學(xué)會(huì)運(yùn)用MATLAB工具箱對(duì)圖像進(jìn)行處理和分析; (4)能對(duì)圖像jpg格

8、式進(jìn)行打開、保存、另存、退出等功能操作; (5)利用所學(xué)數(shù)字圖像處理技術(shù)知識(shí)、MATLAB軟件對(duì)圖像進(jìn)行水印的嵌入和提??;(6)在程序開發(fā)時(shí),清楚主要實(shí)現(xiàn)函數(shù)目的和作用,需要在程序書寫時(shí)做適當(dāng)注釋說明,理解每一句函數(shù)的具體意義和使用范圍;(7)每個(gè)程序都必須做到功能仿真成功,運(yùn)行結(jié)果以圖片的形式粘貼到報(bào)告中。3數(shù)字水印技術(shù)基本原理3.1 數(shù)字水印基本框架一個(gè)數(shù)字水印系統(tǒng)一般包括三個(gè)基本方面:水印的生成、水印的嵌入和水印的提取或檢測(cè)。數(shù)字水印的嵌入和提取的一般過程基本框架如圖3.1,圖3.2所示。水印生成算法(G)數(shù)字水?。╓)原始載體數(shù)據(jù)(J)水印嵌入算法(E)私鑰/公鑰(K)嵌入水

9、印后的數(shù)據(jù)(IW)圖3.1 水印嵌入的一般過程基本框架待檢測(cè)數(shù)據(jù)(IW)水印檢測(cè)算法(D)私鑰/公鑰(K)估計(jì)水?。╓)/相似度檢測(cè)(Sim)數(shù)字水印(W)/原始數(shù)據(jù)(I)圖3.2 水印檢測(cè)的一般過程基本框架3.2 算法分類根據(jù)水印實(shí)現(xiàn)方法不同,數(shù)字水印可分為空(時(shí))域數(shù)字水印和頻域數(shù)字水印??沼驍?shù)字水印是直接在信號(hào)空間上疊加水印信號(hào),而頻域法加入數(shù)字水印的原理是首先將原始信號(hào)(語音一維信號(hào)、圖像二維信號(hào))變換到頻域,常用的變換一般有DWT、DCT、DFT、WP和分形。然后,對(duì)加入了水印信息的信號(hào)進(jìn)行頻域反變換(IDWT、IDCT、DFT、WP),得到含有水印信息的信號(hào)。頻域法檢測(cè)水印的原理是

10、將原始信號(hào)與待檢測(cè)信號(hào)同時(shí)進(jìn)行變換域變換,比較兩者的區(qū)別,進(jìn)行嵌入水印的逆運(yùn)算,得出水印信息。如果是可讀的水印,那么就此結(jié)束,如果是不可讀水印,如高斯噪聲,就將得出的水印與已知水印作比較,由相關(guān)性判斷,待檢測(cè)信號(hào)含不含水印,故水印的檢測(cè)有兩個(gè)結(jié)束點(diǎn)。頻域法有以下優(yōu)點(diǎn):嵌入的水印信號(hào)能量可以分布到空域的所有像素上,有利于保證水印的不可見性;視覺系統(tǒng)(HVS)的某些特性(如頻率的掩蔽特性)可以更方便地結(jié)合到水印編碼過程中;頻域法可與國際數(shù)據(jù)壓縮標(biāo)準(zhǔn)兼容,從而實(shí)現(xiàn)在壓縮域(compressed domain)內(nèi)的水印編碼。3.2.1 DCT法對(duì)原始信號(hào)做DCT的算法:Cox和Piva等人提出的DCT

11、技術(shù)的經(jīng)典之作。Cox利用隨機(jī)數(shù)發(fā)生器產(chǎn)生標(biāo)準(zhǔn)正態(tài)序列作為水印信息對(duì)圖像進(jìn)行整體DCT變換后,選取除去DC系數(shù)之外部分較低頻率系數(shù)疊加水印信息;Piva則修改整幅圖像的中頻部分。對(duì)原始信號(hào)分塊后,再作DCT的算法:Hsu和Wu把圖像進(jìn)行8*8分塊,將一個(gè)二進(jìn)制序列作為水印放入DCT的中頻區(qū);有些學(xué)者則計(jì)算整個(gè)圖像的DCT,把一個(gè)實(shí)數(shù)序列嵌入DCT的中頻系數(shù)上。選擇中頻區(qū)的好處是一方面盡量減少嵌入信息對(duì)圖像主觀視覺的影響;同時(shí),盡量避免有損壓縮對(duì)水印信息可能帶來的損失。還有一種DCT方法就是把水印信息嵌入到高頻系數(shù)上,但是采用這種方法,抗壓縮性非常差。3.2.2 其他方法其它變換域還有Fouri

12、er-mellin域 、Fourier變換域、分形或WP(Wavelet Package)等。以上的變換域算法計(jì)算量都非常大,編程實(shí)現(xiàn)這些變換和逆變換也需要好好下一番功夫,由此造成研究人員把大量的時(shí)間和精力浪費(fèi)在與水印算法研究無關(guān)的問題上。33 實(shí)際需要考慮的問題在數(shù)字水印技術(shù)中,水印的數(shù)據(jù)量和魯棒性構(gòu)成了一對(duì)基本矛盾。從主觀上講,理想的水印算法應(yīng)該既能隱藏大量數(shù)據(jù),又可以抗各種信道噪聲和信號(hào)變形。然而在實(shí)際中,這兩個(gè)指標(biāo)往往不能同時(shí)實(shí)現(xiàn),不過這并不會(huì)影響數(shù)字水印技術(shù)的應(yīng)用,因?yàn)閷?shí)際應(yīng)用一般只偏重其中的一個(gè)方面。如果是為了隱蔽通信,數(shù)據(jù)量顯然是最重要的,由于通信方式極為隱蔽,遭遇敵方篡改攻擊的

13、可能性很小,因而對(duì)魯棒性要求不高。但對(duì)保證數(shù)據(jù)安全來說,情況恰恰相反,各種保密的數(shù)據(jù)隨時(shí)面臨著被盜取和篡改的危險(xiǎn),所以魯棒性是十分重要的,此時(shí),隱藏?cái)?shù)據(jù)量的要求居于次要地位。 3.3.1 不可見性對(duì)于以模擬方式存儲(chǔ)和分發(fā)的信息(如電視節(jié)目),或是以物理形式存儲(chǔ)的信息(如報(bào)刊、雜志),用可見的標(biāo)志就足以表明其所有權(quán)。但在數(shù)字方式下,標(biāo)志信息極易被修改或擦除。因此應(yīng)根據(jù)多媒體信息的類型和幾何特性,利用用戶提供的密鑰將水印隱藏到一系列隨機(jī)產(chǎn)生的位置中,使人無法察覺。圖3.3左側(cè)為原始圖像,右側(cè)為嵌入水印后的圖像。圖3.3 原始圖像與嵌入水印后的圖像對(duì)比3.3.2 魯棒性水印必須對(duì)一般的信號(hào)

14、處理操作(如濾波、平滑、增強(qiáng)、有失真壓縮等)、刪除攻擊、迷惑攻擊等具有魯棒性。除非對(duì)數(shù)字水印具有足夠的先驗(yàn)知識(shí),任何破壞和消除水印的企圖都將嚴(yán)重破壞多媒體信息的質(zhì)量。3.3.3 水印容量嵌入的水印信息必須足以表示多媒體內(nèi)容的創(chuàng)建者或所有者的標(biāo)志信息,或是購買者的序列號(hào)。這樣在發(fā)生版權(quán)糾紛時(shí),創(chuàng)建者或所有者的信息用于標(biāo)示數(shù)據(jù)的版權(quán)所有者,而序列號(hào)用于標(biāo)示違反協(xié)議而為盜版提供多媒體數(shù)據(jù)的用戶。數(shù)字水印在多媒體信息安全中的另一個(gè)重要應(yīng)用就是內(nèi)容的真實(shí)性鑒定(即認(rèn)證)。當(dāng)多媒體內(nèi)容發(fā)生改變時(shí),具有較強(qiáng)的敏感性的易損水?。‵ragile watermarking)會(huì)隨之發(fā)生一定程度的改變,從而可以鑒定原

15、始數(shù)據(jù)是否被篡改。3.3.4 安全性 水印的安全性要求未授權(quán)者不能發(fā)現(xiàn)數(shù)字作品中含有水印信息?;蛘咚惴ò踩詢H僅依賴于密鑰而不依賴于算法的保密性。因此在沒有密鑰的情況下,未授權(quán)者即使知道含有水印信息和知道水印算法,也不能提取出水印信息或者破壞水印信息。另外算法還應(yīng)該能夠抵抗合謀攻擊。由于水印特性的要求對(duì)應(yīng)用的依賴型很強(qiáng),恰當(dāng)?shù)脑u(píng)價(jià)準(zhǔn)則和具體的應(yīng)用有關(guān)。4基于DCT變換仿真4.1 算法原理離散余弦變換(Diserete Cosine Transform)簡(jiǎn)稱DCT變換。離散余弦變換是傅立葉變換的一種特殊情況,在傅立葉級(jí)數(shù)展開式中,如果被展開的函數(shù)是實(shí)偶函數(shù),那么其傅

16、立葉級(jí)數(shù)中只包含余弦項(xiàng),再將其離散化可導(dǎo)出離散余弦變換,因此余弦變換與傅里葉變換一樣有明確的物理意義,DCT變換避免了傅里葉變換中的復(fù)數(shù)運(yùn)算,它是基于實(shí)數(shù)的正交變換。DCT變換域數(shù)字水印算法的基本原理是將空域圖像變成頻域,然后將水印信息嵌入其直流項(xiàng)之中,最后將頻域轉(zhuǎn)換成空域以完成圖片的水印的嵌入。其主要思想是:在DCT變換域上選擇中、低頻系數(shù)疊加水印信息,因?yàn)槿搜鄣母杏X主要集中在中、低頻段,攻擊者破壞水印時(shí),不可避免地會(huì)引起圖像質(zhì)量的嚴(yán)重下降,而且一般的圖像處理也不會(huì)改變這部分?jǐn)?shù)據(jù)。再者,由于JPEG、MPEG等壓縮算法的核心是在DCT變換域上進(jìn)行量化,故通過巧妙的融合水印和量化過程,可以使水

17、印抵御一定的有損壓縮。此外,DCT變換域系數(shù)的統(tǒng)計(jì)分布有比較好的數(shù)學(xué)模型,可以從理論上估計(jì)水印的信息量?;贒CT變換的數(shù)字水印在逆變換時(shí)會(huì)散布在整個(gè)圖像空間中,故水印不像空間域技術(shù)那樣易受到裁剪、低通濾波等攻擊的影響,具有魯棒性高、隱蔽性好的特點(diǎn)。4.1.1 準(zhǔn)備工作首先要讀入一幅待嵌入的原始圖片I=f1(x,y)以及一幅水印圖M=f2(x,y)。由于DCT法需要給原圖像進(jìn)行8*8分塊,所以為了便于將一個(gè)二進(jìn)制序列作為水印放入DCT,最好讓原圖像的行x與列y象素?cái)?shù)可以被8整除。如果不能整除需要將x/8與y/8的結(jié)果進(jìn)行取整,其取法遵循向下取整原則。在整除的情況下,對(duì)于水印圖像,它的行寬不得大

18、于x/8列長(zhǎng)不得大于y/8。取x和y均為256即256*256象素,水印圖為32*32象素。由此可以看到,整個(gè)原圖可以劃分為x*y/64=1024個(gè)變換塊如圖4.1。圖4.1 劃分變換塊每個(gè)塊的位置計(jì)為(m,n),那么所取的水印圖像的每一個(gè)象素點(diǎn)可以對(duì)應(yīng)一個(gè)變換塊進(jìn)行嵌入。4.1.2 選取8*8變換塊下面將原圖像的每個(gè)8*8塊分別作DCT變換,在此之前我們需要知道每個(gè)塊中所包含象素點(diǎn)的坐標(biāo)。通過圖4.1我們不難總結(jié)出規(guī)律,即:所?。╩,n)快中的左上點(diǎn)的行坐標(biāo)為x=(m-1)*8+1而左上點(diǎn)的列坐標(biāo)為y=(n-1)*8+1如圖4.2。圖4.2 像素點(diǎn)坐標(biāo)由此又可推出該塊中所有象素點(diǎn)的坐標(biāo),用M

19、ATLAB的語句來表示可以寫成block_dct1=I(x:x+block-1,y:y+block-1),這樣block_dct1矩陣用來表示該塊所有象素的值。之后對(duì)該塊進(jìn)行DCT變換,從而將空域圖像8*8塊矩陣變?yōu)轭l域8*8塊矩陣。4.1.3 邊界自適應(yīng)所謂邊界自適應(yīng),也就是需要根據(jù)圖像塊的邊緣信息密度自適應(yīng)地調(diào)整嵌入強(qiáng)度,由于邊界處的高頻分量較高,相對(duì)低頻分量不明顯,所以在地頻分量中嵌入的水印圖像的強(qiáng)度應(yīng)當(dāng)比較大。同理在非邊界區(qū)域嵌入的強(qiáng)度應(yīng)當(dāng)比較小。在這里我們?nèi)〕A緼lpha1=0.02作為非邊界區(qū)的嵌入強(qiáng)度;Alpha2=0.1作為邊界區(qū)的嵌入強(qiáng)度。關(guān)于區(qū)圖像邊界的問題可以通過MATL

20、AB函數(shù)edge實(shí)現(xiàn),這里另BW=edge(I,'prewitt')其中BW表示邊緣圖像的矩陣。要說明的是,首先邊緣圖像是二值圖像,白色處表示原圖像的邊界。其次,edge函數(shù)中的I必須是灰度圖像,如果I取的是彩色圖像的話,就必須先將彩色圖像變成灰度圖像再取邊界。4.1.4 DCT變換與嵌入首先,要檢測(cè)變換塊是否含有邊界,可以將邊界圖像與原圖相對(duì)應(yīng)位置的象素塊提出,將塊中所有象素的值(只含0,1)求和的方法檢測(cè)它是否含有邊界,不妨設(shè)置一個(gè)閾值等于3,即該塊中含有三個(gè)或以上的邊界點(diǎn)就認(rèn)為該塊含有較多的邊界信息,通過邊界自適應(yīng)的原理應(yīng)當(dāng)將較大的強(qiáng)度值嵌入。然后,需要將每一個(gè)8*8塊進(jìn)

21、行DCT變換,并將變換后的直流分量與強(qiáng)度值和水印圖像相應(yīng)點(diǎn)象素的信息相乘。在這里需要指出的是為了保證提取算法的簡(jiǎn)單可以令水印圖像象素的值減一個(gè)比較小的值。這一步用MATLAB來實(shí)現(xiàn)可以用block_dct1=dct2(block_dct1)分別將8*8塊進(jìn)行二維DCT變換,block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*(mark(m,n)-0.1))其中的mark表示水印圖像的象素值,將它嵌入塊的直流項(xiàng)中。4.1.5 恢復(fù)空域?qū)⑶度牒蟮膲K分別進(jìn)行反DCT變換,并且按順序存回I矩陣,這時(shí)的I就是嵌入水印后的圖像。4.2 嵌入算法擴(kuò)展上面的方法一般只能對(duì)一幅灰度

22、圖像嵌入一幅二值圖像,在下面將進(jìn)行彩色圖像嵌入三幅二值圖像或一幅8色彩色圖像的方法。4.2.1 RGB彩色圖像三個(gè)矩陣的劃分由于所有的RGB彩色圖像都是由紅綠藍(lán)三個(gè)顏色組成的,在存儲(chǔ)中這三個(gè)圖像也是分為3個(gè)矩陣存儲(chǔ)的,那么我們就可以將每個(gè)矩陣視為一個(gè)灰度,并且每個(gè)灰度圖像中都可以分別潛入一個(gè)水印圖像。1、彩色圖像的邊緣圖像由于edge函數(shù)中的I必須是灰度圖像,所以要想用GRAY=rgb2gray(I)語句將彩色圖像變成灰度圖像,再將灰度圖像GRAY取其邊界圖像。2、彩色圖像分層在MATLAB中,將彩色RGB圖像讀入I后,不同于灰度圖像,I矩陣是一個(gè)三維矩陣它可以表示為I(a,b,c)其中當(dāng)c=

23、1時(shí),I(a,b,1)表示彩色圖像中紅色分量的矩陣,同樣的,I(a,b,2)、I(a,b,3)分別表示彩色圖像中綠色和藍(lán)色分量的矩陣。在分層嵌入的時(shí)候,表示原圖像矩陣就需要加入第三維分量c的值,否則MATLAB會(huì)默認(rèn)c=1。這里需要注意的是,在新圖像的生成的時(shí)候,要將R、G、B三個(gè)矩陣全部存入輸出的矩陣,否則會(huì)缺色。4.2.2 八色彩色水印 類似于上面的原理,作為水印的彩色圖像也分為R,G,B三層,每層可以作為一幅水印圖像分別嵌入原圖像的矩陣中。提取的時(shí)候只要將提取出的三個(gè)水印圖像存入一個(gè)三維矩陣即使一幅彩色圖像。但是這里要注意的是所用的水印圖像的R、G、B分量分別只有0、1兩個(gè)值。所以如果使

24、用的彩色圖像不當(dāng)將會(huì)影響嵌入效果,甚至無法提取。4.3 水印的提取這里的水印提取方法可以看作是嵌入的反變換,由于在頻域的8*8塊的直流量中乘上了與水印信息有關(guān)的系數(shù),那么同樣我們可以通過原圖像與水印圖像8*8塊直流分量的值相除得到的商即是與水印圖像相關(guān)的值,由于嵌入時(shí)水印圖像值只含0、1,而且我們?cè)谶@個(gè)值得后面又減了一個(gè)小的常數(shù),因此將除得的商減去1記為cc,這樣就可以在嵌入的水印值為0的時(shí)候cc<0,反之在嵌入的水印值為1的時(shí)候cc>0。這樣就可以繪制出水印圖像。4.4 仿真程序%定義常量size=256; %圖像大?。?56*256block=8; %塊大?。?*8%決定了水印

25、圖片不大于32*32blockno=size/block; %每行塊的個(gè)數(shù)LENGTH=size*size/64; %總塊的個(gè)數(shù)1024Alpha1=0.03; %非邊界處的強(qiáng)度因子Alpha2=0.1; %邊界處的強(qiáng)度因子T1=3; %域值為三個(gè)邊界點(diǎn)I=zeros(size,size); %原始圖像BW=zeros(size,size); %原始圖像的邊緣圖block_dct1=zeros(block,block);mark=imread('D:水印圖','bmp'); %沈陽理工大學(xué)字樣彩色水印圖mark1=logical(mark(:,:,1);mark

26、2=logical(mark(:,:,2);mark3=logical(mark(:,:,3);figure(1)subplot(2,2,1);imshow(mark);title('水印圖像');%顯示原圖subplot(2,2,2);I=imread('D:原始圖','bmp'); %讀入彩色圖像imshow(I);title('原始圖像:I');%顯示prewitt為算子的邊緣圖GRAY=rgb2gray(I); %變灰度要用三位數(shù),即彩色圖片BW=edge(GRAY,'prewitt'); %取邊界,用于邊

27、界自適應(yīng)subplot(2,2,3);imshow(BW);title('原始圖像的邊緣');%嵌入水印for m=1:blockno; %到第(m,n)個(gè)塊 for n=1:blockno; x=(m-1)*block+1; %該塊的起始像素 y=(n-1)*block+1; block_dct1=I(x:x+block-1,y:y+block-1); %取該塊所有像素 block_dct1=dct2(block_dct1); %變換 %第二維 block_dct2=I(x:x+block-1,y:y+block-1,2); %取該塊所有像素 block_dct2=dct2(

28、block_dct2); %變換 %第三維 block_dct3=I(x:x+block-1,y:y+block-1,3); %取該塊所有像素 block_dct3=dct2(block_dct3); %變換 BW_8_8=BW(x:x+block-1,y:y+block-1); %取邊緣的對(duì)應(yīng)塊像素 if m<=1|n<=1;%m或n小于等于1時(shí), T=0; else T=sum(BW_8_8); %列取和 T=sum(T); %對(duì)整個(gè)BW_8_8中的數(shù)字取和 %取和 end if T>T1; %如果改為<則意味著高頻區(qū)嵌入了低能量,低頻區(qū)嵌入了高能量。所以在低頻區(qū)嵌

29、入的過高能量會(huì)是不該看出的水印顯示出來 %因此這里表示著邊緣自適應(yīng)性 Alpha=Alpha2; %0.1 else Alpha=Alpha1; %0.03 end block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*(mark1(m,n)-1); %對(duì)直流進(jìn)行嵌入 block_dct2(1,1)=block_dct2(1,1)*(1+Alpha*(mark2(m,n)-1); %第二層 block_dct3(1,1)=block_dct3(1,1)*(1+Alpha*(mark3(m,n)-1); %第三層 block_dct1=idct2(block_dct1

30、); %變回空域 block_dct2=idct2(block_dct2); %第二層 block_dct3=idct2(block_dct3); %第三層 I(x:x+block-1,y:y+block-1)=block_dct1; %貼回原圖像 I(x:x+block-1,y:y+block-1,2)=block_dct2; %第二層 I(x:x+block-1,y:y+block-1,3)=block_dct3; %第三層 endend%顯示嵌入水印后的圖像subplot(2,2,4);imshow(I);title('嵌入水印后的圖像');imwrite(I,'

31、D:輸出圖.bmp','bmp');figure(2);subplot(2,2,1);imshow(mark(:,:,1);title('原水印的第一層');subplot(2,2,2);imshow(mark(:,:,2);title('原水印的第二層');subplot(2,2,3);imshow(mark(:,:,3);title('原水印的第三層');imwrite(I,'D:壓縮圖.jpg','jpg','quality',90); %壓縮 %通過原圖片對(duì)比提取水印

32、I=imread('D:原始圖.bmp','bmp');J=imread('D:輸出圖.bmp','bmp');K=zeros(32,32,3); %水印圖片為32*32for q=1:blockno; for p=1:blockno; x=(p-1)*block+1; y=(q-1)*block+1; BLOCK1=I(x:x+block-1,y:y+block-1); %取無水印圖的塊 BLOCK2=J(x:x+block-1,y:y+block-1); %取帶水印圖的塊 BLOCK1=dct2(BLOCK1); BLOCK2

33、=dct2(BLOCK2); a=BLOCK2(1,1)/BLOCK1(1,1)-1; %第二層 BLOCK12=I(x:x+block-1,y:y+block-1,2); BLOCK22=J(x:x+block-1,y:y+block-1,2); BLOCK12=dct2(BLOCK12); BLOCK22=dct2(BLOCK22); b=BLOCK22(1,1)/BLOCK12(1,1)-1; %第三層 BLOCK13=I(x:x+block-1,y:y+block-1,3); BLOCK23=J(x:x+block-1,y:y+block-1,3); BLOCK13=dct2(BLOC

34、K13); BLOCK23=dct2(BLOCK23); c=BLOCK23(1,1)/BLOCK13(1,1)-1; if a<0 W(p,q)=0; %恢復(fù)水印圖像 else W(p,q)=1; end if b<0 W2(p,q)=0; else W2(p,q)=1; end if c<0 W3(p,q)=0; else W3(p,q)=1; end endendfigure(3);subplot(2,2,1);imshow(W);title('從第一層提取的水印(紅R)'); %0表示黑色subplot(2,2,2);imshow(W2);title(

35、'從第二層提取的水?。ňGG)');subplot(2,2,3);imshow(W3);title('從第三層提取的水?。ㄋ{(lán)B)');K(:,:,1)=W;K(:,:,2)=W2;K(:,:,3)=W3;subplot(2,2,4);imshow(K);title('合并的彩圖');%檢測(cè)壓縮后的水印圖像J=imread('D:壓縮圖.jpg','jpg');for q=1:blockno; for p=1:blockno; x=(p-1)*block+1; y=(q-1)*block+1; BLOCK1=I(x:x

36、+block-1,y:y+block-1); %取無水印圖的塊 BLOCK2=J(x:x+block-1,y:y+block-1); %取帶水印圖的塊 BLOCK1=dct2(BLOCK1); BLOCK2=dct2(BLOCK2); a=BLOCK2(1,1)/BLOCK1(1,1)-1; %第二層 BLOCK12=I(x:x+block-1,y:y+block-1,2); BLOCK22=J(x:x+block-1,y:y+block-1,2); BLOCK12=dct2(BLOCK12); BLOCK22=dct2(BLOCK22); b=BLOCK22(1,1)/BLOCK12(1,1

37、)-1; %第三層 BLOCK13=I(x:x+block-1,y:y+block-1,3); BLOCK23=J(x:x+block-1,y:y+block-1,3); BLOCK13=dct2(BLOCK13); BLOCK23=dct2(BLOCK23); c=BLOCK23(1,1)/BLOCK13(1,1)-1; if a<0 W(p,q)=0; else W(p,q)=1; end if b<0 W2(p,q)=0; else W2(p,q)=1; end if c<0 W3(p,q)=0; else W3(p,q)=1; end endendK(:,:,1)=W;K(:,:,2)=W2;K(:,:,3)=W3;figu

溫馨提示

  • 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)論