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

下載本文檔

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

文檔簡介

1、 PAGE20 / NUMPAGES22摘 要數(shù)字水印(DigitalWatermark)技術(shù)是指用信號處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測器或閱讀器才能提取。數(shù)字水印是信息隱藏技術(shù)的一個(gè)重要研究方向。隨著數(shù)字水印技術(shù)的發(fā)展,數(shù)字水印的應(yīng)用領(lǐng)域也得到了擴(kuò)展,數(shù)字水印的基本應(yīng)用領(lǐng)域是保護(hù)、隱藏標(biāo)識、認(rèn)證和安全不可見通信。 當(dāng)數(shù)字水印應(yīng)用于保護(hù)時(shí),潛在的應(yīng)用市場在于電子商務(wù)、在線或離線地分發(fā)多媒體容以與大規(guī)模的廣播服務(wù)。數(shù)字水印用于隱藏標(biāo)識時(shí),可在醫(yī)學(xué)、制圖、數(shù)字成像、數(shù)字圖像監(jiān)控、多媒體索引和基于容的檢索等領(lǐng)域得到應(yīng)用。數(shù)字水印的認(rèn)證方面主要

2、ID卡、信用卡、ATM卡等上面數(shù)字水印的安全不可見通信將在國防和情報(bào)部門得到廣泛的應(yīng)用。本文主要是根據(jù)所學(xué)的數(shù)字圖象處理知識,在MATLAB環(huán)境下,通過系統(tǒng)編程的方式,建立并實(shí)現(xiàn)基于DCT域的數(shù)字水印加密系統(tǒng)。該系統(tǒng)主要包含數(shù)字水印的嵌入與提取,仿真結(jié)果表明,數(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.1DCT法43.2.2 其他方法43.3

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變換與嵌入74.1.5 恢復(fù)空域84.2 嵌入算法擴(kuò)展84.2.1RGB彩色圖像三個(gè)矩陣的劃分84.2.2八色彩色水印84.3 水印的提取94.4 仿真程序95 結(jié)果分析14結(jié)束語16參考文獻(xiàn)171 課程設(shè)計(jì)目的數(shù)字水印技術(shù)是用信號處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測器或閱讀器才能提取。數(shù)字水印是信息隱藏技術(shù)

4、的一個(gè)重要研究方向。在數(shù)字水印技術(shù)中,水印的數(shù)據(jù)量和魯棒性構(gòu)成了一對基本矛盾。從主觀上講,理想的水印算法應(yīng)該既能隱藏大量數(shù)據(jù),又可以抗各種信道噪聲和信號變形。然而在實(shí)際中,這兩個(gè)指標(biāo)往往不能同時(shí)實(shí)現(xiàn),不過這并不會影響數(shù)字水印技術(shù)的應(yīng)用,因?yàn)閷?shí)際應(yīng)用一般只偏重其中的一個(gè)方面。如果是為了隱蔽通信,數(shù)據(jù)量顯然是最重要的,由于通信方式極為隱蔽,遭遇敵方篡改攻擊的可能性很小,因而對魯棒性要求不高。但對保證數(shù)據(jù)安全來說,情況恰恰相反,各種的數(shù)據(jù)隨時(shí)面臨著被盜取和篡改的危險(xiǎn),所以魯棒性是十分重要的,此時(shí),隱藏?cái)?shù)據(jù)量的要求居于次要地位。數(shù)字水印技術(shù)是通過一定的算法將一些標(biāo)志性信息直接嵌到多媒體容當(dāng)中,但不影響

5、原容的價(jià)值和使用,并且不能被人的知覺系統(tǒng)覺察或注意到。水印信息可以是作者的序列號、公司標(biāo)志、有特殊意義的文本等,可用來識別文件、圖像或音樂制品的來源、版本、原作者、擁有者、發(fā)行人、合法使用人對數(shù)字產(chǎn)品的擁有權(quán)。與加密技術(shù)不同,數(shù)字水印技術(shù)并不能阻止盜版活動的發(fā)生,但它可以判別對象是否受到保護(hù),監(jiān)視被保護(hù)數(shù)據(jù)的傳播、真?zhèn)舞b別和非法拷貝、解決糾紛并為法庭提供證據(jù)??偟膩碚f,數(shù)字水印可以攜帶有保護(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)水印的嵌入和提取,并對算法的不可見性、魯棒性進(jìn)

