《物聯(lián)網(wǎng)信息安全安全》實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
《物聯(lián)網(wǎng)信息安全安全》實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
《物聯(lián)網(wǎng)信息安全安全》實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
《物聯(lián)網(wǎng)信息安全安全》實(shí)驗(yàn)指導(dǎo)書_第4頁(yè)
《物聯(lián)網(wǎng)信息安全安全》實(shí)驗(yàn)指導(dǎo)書_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、PAGE- 28 -實(shí)驗(yàn)一 圖像輸入與輸出基本操作(2學(xué)時(shí)) 實(shí)驗(yàn)二 基于DCT域的數(shù)字水印技術(shù)(2學(xué)時(shí)) 綜合性實(shí)驗(yàn) 基于傅立葉域變換的數(shù)字水印技術(shù)(4學(xué)時(shí)) 實(shí)驗(yàn)前預(yù)備知識(shí):數(shù)字水印技術(shù)是利用數(shù)字產(chǎn)品普遍存在的冗余數(shù)據(jù)與隨機(jī)性,將水印信息嵌入在數(shù)字產(chǎn)品本身中,從而起到保護(hù)數(shù)字產(chǎn)品版權(quán)或者完整性的一種技術(shù)。現(xiàn)在學(xué)術(shù)界對(duì)數(shù)字水印算法的理解都是將一些不易察覺(jué)的具有隨機(jī)特性的數(shù)據(jù)嵌入到圖像頻域或空域的系數(shù)上。從信號(hào)處理的角度看,嵌入水印可以看成是在強(qiáng)背景下迭加一個(gè)弱信號(hào),由于人類視覺(jué)系統(tǒng)的分辨率受到一定的限制,只要迭加的信號(hào)幅度不超過(guò)HVS的對(duì)比門限,人眼就無(wú)法感覺(jué)到信號(hào)的存在,所以可以通過(guò)對(duì)原始

2、圖像進(jìn)行一定調(diào)整,在不影響視覺(jué)效果的情況下嵌入一些水印信息。數(shù)字水印系統(tǒng)的一般模型如圖1所示:圖1 數(shù)字水印系統(tǒng)基本模型水印嵌入器的輸入量有三個(gè):水印信號(hào)M,宿主信號(hào)S和密鑰K。水印信號(hào)M是指原始水印(圖像或一個(gè)數(shù)字序列)通過(guò)一定的方法經(jīng)過(guò)調(diào)制將嵌入到宿主信號(hào)中的數(shù)字信號(hào)。宿主信號(hào)S是指被嵌入水印的信號(hào)(原始信號(hào))。密鑰K則指用于提高水印系統(tǒng)安全性的密碼信息,它獨(dú)立于宿主信號(hào)。密鑰有私有密鑰和公共密鑰之分,前者指攻擊者在明確了水印嵌入方法但又不知道密鑰的情況下,水印不會(huì)被破壞或盜取;后者是指攻擊者對(duì)宿主信號(hào)(如內(nèi)容標(biāo)識(shí)、語(yǔ)言字幕等)不感興趣的情況下,密鑰也就不存在保密性,可以作為公共密鑰。實(shí)驗(yàn)

3、一 圖像輸入與輸出基本操作一、實(shí)驗(yàn)題目: 圖像輸入與輸出操作二、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)在MATLAB環(huán)境下對(duì)圖像文件的I/O操作,為讀取各種格式的圖像文件和后續(xù)進(jìn)行圖像處理打下基礎(chǔ)。三、實(shí)驗(yàn)內(nèi)容利用MATLAB為用戶提供的專門函數(shù)從圖像格式的文件中讀/寫圖像數(shù)據(jù)、顯示圖像,以及查詢圖像文件的信息。四、預(yù)備知識(shí)熟悉MATLAB開(kāi)發(fā)環(huán)境。五、實(shí)驗(yàn)原理(1)圖像文件的讀取利用imread函數(shù)可以完成圖像文件的讀取操作。常用語(yǔ)法格式為:I=imread(filename,fmt)或I=imread();其作用是將文件名用字符串filename表示的、擴(kuò)展名用字符串fmt(表示圖像文件格式)表示的圖像文件中的數(shù)據(jù)