6、行測試。具體要求: (1)熟悉和掌握MATLAB程序設(shè)計(jì)方法; (2)學(xué)習(xí)和熟悉MATLAB圖像處理工具箱;(3)學(xué)會運(yùn)用MATLAB工具箱對圖像進(jìn)行處理和分析;(4)能對圖像jpg格式進(jìn)行打開、保存、另存、退出等功能操作;(5)利用所學(xué)數(shù)字圖像處理技術(shù)知識、MATLAB軟件對圖像進(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è)基本方面:水印的生成、水印的嵌入和

7、水印的提取或檢測。數(shù)字水印的嵌入和提取的一般過程基本框架如圖3.1,圖3.2所示。水印生成算法(G)數(shù)字水印(W)原始載體數(shù)據(jù)(J)水印嵌入算法(E)私鑰/公鑰(K)嵌入水印后的數(shù)據(jù)(IW)圖3.1 水印嵌入的一般過程基本框架待檢測數(shù)據(jù)(IW)水印檢測算法(D)私鑰/公鑰(K)估計(jì)水?。╓)/相似度檢測(Sim)數(shù)字水印(W)/原始數(shù)據(jù)(I)圖3.2 水印檢測的一般過程基本框架3.2 算法分類根據(jù)水印實(shí)現(xiàn)方法不同,數(shù)字水印可分為空(時(shí))域數(shù)字水印和頻域數(shù)字水印??沼驍?shù)字水印是直接在信號空間上疊加水印信號,而頻域法加入數(shù)字水印的原理是首先將原始信號(語音一維信號、圖像二維信號)變換到頻域,常用的

8、變換一般有DWT、DCT、DFT、WP和分形。然后,對加入了水印信息的信號進(jìn)行頻域反變換(IDWT、IDCT、DFT、WP),得到含有水印信息的信號。頻域法檢測水印的原理是將原始信號與待檢測信號同時(shí)進(jìn)行變換域變換,比較兩者的區(qū)別,進(jìn)行嵌入水印的逆運(yùn)算,得出水印信息。如果是可讀的水印,那么就此結(jié)束,如果是不可讀水印,如高斯噪聲,就將得出的水印與已知水印作比較,由相關(guān)性判斷,待檢測信號含不含水印,故水印的檢測有兩個(gè)結(jié)束點(diǎn)。頻域法有以下優(yōu)點(diǎn):嵌入的水印信號能量可以分布到空域的所有像素上,有利于保證水印的不可見性;視覺系統(tǒng)(HVS)的某些特性(如頻率的掩蔽特性)可以更方便地結(jié)合到水印編碼過程中;頻域法

9、可與國際數(shù)據(jù)壓縮標(biāo)準(zhǔn)兼容,從而實(shí)現(xiàn)在壓縮域(compressed domain)的水印編碼。3.2.1 DCT法對原始信號做DCT的算法:Cox和Piva等人提出的DCT技術(shù)的經(jīng)典之作。Cox利用隨機(jī)數(shù)發(fā)生器產(chǎn)生標(biāo)準(zhǔn)正態(tài)序列作為水印信息對圖像進(jìn)行整體DCT變換后,選取除去DC系數(shù)之外部分較低頻率系數(shù)疊加水印信息;Piva則修改整幅圖像的中頻部分。對原始信號分塊后,再作DCT的算法:Hsu和Wu把圖像進(jìn)行8*8分塊,將一個(gè)二進(jìn)制序列作為水印放入DCT的中頻區(qū);有些學(xué)者則計(jì)算整個(gè)圖像的DCT,把一個(gè)實(shí)數(shù)序列嵌入DCT的中頻系數(shù)上。選擇中頻區(qū)的好處是一方面盡量減少嵌入信息對圖像主觀視覺的影響;同時(shí),

10、盡量避免有損壓縮對水印信息可能帶來的損失。還有一種DCT方法就是把水印信息嵌入到高頻系數(shù)上,但是采用這種方法,抗壓縮性非常差。3.2.2 其他方法其它變換域還有Fourier-mellin域、Fourier變換域、分形或WP(Wavelet Package)等。以上的變換域算法計(jì)算量都非常大,編程實(shí)現(xiàn)這些變換和逆變換也需要好好下一番功夫,由此造成研究人員把大量的時(shí)間和精力浪費(fèi)在與水印算法研究無關(guān)的問題上。33 實(shí)際需要考慮的問題在數(shù)字水印技術(shù)中,水印的數(shù)據(jù)量和魯棒性構(gòu)成了一對基本矛盾。從主觀上講,理想的水印算法應(yīng)該既能隱藏大量數(shù)據(jù),又可以抗各種信道噪聲和信號變形。然而在實(shí)際中,這兩個(gè)指標(biāo)往往不

11、能同時(shí)實(shí)現(xiàn),不過這并不會影響數(shù)字水印技術(shù)的應(yīng)用,因?yàn)閷?shí)際應(yīng)用一般只偏重其中的一個(gè)方面。如果是為了隱蔽通信,數(shù)據(jù)量顯然是最重要的,由于通信方式極為隱蔽,遭遇敵方篡改攻擊的可能性很小,因而對魯棒性要求不高。但對保證數(shù)據(jù)安全來說,情況恰恰相反,各種的數(shù)據(jù)隨時(shí)面臨著被盜取和篡改的危險(xiǎn),所以魯棒性是十分重要的,此時(shí),隱藏?cái)?shù)據(jù)量的要求居于次要地位。3.3.1不可見性對于以模擬方式存儲和分發(fā)的信息(如電視節(jié)目),或是以物理形式存儲的信息(如報(bào)刊、雜志),用可見的標(biāo)志就足以表明其所有權(quán)。但在數(shù)字方式下,標(biāo)志信息極易被修改或擦除。因此應(yīng)根據(jù)多媒體信息的類型和幾何特性,利用用戶提供的密鑰將水印隱藏到一系列隨機(jī)產(chǎn)生

12、的位置中,使人無法察覺。圖3.3左側(cè)為原始圖像,右側(cè)為嵌入水印后的圖像。圖3.3 原始圖像與嵌入水印后的圖像對比3.3.2 魯棒性水印必須對一般的信號處理操作(如濾波、平滑、增強(qiáng)、有失真壓縮等)、刪除攻擊、迷惑攻擊等具有魯棒性。除非對數(shù)字水印具有足夠的先驗(yàn)知識,任何破壞和消除水印的企圖都將嚴(yán)重破壞多媒體信息的質(zhì)量。3.3.3 水印容量嵌入的水印信息必須足以表示多媒體容的創(chuàng)建者或所有者的標(biāo)志信息,或是購買者的序列號。這樣在發(fā)生糾紛時(shí),創(chuàng)建者或所有者的信息用于標(biāo)示數(shù)據(jù)的所有者,而序列號用于標(biāo)示違反協(xié)議而為盜版提供多媒體數(shù)據(jù)的用戶。數(shù)字水印在多媒體信息安全中的另一個(gè)重要應(yīng)用就是容的真實(shí)性鑒定(即認(rèn)證

13、)。當(dāng)多媒體容發(fā)生改變時(shí),具有較強(qiáng)的敏感性的易損水?。‵ragile watermarking)會隨之發(fā)生一定程度的改變,從而可以鑒定原始數(shù)據(jù)是否被篡改。3.3.4 安全性水印的安全性要求未授權(quán)者不能發(fā)現(xiàn)數(shù)字作品中含有水印信息?;蛘咚惴ò踩詢H僅依賴于密鑰而不依賴于算法的性。因此在沒有密鑰的情況下,未授權(quán)者即使知道含有水印信息和知道水印算法,也不能提取出水印信息或者破壞水印信息。另外算法還應(yīng)該能夠抵抗合謀攻擊。由于水印特性的要求對應(yīng)用的依賴型很強(qiáng),恰當(dāng)?shù)脑u價(jià)準(zhǔn)則和具體的應(yīng)用有關(guān)。4 基于DCT變換仿真4.1 算法原理離散余弦變換(DisereteCosineTransform)簡稱DCT變換。