4、讀到矩陣I中。當(dāng)filename中不包含任何路徑信息時(shí),imread會(huì)從當(dāng)前工作目錄中尋找并讀取文件。要想讀取指定路徑中的圖像,最簡(jiǎn)單的方法就是在filename中輸入完整的或相對(duì)的地址。MATLAB支持多種圖像文件格式的讀、寫和顯示。因此參數(shù)fmt常用的可能值有:bmp Windows位圖格式j(luò)pgorjpeg 聯(lián)合圖像專家組格式tifortiff 標(biāo)志圖像文件格式gif 圖形交換格式pcx Windows畫刷格式png 可移動(dòng)網(wǎng)絡(luò)圖形格式xwd X Window Dump格式例如,命令行I=imread();將JPEG圖像lena讀入圖像矩陣I中。圖像文件的寫入(保存)利用imwrite完

5、成圖像的輸出和保存操作,也完全支持也完全支持上述各種圖像文件的格式。其語(yǔ)法格式為: imwrite(I,filename,fmt)或imwrite(I,);其中的I、filename和fmt的意義同上所述。注意事項(xiàng):當(dāng)利用imwrite函數(shù)保存圖像時(shí),MATLAB默認(rèn)的保存方式是將其簡(jiǎn)化為uint8的數(shù)據(jù)類型。與讀取文件類型類似,MATLAB在文件保存時(shí)還支持16位的PNG和TIFF圖像。所以,當(dāng)用戶保存這類文件時(shí),MATLAB就將其存儲(chǔ)在uint16中。 (3)圖像文件的顯示圖像的現(xiàn)實(shí)過(guò)程是將數(shù)字圖像從一組離散數(shù)據(jù)還原為一幅可見(jiàn)圖像的過(guò)程。MATLAB的的圖像處理工具箱提供了多種圖像顯示技術(shù)

6、。例如imshow可以直接從文件顯示多種圖像;image函數(shù)可以將矩陣作為圖像 ;colorbar函數(shù)可以用來(lái)顯示顏色條;montage函數(shù)可以動(dòng)態(tài)顯示圖像序列。這里僅對(duì)常用的顯示函數(shù)進(jìn)行介紹。圖像的顯示imshow函數(shù)是最常用的顯示各種圖像的函數(shù),其調(diào)用格式如下: imshow(I,N); imshow(I,N)用于顯示灰度圖像,其中I為灰度圖像的數(shù)據(jù)矩陣,N為灰度級(jí)數(shù)目,默認(rèn)值為256。例如下面的語(yǔ)句用于顯示一幅灰度圖像: I=imread(); imshow(I);如果不希望在顯示圖像之前裝載圖像,那么可以使用以下格式直接進(jìn)行圖像文件的顯示:imshow filename其中,filen

7、ame為要顯示的圖像文件的文件名。實(shí)例1-1 顯示一幅在當(dāng)前目錄下的.bmp格式的圖像:imshow 顯示結(jié)果如圖所示。圖1.1.1 顯示一幅圖像文件中的圖像注意事項(xiàng):該文件名必須帶有合法的擴(kuò)展名(指明文件格式),且該圖像文件必須保存在當(dāng)前目錄下,或在MATLAB默認(rèn)的目錄下。添加色帶colorbar函數(shù)可以給一個(gè)坐標(biāo)軸對(duì)象添加一條色帶。如果該坐標(biāo)軸對(duì)象包含一個(gè)圖像對(duì)象,則添加的色帶將指示出該圖像中不同顏色的數(shù)據(jù)值。這對(duì)于了解被顯示圖像的灰度級(jí)特別有用。其調(diào)用格式為: colorbar 實(shí)例1-2 I=imread(); imshow(I); colorbar;圖1.1.2 顯示圖像并加入顏色

8、條從上圖可知,該圖像是數(shù)據(jù)類型為uint8的灰度圖像,其灰度級(jí)范圍從0255。顯示多幅圖像 顯示多幅圖像最簡(jiǎn)單的方法就是在不同的圖形窗口中顯示它們。imshow總是在當(dāng)前窗口中顯示一幅圖像,如果用戶想連續(xù)顯示兩幅圖像,那么第二幅圖像就會(huì)替代第一幅圖像。為了避免圖像在當(dāng)前窗口中的覆蓋現(xiàn)象,在調(diào)用imshow函數(shù)顯示下一幅圖像之前可以使用figure命令來(lái)創(chuàng)建一個(gè)新的窗口。例如:imshow(I1);figure, imshow(I2);figure, imshow(I3); 有時(shí)為了便于在多幅圖像之間進(jìn)行比較,需要將這些圖像顯示在一個(gè)圖形窗口中。達(dá)到這一目的有兩種方法:一種方法是聯(lián)合使用imsh

9、ow和subplot函數(shù),但此方法在一個(gè)圖形窗口只能有一個(gè)調(diào)色板;另一種方法是聯(lián)合使用subimage和subplot函數(shù),此方法可在一個(gè)圖形窗口內(nèi)使用多個(gè)調(diào)色板。subplot函數(shù)將一個(gè)圖形窗口劃分為多個(gè)顯示區(qū)域,其調(diào)用格式如下: subplot(m,n,p) subplot函數(shù)將圖形窗口劃分為m(行)n(列)個(gè)顯示區(qū)域,并選擇第p個(gè)區(qū)域作為當(dāng)前繪圖區(qū)。例1-3 用兩排顯示四幅圖像,可以使用以下語(yǔ)句: I1=imread(); I2=imread(); I3=imread(); I4=imread(); subplot(2,2,1), imshow(I1); subplot(2,2,2),

10、imshow(I2); subplot(2,2,3), imshow(I3); subplot(2,2,4), imshow(I4);圖1.1.3 在一個(gè)圖形窗口中顯示多幅圖像圖像文件信息的查詢imfinfo函數(shù)用于查詢圖像文件的有關(guān)信息,詳細(xì)地顯示出圖像文件的各種屬性。其語(yǔ)法格式為:info=imfinfo(filename,fmt)或info=imfinfo()或imfinfo imfinfo函數(shù)獲取的圖像文件信息依賴于文件類型的不同而不同,但至少應(yīng)包含以下內(nèi)容:文件名。如果該文件不在當(dāng)前目錄下,還包含該文件的完整路徑。文件格式。文件格式的版本號(hào)。文件最后一次修改的時(shí)間。文件的大小。以字節(jié)

11、為單位。圖像的寬度。圖像的高度。每個(gè)像素所用的比特?cái)?shù)。也叫像素深度。圖像類型。即該圖像是真彩色圖像、索引圖像還是灰度圖像。例如,命令行imfinfo 會(huì)輸出如下信息(注意,在這種情況下,有些域不包含信息):Filename: FileModDate: 04-Jan-2003 12:31:26FileSize: 13849Format: jpgFormatVersion: Width: 714Height: 682BitDepth: 8ColorType: grayscaleFormatSignature: Comment: 六、實(shí)驗(yàn)步驟:(1)利用imread函數(shù)完成對(duì)圖像文件的讀取操作。(2

12、)利用imwrite函數(shù)完成圖像的寫入(保存)操作。(3)利用imshow函數(shù)顯示圖像。(4)利用imfinfo函數(shù)查詢圖像文件的有關(guān)信息。實(shí)驗(yàn)二 基于DCT域的數(shù)字水印技術(shù)離散余弦變換,簡(jiǎn)稱DCT,是一種實(shí)數(shù)域變換,其變換核為實(shí)數(shù)的余弦函數(shù),計(jì)算速度較快,是一種近似最佳變換,很適合于做圖象壓縮和隨機(jī)信號(hào)處理,它對(duì)常用的圖象壓縮有較強(qiáng)的魯棒性。基于DCT域的數(shù)字水印算法,一般而言有兩種算法。一種是直接對(duì)整幅圖像進(jìn)行DCT計(jì)算,選取合適頻段的系數(shù),嵌入水印。另一種是,首先將整幅圖像分成塊,對(duì)每一塊分別進(jìn)行DCT計(jì)算,在每一塊中選取合適頻段的系數(shù),將水印信息分散嵌入到每一塊所選取的DCT系數(shù)中。這