14、離散余弦變換是傅立葉變換的一種特殊情況,在傅立葉級數(shù)展開式中,如果被展開的函數(shù)是實(shí)偶函數(shù),那么其傅立葉級數(shù)中只包含余弦項(xiàng),再將其離散化可導(dǎo)出離散余弦變換,因此余弦變換與傅里葉變換一樣有明確的物理意義,DCT變換避免了傅里葉變換中的復(fù)數(shù)運(yùn)算,它是基于實(shí)數(shù)的正交變換。DCT變換域數(shù)字水印算法的基本原理是將空域圖像變成頻域,然后將水印信息嵌入其直流項(xiàng)之中,最后將頻域轉(zhuǎn)換成空域以完成圖片的水印的嵌入。其主要思想是:在DCT變換域上選擇中、低頻系數(shù)疊加水印信息,因?yàn)槿搜鄣母杏X主要集中在中、低頻段,攻擊者破壞水印時(shí),不可避免地會引起圖像質(zhì)量的嚴(yán)重下降,而且一般的圖像處理也不會改變這部分?jǐn)?shù)據(jù)。再者,由于JP

15、EG、MPEG等壓縮算法的核心是在DCT變換域上進(jìn)行量化,故通過巧妙的融合水印和量化過程,可以使水印抵御一定的有損壓縮。此外,DCT變換域系數(shù)的統(tǒng)計(jì)分布有比較好的數(shù)學(xué)模型,可以從理論上估計(jì)水印的信息量?;贒CT變換的數(shù)字水印在逆變換時(shí)會散布在整個(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整除。如果不能整除需要將

16、x/8與y/8的結(jié)果進(jìn)行取整,其取法遵循向下取整原則。在整除的情況下,對于水印圖像,它的行寬不得大于x/8列長不得大于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)可以對應(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)的列坐

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

18、非邊界區(qū)的嵌入強(qiáng)度;Alpha2=0.1作為邊界區(qū)的嵌入強(qiáng)度。關(guān)于區(qū)圖像邊界的問題可以通過MATLAB函數(shù)edge實(shí)現(xiàn),這里另BW=edge(I,prewitt)其中BW表示邊緣圖像的矩陣。要說明的是,首先邊緣圖像是二值圖像,白色處表示原圖像的邊界。其次,edge函數(shù)中的I必須是灰度圖像,如果I取的是彩色圖像的話,就必須先將彩色圖像變成灰度圖像再取邊界。4.1.4 DCT變換與嵌入首先,要檢測變換塊是否含有邊界,可以將邊界圖像與原圖相對應(yīng)位置的象素塊提出,將塊中所有象素的值(只含0,1)求和的方法檢測它是否含有邊界,不妨設(shè)置一個(gè)閾值等于3,即該塊中含有三個(gè)或以上的邊界點(diǎn)就認(rèn)為該塊含有較多的邊界