13、種方法稱為分塊DCT,這種方法非常適合于88的圖像塊DCT變換。目前,DCT域的水印方法大多數(shù)是采用分塊DCT方法。 二維DCT概述:一般而言,數(shù)字圖象,其二維DCT變換用矩陣表示,其定義式如下式所示: (4-1)二維IDCT定義如下: (4-2)其中 并且 (4-3)我們最常用到的是88分塊DCT,也就是首先將大小為MN的圖像分成的非重疊的大小為88的塊,然后對(duì)每一塊作DCT。根據(jù)式(4-1)和式(4-2),88DCT的定義如下: (4-4)88IDCT的定義如下: (4-5)其中, 并且 (4-6)實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)使用基于DCT域數(shù)字水印嵌入算法和基于DCT域數(shù)字水印檢測(cè)提取算法。實(shí)驗(yàn)內(nèi)容和

14、原理:(1)基于DCT域數(shù)字水印嵌入算法:DCT域的水印嵌入過(guò)程,就是首先對(duì)宿主圖像S進(jìn)行分塊DCT運(yùn)算,選取出要嵌入的DCT系數(shù)C,并且對(duì)宿主圖像用HVS模型進(jìn)行分析,得到感知系數(shù)掩蔽模板,用其來(lái)控制水印嵌入強(qiáng)度,再將編碼后的水印信號(hào)W,用一定方式嵌入到選好的系數(shù)中。用嵌入水印的系數(shù)替代原來(lái)位置的系數(shù),再進(jìn)行逆DCT(Inverse Discrete Cosine Transform,IDCT)變換,就得到了含有水印的圖像X。DCT域水印系統(tǒng)的水印嵌入過(guò)程框圖如圖1所示:圖1 DCT域水印嵌入過(guò)程方框圖(2)基于DCT域數(shù)字水印檢測(cè)提取算法:DCT域水印的驗(yàn)證過(guò)程(即包括水印的檢測(cè)和提取過(guò)程

15、),就是將待測(cè)圖像Y(注意此時(shí)的圖像也許已經(jīng)遭受了圖象處理或惡意攻擊)進(jìn)行DCT運(yùn)算;然后按著嵌入水印時(shí)選取的DCT系數(shù),選取其含有水印的系數(shù),進(jìn)行水印提取,然后利用相關(guān)檢測(cè)法判斷水印是否存在。如果水印檢測(cè)器輸出結(jié)果顯示水印存在,則根據(jù)需要可以用水印解碼器對(duì)提取的水印進(jìn)行解碼,恢復(fù)水印。水印檢測(cè)提取過(guò)程如圖2圖2 DCT域數(shù)字水印檢測(cè)提取框圖實(shí)驗(yàn)操作方法與步驟:(1)水印嵌入步驟如下:1. 將宿主圖像分成88的塊,每一塊都進(jìn)行DCT變換,得到與宿主圖象相同尺寸的DCT域系數(shù)矩陣。2. 產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列,并設(shè)定一個(gè)密鑰key。3. 將每個(gè)88的DCT系數(shù)矩陣,從每一塊的中頻段取出個(gè)系數(shù)

16、。4. 然后嵌入水印,嵌入規(guī)則為當(dāng)水印圖像元素為0時(shí),按照式子(其中alpha為尺度因子,mark為隨機(jī)序列,為原圖像的分塊DCT系數(shù)),將一個(gè)隨機(jī)序列與原始圖像塊的幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加;為1時(shí),用另一個(gè)偽隨機(jī)序列與幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加。5. 用得到的新的DCT系數(shù)對(duì)原來(lái)位置的DCT系數(shù)進(jìn)行置換。6. 對(duì)新的DCT系數(shù)矩陣進(jìn)行DCT逆變換,得到了嵌入水印信號(hào)的圖像。(2)水印檢測(cè)提取步驟如下:1. 對(duì)含有水印圖像進(jìn)行88的塊DCT變換。2. 對(duì)每一塊的DCT系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水印的系數(shù),將所有提取出的系數(shù),按順序組成新的系數(shù)序列。 3. 用密鑰