19、信息,通過邊界自適應(yīng)的原理應(yīng)當(dāng)將較大的強(qiáng)度值嵌入。然后,需要將每一個(gè)8*8塊進(jìn)行DCT變換,并將變換后的直流分量與強(qiáng)度值和水印圖像相應(yīng)點(diǎ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矩陣,

20、這時(shí)的I就是嵌入水印后的圖像。4.2 嵌入算法擴(kuò)展上面的方法一般只能對一幅灰度圖像嵌入一幅二值圖像,在下面將進(jìn)行彩色圖像嵌入三幅二值圖像或一幅8色彩色圖像的方法。4.2.1 RGB彩色圖像三個(gè)矩陣的劃分由于所有的RGB彩色圖像都是由紅綠藍(lán)三個(gè)顏色組成的,在存儲中這三個(gè)圖像也是分為3個(gè)矩陣存儲的,那么我們就可以將每個(gè)矩陣視為一個(gè)灰度,并且每個(gè)灰度圖像中都可以分別潛入一個(gè)水印圖像。1、彩色圖像的邊緣圖像由于edge函數(shù)中的I必須是灰度圖像,所以要想用GRAY=rgb2gray(I)語句將彩色圖像變成灰度圖像,再將灰度圖像GRAY取其邊界圖像。2、彩色圖像分層在MATLAB中,將彩色RGB圖像讀入I

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

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

23、大?。?*8%決定了水印圖片不大于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);mark2=logical(

24、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); %取邊界,用于邊界自適應(yīng)subplot(2,2,3);imshow(BW);title(原始圖像的邊緣);%嵌入水印for m=1:bl

25、ockno; %到第(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(block_dct2); %變換%第三維 block_dct3=I(x:x+block-1,y:y+block-1,3); %取該塊所有像素 b

26、lock_dct3=dct2(block_dct3); %變換 BW_8_8=BW(x:x+block-1,y:y+block-1); %取邊緣的對應(yīng)塊像素if m=1|nT1; %如果改為則意味著高頻區(qū)嵌入了低能量,低頻區(qū)嵌入了高能量。所以在低頻區(qū)嵌入的過高能量會是不該看出的水印顯示出來%因此這里表示著邊緣自適應(yīng)性 Alpha=Alpha2; %0.1else Alpha=Alpha1; %0.03end block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*(mark1(m,n)-1); %對直流進(jìn)行嵌入 block_dct2(1,1)=block_dct2(1

27、,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); %變回空域 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+

28、block-1,y:y+block-1,3)=block_dct3; %第三層endend%顯示嵌入水印后的圖像subplot(2,2,4);imshow(I);title(嵌入水印后的圖像);imwrite(I,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,j

29、pg,quality,90); %壓縮 %通過原圖片對比提取水印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=dct2(BLO

30、CK2); 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(BLOCK13); BLOCK

31、23=dct2(BLOCK23); c=BLOCK23(1,1)/BLOCK13(1,1)-1;if a0 W(p,q)=0; %恢復(fù)水印圖像else W(p,q)=1;endif b0 W2(p,q)=0;else W2(p,q)=1;endif c0 W3(p,q)=0;else W3(p,q)=1;endendendfigure(3);subplot(2,2,1);imshow(W);title(從第一層提取的水?。tR)); %0表示黑色subplot(2,2,2);imshow(W2);title(從第二層提取的水?。ňGG));subplot(2,2,3);imshow(W3);ti

32、tle(從第三層提取的水?。ㄋ{(lán)B));K(:,:,1)=W;K(:,:,2)=W2;K(:,:,3)=W3;subplot(2,2,4);imshow(K);title(合并的彩圖);%檢測壓縮后的水印圖像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+block-1,y:y+block-1); %取無水印圖的塊 BLOCK2=J(x:x+block-1,y:y+block-1); %取帶水印圖的塊 BLOCK1=dct2(BLOCK1

33、); 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)-1;%第三層 BLOCK13=I(x:x+block-1,y:y+block-1,3); BLOCK23=J(x:x+block-1,y:y+block-1,3); BLOCK13=dc

34、t2(BLOCK13); BLOCK23=dct2(BLOCK23); c=BLOCK23(1,1)/BLOCK13(1,1)-1;if a0 W(p,q)=0;else W(p,q)=1;endif b0 W2(p,q)=0;else W2(p,q)=1;endif c0 W3(p,q)=0;else W3(p,q)=1;endendendK(:,:,1)=W;K(:,:,2)=W2;K(:,:,3)=W3;figure(4);imshow(K);title(90壓縮的提取);5 結(jié)果分析圖5.1 原始圖像與嵌入水印后的圖像對比原始圖像與嵌入水印后的圖像僅有微小的差別,人眼基本分辨不出兩圖像