17、生成水印信號(hào)4. 將含水印的系數(shù)序列與水印信號(hào)進(jìn)行相關(guān)計(jì)算,得到歸一化相關(guān)系數(shù)。實(shí)驗(yàn)結(jié)果及分析:以下是尺度因子alpha=30時(shí)的實(shí)驗(yàn)結(jié)果,以及受到各種攻擊后所提取到的水印圖像及其與原始水印圖像的相關(guān)系數(shù):圖3 原始圖像和嵌入水印后的圖像此時(shí),alpha=30圖4 沒(méi)有受到攻擊的圖像及提取到的水印圖像此時(shí)相關(guān)系數(shù)=1圖5 加入白噪聲后的圖像、原始水印和提取的水印圖像此時(shí)相關(guān)系數(shù)=圖6 高斯低通濾波后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=圖7 剪切后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=圖8 旋轉(zhuǎn)10后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=結(jié)論:當(dāng)圖像(宿主信息)受到加噪、高斯低通濾波、剪切等攻擊后,

18、其可視度、提取的水印圖像與原始水印圖像的相似度(都在90%以上)都是非常令人滿意的;當(dāng)受到旋轉(zhuǎn)攻擊后,其提取的水印圖像與原始水印圖像的相似度(不足50%)卻令人感到失望,不過(guò)仍可證明水印信息的存在。程序參考:% 嵌入算法 %clear all; clc;% 讀取水印圖像 %omark=double(imread()/255;mo=size(omark,1);no=size(omark,2);% 以下生成水印信息 %mark=omark;alpha=30;rand1=randn(1,8);rand2=randn(1,8);% 讀取宿主圖像 %cimage=imread();figure(1);s

19、ubplot(2,3,1),imshow(cimage,),title(原始的宿主圖像);mc,nc=size(cimage);cda0=blkproc(cimage,8,8,dct2);% 嵌入水印 %cda1=cda0; for i=1:mo for j=1:no x=(i-1)*8;y=(j-1)*8; if mark(i,j)=1 k=rand1; else k=rand2; end cda1(x+1,y+8)=cda0(x+1,y+8)+alpha*k(1); cda1(x+2,y+7)=cda0(x+2,y+7)+alpha*k(2); cda1(x+3,y+6)=cda0(x+3

20、,y+6)+alpha*k(3); cda1(x+4,y+5)=cda0(x+4,y+5)+alpha*k(4); cda1(x+5,y+4)=cda0(x+5,y+4)+alpha*k(5); cda1(x+6,y+3)=cda0(x+6,y+3)+alpha*k(6); cda1(x+7,y+2)=cda0(x+7,y+2)+alpha*k(7); cda1(x+8,y+1)=cda0(x+8,y+1)+alpha*k(8); endend% 嵌入水印后圖象 %wimage=blkproc(cda1,8,8,idct2); wimage_1=uint8(wimage);imwrite(wi

21、mage_1,bmp);subplot(2,3,2),imshow(wimage,),title(嵌入水印后圖象);% 進(jìn)行攻擊測(cè)試 %disp(1-加入白噪聲);disp(2-高斯低通濾波);disp(3-剪切圖像);disp(4-旋轉(zhuǎn)攻擊);disp(5-直接檢測(cè))begin=input(請(qǐng)選擇攻擊(1-5):)switch begin% 加入白噪聲 % case 1Aimage1=wimage;Wnoise=20*randn(size(Aimage1);Aimage1=Aimage1+Wnoise;subplot(2,3,4),imshow(Aimage1,),title(加入白噪聲后的

22、圖象);att=Aimage1;imwrite(att,);% 高斯低通濾波 % case 2Aimage2=wimage;H=fspecial(gaussian,4,4,;Aimage2=imfilter(Aimage2,H);subplot(2,3,4),imshow(Aimage2,),title(高斯低通濾波后的圖象);att=Aimage2;imwrite(att,)% 剪切攻擊 % case 3Aimage3=wimage;Aimage3(1:128,1:128)=256;subplot(2,3,4),imshow(Aimage3,),title(剪切后的圖象);att=Aimag

23、e3;imwrite(att,);% 旋轉(zhuǎn)攻擊 % case 4Aimage4=wimage;Aimage4=imrotate(Aimage4,10,bilinear,crop);Aimage_4=mat2gray(Aimage4);subplot(2,3,4),imshow(Aimage_4,),title(旋轉(zhuǎn)10 度后的圖象);att=Aimage_4;imwrite(att,);% 沒(méi)有受到攻擊 % case 5subplot(2,3,4),imshow(wimage,),title(直接提取的圖像);att=wimage;imwrite(att,);end% 提取水印 %tmark_

24、0=att;tmark_0=blkproc(tmark_0,8,8,dct2);pass=zeros(1,8);for i=1:mo for j=1:no x=(i-1)*8;y=(j-1)*8; pass(1)=tmark_0(x+1,y+8); pass(2)=tmark_0(x+2,y+7); pass(3)=tmark_0(x+3,y+6); pass(4)=tmark_0(x+4,y+5); pass(5)=tmark_0(x+5,y+4); pass(6)=tmark_0(x+6,y+3); pass(7)=tmark_0(x+7,y+2); pass(8)=tmark_0(x+8

25、,y+1); if (corr2(pass,rand1)corr2(pass,rand2) tmark_1(i,j)=1; else tmark_1(i,j)=0; end endend% 計(jì)算NC(歸一化相關(guān)系數(shù))%g_mark=double(tmark_1);o_mark=double(omark);m,n=size(g_mark);nc_0=0;nc_1=0;nc_2=0;for i=1:m for j=1:n nc_0=nc_0+g_mark(i,j)*o_mark(i,j); nc_1=nc_1+o_mark(i,j)*o_mark(i,j); nc_2=nc_2+g_mark(i,

26、j)*g_mark(i,j); endendNC=nc_0/sqrt(nc_1*nc_2);% 顯示提取水印 %subplot(2,3,5),imshow(),title(原始水印圖像);subplot(2,3,6),imshow(tmark_1,);name=提取得水印圖像;title(strcat(num2str(name),NC=,num2str(NC);綜合設(shè)計(jì)性實(shí)驗(yàn) 基于傅立葉域變換的數(shù)字水印技術(shù)實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)使用基于傅立葉域的數(shù)字水印嵌入算法和基于DCT域數(shù)字水印檢測(cè)提取算法。實(shí)驗(yàn)內(nèi)容和原理:傅立葉變換(Fourier Transform)是線性系統(tǒng)分析的一個(gè)有力工具,是研究信號(hào)的

27、頻譜方法,它架起了時(shí)域和頻域之間的橋梁。使我們能夠定量分析諸如數(shù)字化系統(tǒng)、采樣點(diǎn)、電子放大器、卷積濾波器、噪聲等的作用,把傅立葉變換的理論同其物理解釋相結(jié)合,將大大有助于解決大多數(shù)圖象處理問(wèn)題。Fourier分析理論十分完善,既可以處理連續(xù)信號(hào)也可以處理離散信號(hào)。計(jì)算機(jī)只能處理離散信號(hào),且在數(shù)字圖象處理中,輸入圖像和輸出圖像通常都是二維的,一般表示成二維數(shù)字矩陣,因此這里直接討論二維離散傅立葉變換(DFT)和二維快速傅立葉變換(FFT)。(1)二維離散傅立葉變換DFT(Discrete Fourier Transform)二維離散傅立葉變換對(duì)定義式如下: (1-1) (1-2)二維離散傅立葉變

28、換的傅立葉譜、相位、功率譜分別如下: 傅立葉譜: (1-3) 相位: (1-4) 功率譜: (1-5)式子(1-1)可以分離為: (1-6)式子(1-2)可以分離為: (1-7)由上兩式可知,二維傅立葉變換可由連續(xù)兩次一維傅立葉變換得到,從而將二維DFT分解為水平和垂直兩部分運(yùn)算,上式中方括號(hào)中的項(xiàng)表示在圖像的行上計(jì)算的DFT,方括號(hào)外邊的求和則實(shí)現(xiàn)結(jié)果數(shù)組在列上的DFT,這種分解使我們可以用一維FFT來(lái)快速實(shí)現(xiàn)二維DFT。(2)二維快速傅立葉變換FFT(Fast Fourier Transform)FFT的基本思想是:令序列的長(zhǎng)度為,如果不滿足,在尾部補(bǔ)零,沒(méi)有任何影響。按n奇偶把分解為兩個(gè)

29、N/2點(diǎn)的子序列: (1-8) (1-9)那么 (1-10)將(1-8)和(1-9)式代入上式得: (1-11)上式右邊的兩部分恰好是長(zhǎng)度(周期)為N/2的的傅立葉變換,所以: (1-12) (1-13)這樣一個(gè)長(zhǎng)度為N的DFT就分解為兩個(gè)長(zhǎng)度為N/2的DFT,然后進(jìn)行N/2次復(fù)數(shù)的蝶式運(yùn)算,再運(yùn)用分解-遞歸思想,分解次,每一次均有N/2個(gè)蝶式運(yùn)算,所以FFT的時(shí)間復(fù)雜度為。FFT在圖像運(yùn)用中的思想是,先將原圖像進(jìn)行轉(zhuǎn)置,按行對(duì)轉(zhuǎn)置后的圖像矩陣做一維FFT,將此變換所得的中間矩陣再轉(zhuǎn)置,再按對(duì)轉(zhuǎn)置后的中間矩陣做一維FFT,最后得到的就是二維FFT。實(shí)驗(yàn)操作方法與步驟:(1)嵌入算法的步驟如下:

30、1.將宿主圖像分成88的塊,每一塊都進(jìn)行DFT變換,得到與宿主圖象相同尺寸的DFT域圖象系數(shù)矩陣。2. 產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列,并設(shè)定一個(gè)密鑰key。3. 將每個(gè)88的DFT系數(shù)矩陣,從每一塊的中頻段取出個(gè)系數(shù)。4. 由于DFT域的幅度譜具有對(duì)稱性,為了水印嵌入后保持這種對(duì)稱性,也為了確保恢復(fù)圖像像素值為實(shí)數(shù),嵌入水印時(shí)采用對(duì)稱嵌入。嵌入規(guī)則為當(dāng)水印圖像元素為0時(shí),按照式子(其中alfa為尺度因子,mark為隨機(jī)序列,為原圖像的分塊DFT系數(shù)),將一個(gè)隨機(jī)序列與原始圖像塊的幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加;為1時(shí),用另一個(gè)偽隨機(jī)序列與幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加。5. 用得到的新的DFT系數(shù)對(duì)原來(lái)

31、位置的DFT系數(shù)進(jìn)行置換。6. 對(duì)每一圖像塊進(jìn)行DFT逆變換,得到含水印圖像。(2)提取算法步驟如下:1. 將宿主圖像分成88的塊,每一塊都進(jìn)行DFT變換,得到與宿主圖像相同尺寸的DFT域圖象系數(shù)矩陣。2. 對(duì)每一塊的DFT系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水印的系數(shù),將所有提取出的系數(shù),按順序組成新的系數(shù)序列。 3. 計(jì)算嵌入水印圖像塊的幅度譜與兩個(gè)偽隨機(jī)序列的相關(guān)性,假設(shè)嵌入的水印圖像矩陣為0時(shí)疊加的是隨機(jī)序列A,為1時(shí)疊加的是隨機(jī)序列B,則提取時(shí)如果嵌入水印幅度譜與隨機(jī)序列A的相關(guān)性大于其B的相關(guān)性,那么這個(gè)位置嵌入的是水印圖像矩陣0元素。按這個(gè)規(guī)則即可提取出水印圖

32、像。4. 將含水印的系數(shù)序列與水印信號(hào)進(jìn)行相關(guān)計(jì)算,得到歸一化相關(guān)系數(shù)。實(shí)驗(yàn)結(jié)果與分析:以下是尺度因子alpha=260時(shí)的實(shí)驗(yàn)結(jié)果,以及受到各種攻擊后所提取到的水印圖像及其與原始水印圖像的相關(guān)系數(shù):圖1 原始圖像與嵌入水印后的圖像圖2 沒(méi)有受到攻擊的圖像和直接提取的水印圖像此時(shí)相關(guān)系數(shù)=1圖3 加入白噪聲后的圖像、原始水印圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=圖4 高斯低通濾波后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=圖5 剪切后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=圖6 旋轉(zhuǎn)后的圖像及提取的水印圖像此時(shí)相關(guān)系數(shù)=結(jié)論:由于DFT域?qū)θ中缘男D(zhuǎn)、平移和縮放變換具有不變性的特點(diǎn),基于DFT域的數(shù)字水印

33、技術(shù)要比基于DCT域的數(shù)字水印技術(shù)的魯棒性要強(qiáng)的多,特別是對(duì)于旋轉(zhuǎn)攻擊,前者的優(yōu)勢(shì)更加突出! 程序參考:% 嵌入水印算法 %clear all; clc;% 讀取水印圖象 % omark=double(imread()/255;mo=size(omark,1);no=size(omark,2);% 以下生成水印信息 %mark=omark;alpha=200;R1=randn(1,8);rand1=round(R1);R2=randn(1,8);rand2=round(R2);% 讀取宿主圖像 %cimage=imread();figure(1);subplot(2,3,1),imshow(c

34、image,),title(原始的宿主圖像);mc,nc=size(cimage);cimage=double(cimage);fft0=blkproc(cimage,8,8,fft2);% 嵌入水印 %fft_abs=abs(fft0);fft_angle=angle(fft0);fft1=fft_abs;for ii=1:mo for jj=1:no x=(ii-1)*8;y=(jj-1)*8; if mark(ii,jj)=1 k=rand1; else k=rand2; end fft1(x+1,y+8)=fft_abs(x+1,y+8)+alpha*k(1); fft1(x+2,y+

35、7)=fft_abs(x+2,y+7)+alpha*k(2); fft1(x+3,y+6)=fft_abs(x+3,y+6)+alpha*k(3); fft1(x+4,y+5)=fft_abs(x+4,y+5)+alpha*k(4); fft1(x+5,y+4)=fft_abs(x+5,y+4)+alpha*k(5); fft1(x+6,y+3)=fft_abs(x+6,y+3)+alpha*k(6); fft1(x+7,y+2)=fft_abs(x+7,y+2)+alpha*k(7); fft1(x+8,y+1)=fft_abs(x+8,y+1)+alpha*k(8); endendfft_

36、abs_0=fft1;fft_abs_1=(fft_abs_0.*exp(i*fft_angle);wimage_0=blkproc(fft_abs_1,8,8,ifft2);wimage=abs(wimage_0);% 顯示嵌入水印圖象 %wimage_1=uint8(wimage);imwrite(wimage_1,bmp);subplot(2,3,2),imshow(wimage,),title(嵌入水印后的圖象);% 進(jìn)行各種攻擊 %disp(1-加入白噪聲);disp(2-高斯低通濾波);disp(3-剪切圖像);disp(4-旋轉(zhuǎn)圖象);disp(5-直接檢測(cè));begin=inp

37、ut(請(qǐng)選擇攻擊(1-5));switch begin%加入白噪聲% case 1Aimage1=wimage;Wnoise=12*randn(size(Aimage1);Aimage1=Aimage1+Wnoise;subplot(2,3,4),imshow(Aimage1,),title(加入白噪聲后的圖象);att=Aimage1;imwrite(att,);% 高斯低通濾波 % case 2Aimage2=wimage;H=fspecial(gaussian,4,4,;Aimage2=imfilter(Aimage2,H);subplot(2,3,4),imshow(Aimage2,)

38、,title(高斯低通濾波后的圖象);att=Aimage2;imwrite(att,)% 剪切攻擊 % case 3Aimage3=wimage;Aimage3(1:128,1:128)=256;subplot(2,3,4),imshow(Aimage3,),title(剪切后的圖象);att=Aimage3;imwrite(att,);% 旋轉(zhuǎn)攻擊 % case 4Aimage4=wimage;Aimage4=imrotate(Aimage4,10,bilinear,crop);Aimage_4=mat2gray(Aimage4);subplot(2,3,4),imshow(Aimage_

39、4,),title(旋轉(zhuǎn)10度后的圖象);att=Aimage_4;imwrite(att,);% 沒(méi)有受到攻擊 % case 5subplot(2,3,4),imshow(wimage,),title(直接提取的圖象);att=wimage;imwrite(att,);end% 提取水印 %tmark_0=att;tmark_0=blkproc(tmark_0,8,8,fft2);tmark_0=abs(tmark_0);pass=zeros(1,8);for ii=1:mo for jj=1:no x=(ii-1)*8;y=(jj-1)*8; pass(1)=tmark_0(x+1,y+8); pass(2)=tmark_0(x+2,y+7); pass(3)=tmark_0(x+3,y+6); pass(4)=tmark_0(x+4,y+5); pass(5)=tmark_0(x+5,y+4); pass(6)=tmark_0(x+6,y+3);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論