35、的任何不同。這說明DCT域水印算法具有較好的不可見性,基本不影響視覺質(zhì)量,同時(shí)也很好的達(dá)到了透明性的要求。圖5.2 通過與原圖片對比提取的水印圖5.3 分層提取的水印圖像在分層提取水印圖像時(shí),出現(xiàn)了部分誤差,部分圖像像素點(diǎn)出現(xiàn)了消失,組成彩色水印還原水印圖像時(shí),已經(jīng)不能還原出原本彩色圖像。圖5.4 檢測壓縮后的水印圖像結(jié)果由以上結(jié)果可以看出,該方法在水印嵌入和提取中方法比較簡單。這個(gè)方法對于壓縮攻擊的抗性很低,可以說是脆弱的,很明顯在90質(zhì)量的壓縮下已經(jīng)很難分辨水印容。實(shí)驗(yàn)結(jié)果在某方面驗(yàn)證了該算法的有效性、可靠性、抗攻擊性、魯棒性和不可見性,能夠?yàn)閿?shù)字媒體信息在防偽、防篡改、認(rèn)證、保障數(shù)據(jù)安全

36、和完整性等方面提供有效的技術(shù)保障。結(jié)束語數(shù)字水印在標(biāo)識、隱藏標(biāo)識和篡改提示、數(shù)據(jù)防偽上具有不可替代的作用,它將在商業(yè)、金融、軍事和個(gè)人消費(fèi)上帶來巨大的商業(yè)利潤。自1995年以來,該領(lǐng)域的研究工作已經(jīng)取得了巨大的進(jìn)展。隨著數(shù)字水印技術(shù)的日趨成熟,數(shù)字水印技術(shù)將在電子商務(wù)、視頻點(diǎn)播、遠(yuǎn)程教學(xué)和遠(yuǎn)程培訓(xùn)中發(fā)揮越來越大的作用。離散余弦變換在圖像處理中的作用非常重要,在本設(shè)計(jì)中,運(yùn)用離散余弦變換嵌入水印。本文提出的水印算法的魯棒性雖然不與一些需要原圖的水印算法,但是相比而言不需要未加水印的原始圖像,這種算法可以抵抗一些常見的攻擊方法,如:旋轉(zhuǎn)、剪切、低通濾波等等。實(shí)驗(yàn)證明此算法有較好的魯棒性。離散余弦變

37、換法具有實(shí)用價(jià)值,但還是具有一定的局限性的。數(shù)字水印的方法有很多,但是每一種單獨(dú)的方法都無法禁得起多種方法的圖像處理,只有組合不同的方法才能達(dá)到更好的效果。隨著網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的快速發(fā)展,多媒體信息的交流己成為人們生活中不可缺少的一部分。因此,如何保護(hù)多媒體信息的安全成為國際上研究的熱門話題。數(shù)字水印技術(shù)作為國際學(xué)術(shù)界新興的前沿研究領(lǐng)域在數(shù)字多媒體的保護(hù)方面發(fā)揮著重要作用。我相信,在未來的日子里,對水印技術(shù)理論和應(yīng)用的研究一定會出現(xiàn)更多更好的工作。參考文獻(xiàn)1 阮秋琦. 數(shù)字圖像處理學(xué)M. :電子工業(yè),2001.2 龔聲蓉,純平,王強(qiáng)等. 數(shù)字圖像處理與分析M. :清華大學(xué),2006.3 賈永紅. 計(jì)算機(jī)圖像處理與分析M. :大學(xué),2001.4 桂明. 應(yīng)用MATLAB語言處理數(shù)字信號與圖像處理M. :科學(xué),2000.5 夏德深,傅德勝. 計(jì)算機(jī)圖像處理與應(yīng)用M. :東南大學(xué),2004.6 敏. 計(jì)算機(jī)圖像

溫馨提示

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

最新文檔

評論

0/150

提交評論