版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(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ù)字水印算法的理解都是將一些不易察覺的具有隨機(jī)特性的數(shù)據(jù)施入到圖像
頻域或空域的系數(shù)上。從信號(hào)處理的角度看,嵌入水印可以看成是在強(qiáng)背景下迭加一個(gè)弱信
號(hào),由于人類視覺系統(tǒng)的分辨率受到一定的限制,只要迭加的信號(hào)幅度不超過HVS的對(duì)比門
限,人眼就無法感覺到信號(hào)的存在,所以可以通過對(duì)原始圖像進(jìn)行一定調(diào)整,在不影響視覺
效果的情況下嵌入一些水印信息.
數(shù)字水印系統(tǒng)的一般模型如圖1所示:
水印信號(hào)M
宿主信號(hào)S
密鑰K
圖1數(shù)字水印系統(tǒng)基本模型
水印嵌入器的輸入量有三個(gè):水印信號(hào)M,宿主信號(hào)S和密鑰K。
水印信號(hào)"是指原始水?。▓D像或一個(gè)數(shù)字序列)通過一定的方法經(jīng)過調(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í)、語言字幕等)不感興趣的情況下,密
鑰也就不存在保密性,可以作為公共密鑰。
實(shí)驗(yàn)一圖像輸入與輸出基本操作
一、實(shí)驗(yàn)題目:
圖像輸入與輸出操作
二、實(shí)驗(yàn)?zāi)康?/p>
學(xué)習(xí)在MATLAB環(huán)境下對(duì)圖像文件的I/O操作,為讀取各種格式的圖像文件和后續(xù)進(jìn)行圖
像處理打下基礎(chǔ).
三、實(shí)驗(yàn)內(nèi)容
利用MATLAB為用戶提供的專門函數(shù)從圖像格式的文件中讀/寫圖像數(shù)據(jù)、顯示圖像,以及查
詢圖像文件的信息。
四、預(yù)備知識(shí)
熟悉MATLAB開發(fā)環(huán)境.
五、實(shí)驗(yàn)原理
(1)圖像文件的讀取
利用imread函數(shù)可以完成圖像文件的讀取操作.常用語法格式為:
l=imread('filename','千mt')或I二imread('filename。fmt');
其作用是將文件名用字符串filename表示的、擴(kuò)展名用字符串fmt(表示圖像文
件格式)表示的圖像文件中的數(shù)據(jù)讀到矩陣I中。當(dāng)filename中不包含任何路徑信息時(shí),
imread會(huì)從當(dāng)前工作目錄中尋找并讀取文件。要想讀取指定路徑中的圖像,最簡(jiǎn)單的方法
就是在fiIename中輸入完整的或相對(duì)的地址。MATLAB支持多種圖像文件格式的讀、寫和顯
示。因此參數(shù)千mt常用的可能值有:
4bmp'Windows位圖格式
"jpg'or‘Jpeg'聯(lián)合圖像專家組格式
‘tif'or'tiff'標(biāo)志圖像文件格式
'gif'圖形交換格式
*pcx'Windows畫刷格式
‘png'可移動(dòng)網(wǎng)絡(luò)圖形格式
'xwd'XWindowDump格式
例如,命令行
i
〉〉l=imread(Ienaojpg');
將JPEG圖像lena讀入圖像矩陣I中.
(2)圖像文件的寫入(保存)
圖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
〉〉l=imread(Ienaojpg');
〉〉imshow(I);
〉〉coIorbar;
圖1.1.2顯示圖像并加入顏色條
從上圖可知,該圖像是數(shù)據(jù)類型為uint8的灰度圖像,其灰度級(jí)范圍從0
-255.
③顯示多幅圖像
顯示多幅圖像最簡(jiǎn)單的方法就是在不同的圖形窗口中顯示它們。
imshow總是在當(dāng)前窗口中顯示一幅圖像,如果用戶想連續(xù)顯示兩幅圖
像,那么第二幅圖像就會(huì)替代第一幅圖像。為了避免圖像在當(dāng)前窗口
中的覆蓋現(xiàn)象,在調(diào)用imshow函數(shù)顯示下一幅圖像之前可以使用
figure命令來創(chuàng)建一個(gè)新的窗口。例如:
imshov/(11);
figure,imshow(12);
figure,imshow(13);
有時(shí)為了便于在多幅圖像之間進(jìn)行比較,需要將這些圖像顯示在一個(gè)圖形窗口中。
達(dá)到這一目的有兩種方法:一種方法是聯(lián)合使用imshow和subplot函數(shù),但此方法在一個(gè)圖
形窗口只能有一個(gè)調(diào)色板;另一種方法是聯(lián)合使用subimage和subplot函數(shù),此方法可在
一個(gè)圖形窗口內(nèi)使用多個(gè)調(diào)色板.
subplot函數(shù)將一個(gè)圖形窗口劃分為多個(gè)顯示區(qū)域,其調(diào)用格式如下:
subpIot(m,n,p)
subplot函數(shù)將圖形窗口劃分為m(行)Xn(列)個(gè)顯示區(qū)域,并選擇第p個(gè)區(qū)域作為當(dāng)
前繪圖區(qū)。
例1-3用兩排顯示四幅圖像,可以使用以下語句:
〉>I1=imread('lena.bmp');
?I2=imread("gs256obmp*);
>>I3=imread('lena.bmp');
4
〉〉I4=imread(gs256obmp');
)>subpIot(2,2,1),imshow(11);
〉〉subpIot(2,2,2),imshow(12);
〉〉subplot(2,2,3),imshow(13);
〉>subpIot(2,2,4),imshow(14);
圖1。1.3在一個(gè)圖形窗口中顯示多幅圖像
(4)圖像文件信息的查詢
imfinf。函數(shù)用于查詢圖像文件的有關(guān)信息,詳細(xì)地顯示出圖像文件的各種屬性。其
語法格式為:
info=imfinfo('filename','fmt')或info=imfinfo(4fiIename,fmtT)
或imfinfofilename。fmt
imfinfo函數(shù)獲取的圖像文件信息依賴于文件類型的不同而不同,但至少應(yīng)包
含以下內(nèi)容:
文件名。如果該文件不在當(dāng)前目錄下,還包含該文件的完整路徑.
文件格式。
文件格式的版本號(hào)。
文件最后一次修改的時(shí)間。
文件的大小。以字節(jié)為單位。
圖像的寬度.
圖像的高度。
每個(gè)像素所用的比特?cái)?shù)。也叫像素深度。
圖像類型.即該圖像是真彩色圖像、索引圖像還是灰度圖像.
例如,命令行
>>imfinfobubbIes25.jpg
會(huì)輸出如下信息(注意,在這種情況下,有些域不包含信息):
FiIename:"bubbIes25.jpg'
FiIeModDate:’04-Jan—200312:31:26'
FiIeSize:13849
Format:'jpg'
FormatVersion:
Width:714
Height:682
BitDepth:8
ColorType:'grayscale'
Formatsignature:
Comment:{}
三、實(shí)驗(yàn)步驟:
(1)利用imread函數(shù)完成對(duì)圖像文件的讀取操作。
(2)利用imwrite函數(shù)完成圖像的寫入(保存)操作。
(3)利用imshow函數(shù)顯示圖像.
(4)利用imfinf。函數(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ù)
中。這種方法稱為分塊DCT,這種方法非常適合于8X8的圖像塊DCT變換。目前,DCT域的
水印方法大多數(shù)是采用分塊DCT方法。
二維DCT概述:一般而言,數(shù)字圖象口,其二維DCT變換用矩陣□表示,其定
義式如下式所示:
S也,l)=-7==ZZc.W0?(/)S(i,j)cos(⑵獷)cos(Q.)勺(4-D
7MxN,-=oj=oZN
二維IDCT定義□如下:
9
S"⑺"zZ&(6C2(/)和」)cost⑵包,8s(Q川)%(4-2)
yJM義Nk=01=02M2N
其中f,kG{0,1,2,...M-1},J,/G{0,1,2,.../V-1},并且
3次=031=0
=1V2G(/)=JV2(4—3)
1"=1,2,..〃一1
我們最常用到的是8X8分塊DCT,也就是首先將大小為MXN的圖像分成□的非重疊的大小
為8X8的塊,然后對(duì)每一塊作DCT。根據(jù)式(47)和式(4-2),8X8DCT的定義如下:
義,。=釁.呼]£s(i,j)cos(⑵cos":?勺(4-4)
22|=0;=01616
8X8IDCT的定義如下:
加££平邛*,叱庫盧)cos用#)(4-5)
ET)221616
其中,□并且
3,/=o
『k=0
G(k)=<41&(/)=,也(4-6)
l,k=1,2,...7=2,...7
實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)使用基于DCT域數(shù)字水印嵌入算法和基于DCT域數(shù)字水印檢
測(cè)提取算法.
實(shí)驗(yàn)內(nèi)容和原理:
(1)基于DCT域數(shù)字水印嵌入算法:
DCT域的水印嵌入過程,就是首先對(duì)宿主圖像S進(jìn)行分塊DCT運(yùn)算,選取出要嵌入的DCT系
數(shù)C,并且對(duì)宿主圖像用HVS模型進(jìn)行分析,得到感知系數(shù)掩蔽模板,用其來控制水印嵌入
強(qiáng)度,再將編碼后的水印信號(hào)W,用一定方式嵌入到選好的系數(shù)中°用嵌入水印的系數(shù)替代
原來位置的系數(shù),再進(jìn)行逆DCT(InverseDiscreteCosineTransform,IDCT)變換,就得
到了含有水印的圖像X。DCT域水印系統(tǒng)的水印嵌入過程框圖如圖1所示:
z
圖1DCT域水印嵌入過程方框圖
(2)基于DCT域數(shù)字水印檢測(cè)提取算法:
DCT域水印的臉證過程(即包括水印的檢測(cè)和提取過程),就是將待測(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è)提取過程如圖2
宿主信號(hào)s水印信號(hào)w
圖2DCT域數(shù)字水印檢測(cè)提取框圖
實(shí)驗(yàn)操作方法與步驟:
(1)水印嵌入步驟如下:
1o將宿主圖像□分成8X8的塊,每一塊都進(jìn)行DCT變換,得到與宿主圖象相同尺寸
的DCT域系數(shù)矩陣□.
2o產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列,并設(shè)定一個(gè)密鑰key.
3.將每個(gè)8X8的DCT系數(shù)矩陣,從每一塊的中頻段取出□個(gè)系數(shù)口。
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ì)原來位置的DCT系數(shù)進(jìn)行置換。
6o對(duì)新的DCT系數(shù)矩陣進(jìn)行DCT逆變換,得到了嵌入水印信號(hào)的圖像。
(2)水印檢測(cè)提取步驟如下:
1.對(duì)含有水印圖像進(jìn)行8X8的塊DCT變換。
對(duì)每一塊的系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水
2ODCT
印的系數(shù)口,將所有提取出的系數(shù),按順序組成新的系數(shù)序列口。
3o用密鑰生成水印信號(hào)W?N(OJ)
4.將含水印的系數(shù)序列與水印信號(hào)進(jìn)行相關(guān)計(jì)算,得到歸一化相關(guān)系數(shù)口。
實(shí)驗(yàn)結(jié)果及分析:
以下是尺度因子alpha=30時(shí)的實(shí)臉結(jié)果,以及受到各種攻擊后所提取到的水印圖像及
其與原始水印圖像的相關(guān)系數(shù)□:
圖3原始圖像和嵌入水印后的圖像
此時(shí),aIpha=30
直接提取的圖象
圖4沒有受到攻擊的圖像及提取到的水印圖像
此時(shí)相關(guān)系數(shù)NNC=1
加入白噪聲后的圖象
圖5加入白噪聲后的圖像、原始水印和提取的水印圖像
此時(shí)相關(guān)系數(shù)N,vc=0.99969
圖6高斯低通濾波后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)N,M=0。99058
剪切后的圖蒙,
圖7剪切后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)N,M=0。93909
旋轉(zhuǎn)10度后的圖象
圖8旋轉(zhuǎn)10后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)/7陽二0。48383
結(jié)論:當(dāng)圖像(宿主信息)受到加噪、高斯低通濾波、剪切等攻擊后,其可視度、提取的
水印圖像與原始水印圖像的相似度(都在90%以上)
都是非常令人滿意的;當(dāng)受到旋轉(zhuǎn)攻擊后,其提取的水印圖像與原始水印圖像的相似度
(不足50%)卻令人感到失望,不過仍可證明水印信息的存在。
程序參考:
%%%%%%%%%%%%%嵌入算法%%%%%%%%%%%%K%
cIearall;
cIc;
%%%%%%讀取水印圖像%%%%%%%%
omark二double(imread('muxiaoobmp'))/255;
mo=size(omark,1);
no=size(omark,2);
%%%%%以下生成水印信息%%%%%%
mark二omark;
aIpha=30;
randl=randn(1,8);
rand2=randn(1,8);
%%%%%%讀取宿主圖像%%%%%%%%
cimage=imread('Iena.bmp');
figure(1);
subpIot(2,3,1),imshow(cimage,[]),ti11e(,原始的宿主圖像');
[me,nc]=size(cimage);
cdaO=bIkproc(cimage,[8,8],'dct2*);
蹴%號(hào)%%%嵌入水印%%%%%%%%%
cda1=cdaO;
fori=1:mo
forj=1:no
x=(i-1)*8;y=(j-1)*8;
ifmark(i,j)==1
k=rand1;
eIse
k=rand2;
end
cda1(x+1,y+8)=cdaO(x+1,y+8)+aIpha*k(1);
cda1(x+2,y+7)=cdaO(x+2,y+7)+aIpha*k(2);
cda1(x+3,y+6)=cdaO(x+3,y+6)+alpha*k(3);
cda1(x+4,y+5)=cda0(x+4,y+5)+aIpha*k(4);
cda1(x+5,y+4)=cda0(x+5,y+4)+aIphak(5);
cda1(x+6,y+3)=cdaO(x+6,y+3)+aIpha*k(6);
cda1(x+7,y+2)=cdaO(x+7,y+2)+aIpha*k(7);
cda1(x+8,y+1)=cdaO(x+8,y+1)+aIpha*k(8);
end
end
%%%%%%嵌入水印后圖象%%%%%%
wimage=bIkproc(cda1,[8,8],'idct2t);
wimage」=uint8(wimage):
imwrite(wimage_1,'withmark.bmp',bmp');
subpIot(2,3,2),imshow(wimage,[1),ti11e(,嵌入水印后圖象’)
%%%%%%%%%%%%%%進(jìn)行攻擊測(cè)試%%%%%%%%%%%
disp('1--〉加入白噪聲');
disp('2-->高斯低通濾波');
disp(‘3—>剪切圖像');
disp(44—>旋轉(zhuǎn)攻擊');
disp('5——>直接檢測(cè)')
begin=input('請(qǐng)選擇攻擊(1—5):')
switchbegin
%%%%%%%加入白噪聲%%%%%%%%
case1
Aimagel=wimage;
Wnoise=20,A,randn(size(Aimagel));
Aimagel=Aimagel+Wnoise;
subpIot(2,3,4),imshow(Aimagel,[]),ti11e(,加入白噪聲后的圖象’);
att=Aimagel;
imwrite(att,'whitenoiseimageobmp');
%%*%%%%高斯低通濾波%%%%%%%
case2
Aimage2=wimage;
H=fspeciaI(*gaussian',[4,4],0o5);
Aimage2=imfiIter(Aimage2,H);
subpIot(2,3,4),imshow(Aimage2,[]),ti11e('高斯低通濾波后的圖象’);
att=Aimage2;
imwrite(att,'gaussianimage,bmp')
%%%%%%%%剪切攻擊%%%%%%%%
case3
Aimage3=wimage;
Aimage3(1:128,1:128)=256;
subpIot(2,3,4),imshow(Aifnage3,[]),ti11e('剪切后的圖象');
att=Aimage3;
imwritc(att,'cutpartimage,bmp');
%%^%%%*旋轉(zhuǎn)攻擊%%%%%%%%
case4
Aimage4=wimage;
Aimage4=imrotate(Aimage4,10,'bilinear'crop');
Aimage_4=mat2gray(Aimage4);
subpIot(2,3,4),imshow(Aimage_4,[]),titIe('旋轉(zhuǎn)10度后的圖象’);
att=Aimage_4;
imwrite(att,'rotatedimage<>bmp');
%%%%%%%沒有受到攻擊%%%%%%%
case5
subpIot(2,3,4),imshow(wimage,[]),title('直接提取的圖像’);
att=wimage;
imwrite(att,'directimage,bmp*);
end
%%%%%%%%%%%%%提取水印%%%%%%%%%%%%%%
tmark_O=att;
tmark_O=bIkproc(tmark_0,[8,8],'dct2');
pass二zeros(1,8):
fori=1:mo
forj=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,y+1);
if(corr2(pass,randl)>corr2(pass,rand2))
tmark_1(i,j)=1;
tmark_1(i,j)=0;
end
end
end
%%%%%%%%%%計(jì)算NC(歸一化相關(guān)系數(shù))%%%%%%%%
g_mark=doubIe(tmark_1);
o_mark=doubIe(omark);
[m,n]=size(g_mark);
nc_0=0;
nc_1=0;
nc_2=0;
fori=1:m
forj=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,j)*g_mark(i,j):
end
end
NC=nc_O/sqrt(nc_1*nc_2);
%%%%%%顯示提取水印%%%%%%%%
subpIot(2,3,5),imshow(?muxiao.bmp,title('原始水印圖像’);
subpIot(2,3,6),imshow(tnark_1,[]);
name='提取得水印圖像’;
title(strcat(num2str(name),'NC二',num2str(NO));
綜合設(shè)計(jì)性實(shí)驗(yàn)基于傅立葉域變換的數(shù)字水印技術(shù)
實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)使用基于傅立葉域的數(shù)字水印嵌入算法和基于DCT域數(shù)字
水印檢測(cè)提取算法。
實(shí)驗(yàn)內(nèi)容和原理:
傅立葉變換(FourierTransform)是線性系統(tǒng)分析的一個(gè)有力工具,是研究信號(hào)的頻譜
方法,它架起了時(shí)域和頻域之間的橋梁。使我們能夠定量分析諸如數(shù)字化系統(tǒng)、采樣點(diǎn)、電
子放大器、卷積濾波器、噪聲等的作用,把傅立葉變換的理論同其物理解釋相結(jié)合,將大大有
助于解決大多數(shù)圖象處理問題.
Fourier分析理論十分完善,既可以處理連續(xù)信號(hào)也可以處理離散信號(hào)。計(jì)
算機(jī)只能處理離散信號(hào),且在數(shù)字圖象處理中,輸入圖像和輸出圖像通常都是
二維的,一般表示成二維數(shù)字矩陣,因此這里直接討論二維離散傅立葉變換
(DFT)和二維快速傅立葉變換(FFT)o
(1)二維離散傅立葉變換DFT(DiscreteFourierTransform)
二維離散傅立葉變換對(duì)定義式如下:
N-lM-\(竺+把)
R”,u)=£Z/(X,>),"'=0,1,2…,M—1。=0,1,2…,N-1(1-1)
y=0X=0
IN-l.W-li2;r(竺+竺)
/(X,y)=—yyF(w,vk'MN,x=(),l,2,…,M-l;u=(),l,2,…,N-l(1-2)
MN七U
二維離散傅立葉變換的傅立葉譜、相位、功率譜分別如下:
傅立葉譜:口(1—3)
相位:□(1-4)
功率譜:□(1-5)
式子(1—1)可以分離為:
NT_心丁,時(shí)-1一泮
忻("J)|=Ze"x£/(x,y)eM(1——6)
y=0x=0
式子(1-2)可以分離為:
]汩j—vv11gJ—ut.、
e,x—(1—7)
NF\_M
由上兩式可知,二維傅立葉變換可由連續(xù)兩次一維傅立葉變換得到,從而將二維DFT
分解為水平和垂直兩部分運(yùn)算,上式中方括號(hào)中的項(xiàng)表示在圖像的行上計(jì)算的DFT,方括號(hào)
外邊的求和則實(shí)現(xiàn)結(jié)果數(shù)組在列上的DFT,這種分解使我們可以用一維FFT來快速實(shí)現(xiàn)二維
DFTo
(2)二維快速傅立葉變換FFT(FastFourierTransform)
FFT的基本思想是:
令序列□的長(zhǎng)度□為口,如果不滿足,在尾部補(bǔ)零,沒有任何影響。按n奇偶把□分解為兩
個(gè)N/2點(diǎn)的子序列:
?=0,1,2,…,(N/2);(1-8)
力](〃2)=f(2〃z+1),〃2=0J,2「..,(N/2);(1-9)
那么
F(k)=工/(〃)/*"+(170)
〃為偶數(shù)〃為奇數(shù)
將(1-8)和(1-9)式代入上式得:
N.21,N.2^,
I-1J-'
22
F(k)=£g、(m)e+h](ni)e(1—11)
/W=0.71=0
上式右邊的兩部分恰好是長(zhǎng)度(周期)為N/2的□的傅立葉變換口,所以:
-jhkN
F(k)=Gi(k)+cNg(Q,k=0,i,2,…(彳-1)(1-12)
N廠AN,、
F(k+-)=G}(lc)-eN”|(火),攵=0,1,2一?,(5-1)(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)嵌入算法的步驟如下:
1o將宿主圖像/a,/),(i=L2,…心j=l,2,..N)分成8X8的塊,每一塊都進(jìn)行DFT變換,得
到與宿主圖象相同尺寸的DFT域圖象系數(shù)矩陣/內(nèi),力。
2o產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列,并設(shè)定一個(gè)密鑰key。
3.將每個(gè)8義8的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)行乘性疊加;為時(shí),用另一個(gè)偽隨機(jī)序列與
幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加。
5o用得到的新的DFT系數(shù)對(duì)原來位置的DFT系數(shù)進(jìn)行置換。
6.對(duì)每一圖像塊進(jìn)行DFT逆變換,得到含水印圖像.
(2)提取算法步躲如下:
1o將宿主圖像□分成8X8的塊,每一塊都進(jìn)行DFT變換,得到與宿主圖像相同尺寸的
DFT域圖象系數(shù)矩陣口。
2.對(duì)每一塊的DFT系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水印
的系數(shù)口,將所有提取出的系數(shù),按順序組成新的系數(shù)序列□.
3o計(jì)算嵌入水印圖像塊的幅度譜與兩個(gè)偽隨機(jī)序列的相關(guān)性,假設(shè)嵌入的水印圖像矩
陣為'0'時(shí)疊加的是隨機(jī)序列A,為'「時(shí)疊加的是隨機(jī)序列B,則提取時(shí)如果嵌入水印幅
度譜與隨機(jī)序列A的相關(guān)性大于其B的相關(guān)性,那么這個(gè)位置嵌入的是水印圖像矩陣'0'
元素.按這個(gè)規(guī)則即可提取出水印圖像。
4o將含水印的系數(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沒有受到攻擊的圖像和直接提取的水印圖像
此時(shí)相關(guān)系數(shù)N%二1
加入白噪聲后的圖象
圖3加入白噪聲后的圖像、原始水印圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)NNC=96566
高斯低通漉波后的圖爭(zhēng)
圖4高斯低通濾波后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)N.c=0.97311
剪切后的圖象
圖5剪切后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)N陽=0。96907
旋轉(zhuǎn)10度后的圖象
圖6旋轉(zhuǎn)后的圖像及提取的水印圖像
此時(shí)相關(guān)系數(shù)=0.91301
結(jié)論:由于DFT域?qū)θ中缘男D(zhuǎn)、平移和縮放變換具有不變性的特點(diǎn),基于DFT域的數(shù)字
水印技術(shù)要比基于DCT域的數(shù)字水印技術(shù)的魯棒性要強(qiáng)的多,特別是對(duì)于旋轉(zhuǎn)攻擊,前者
的優(yōu)勢(shì)更加突出!
程序參考:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%嵌入水印算法%%%%%%%%%%%%%%
clearall;
cIc;
%%%%%%讀取水印圖象%%%%%%%
omark=double(imread('muxiaoobmp'))/255;
mo=size(omark,1);
no=size(omark,2);
%%%%%以下生成水印信息%/%%%%
mark=omark;
aIpha=200;
R1=randn(1,8);
randl=round(R1);
R2=randn(1,8);
rand2=round(R2);
%%%%%%%讀取宿主圖像%%%%%%%
cimage=imread('Ienaobmp*);
figure(1);
subpIot(2,3,1),imshow(cimage,口),ti11e('原始的宿主圖像');
[me,nc]=size(cimage);
cimage=doubIe(cimage);
fftO=bIkproc(cimage,[8,8]fft2');
%%%%%%%嵌入水印%%%%%%%%%
fft_abs=abs(fftO);
fft_angIe=angIe(fftO);
fft1=fft_abs;
forii=1:mo
forjj=1:no
x=(ii—1)*8;y二(jj-1)*8;
ifmark(ii,jj)==1
k=rand1;
eIse
k=rand2;
end
fft1(x+1,y+8)=fft_abs(x+1,y+8)+aIpha*k(1);
fft1(x+2,y+7)=fft_abs(x+2,y+7)+aIpha*k(2);
fft1(x+3,y+6)=fft_abs(x+3,y+6)+aIpha*k(3);
fft1(x+4,y+5)=fft_abs(x+4,y+5)+aIpha*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)+aIpha*k⑺;
fft1(x+8,y+1)=fft_abs(x+8,y+1)+alpha*k(8);
end
end
fft_abs_O=fft1;
fft_abs_1=(fft_abs_O.*exp(i*fft_angIe));
wimage_O=bIkproc(fft_abs_1,[8,8],'ifft2,);
wimage=abs(wimage_0);
%%%%%%顯示嵌入水印圖象%%%%%
wimage_1=uint8(wimage);
imwrite(wimage_1,'withmarkobmp','bmp');
subpIot(2,3,2),imshow(wimage,[]),ti11e('嵌入水印后的圖象’);
%%%%%%%%%%%%%進(jìn)行各種攻擊%%%%%%%%%%%%
disp(>1--->加入白噪聲,);
disp('2——>高斯低通濾波’);
disp('3-->剪切圖像');
disp('4—>旋轉(zhuǎn)圖象');
disp('5——>直接檢測(cè)’);
begin二input('請(qǐng)選擇攻擊(1—5)');
switchbegin
%%%%%%%%加入白噪聲%%%%%%%%
case1
Aimagel=wimage;
Wnoise=12*randn(size(Aimagel));
Aimagel=Aimagel+Wnoise;
subpIot(2,3,4),imshow(Aimagel,[]),ti11e('加入白噪聲后的圖象');
att=Aimagel;
imwrite(att,'whitenoiseimage,bmp');
%%%%%%高斯低通濾波%%%%%%%%
case2
Aimage2=wimage;
H=fspeciaI('gaussian*,[4,4],0o6);
Aimage2=imfiIter(Aimage2,H);
subpIot(2,3,4),imshow(Aimage2,[]),ti11e('高斯低通濾波后的圖象’);
att=Aimage2;
imwrite(att,'gaussianimage,bmp')
%%%%%%%剪切攻擊%%%%%%%%%
case3
Aimage3=wimage;
Aimage3(1:128,1:128)=256;
subpIot(2,3,4),imshow(Aimage3,[]),ti11e('剪切后的圖象’);
att=Aimage3;
imwrite(att,'cutpartimage,bmp*);
%%%%%%%旋轉(zhuǎn)攻擊%%%%%%%%%
case4
Aimage4=wimage;
Aimage4=imrotate(Aimage4,10,'biIinear",'cropf;
Aimage_4=mat2gray(Aimage4);
subpIot(2,3,4),imshow(Aimage_4,[]),title('旋轉(zhuǎn)10度后的圖象‘);
att=Aimage_4;
imwrite(att,'rotatedimage.bmp');
%%%%%%%沒有受到攻擊%%%%%%%
case5
subpIot(2,3,4),imshow(wimage,[]),title('直接提取的圖象’);
att=wimage;
imwrite(att,Jdirectimage.bmp');
end
%%%%%%%%%%%%%%%提取水印
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025荷蘭自行車城市交通規(guī)劃與低碳出行推廣舉措分析報(bào)告
- 2025英國民航服務(wù)業(yè)市場(chǎng)供需調(diào)研行業(yè)市場(chǎng)投資前景規(guī)劃研究報(bào)告
- 2025航運(yùn)行業(yè)市場(chǎng)供需平衡分析評(píng)估投資規(guī)劃發(fā)展趨勢(shì)研究報(bào)告
- 2025航運(yùn)服務(wù)行業(yè)市場(chǎng)需求分析及船運(yùn)資源調(diào)配管理優(yōu)化研究報(bào)告
- 房地產(chǎn)預(yù)售合同風(fēng)險(xiǎn)防范要點(diǎn)
- 2025山東濰坊市濰城區(qū)人民醫(yī)院招聘專業(yè)技術(shù)人員(第二批次)8人筆試備考重點(diǎn)試題及答案解析
- 2025青海西寧市湟中區(qū)正豐現(xiàn)代農(nóng)業(yè)科技服務(wù)有限公司招聘1人備考考試試題及答案解析
- 2025北京郵電大學(xué)世紀(jì)學(xué)院招聘模擬筆試試題及答案解析
- 2025內(nèi)蒙古鄂爾多斯市蒙泰熱電產(chǎn)業(yè)有限責(zé)任公司招聘53人筆試備考重點(diǎn)試題及答案解析
- 二年級(jí)語文下冊(cè)第四單元紅圍裙教案設(shè)計(jì)湘教版湘教版小學(xué)二年級(jí)下冊(cè)語文教案
- 感術(shù)行動(dòng)培訓(xùn)課件
- DB44∕T 2552-2024 藥物臨床試驗(yàn)倫理審查規(guī)范
- 跨區(qū)域文化協(xié)作-洞察及研究
- 2025 易凱資本中國健康產(chǎn)業(yè)白皮書 -生物制造篇(與茅臺(tái)基金聯(lián)合發(fā)布)
- 產(chǎn)業(yè)經(jīng)濟(jì)學(xué)(蘇東坡版)課后習(xí)題及答案
- T/CECS 10227-2022綠色建材評(píng)價(jià)屋面綠化材料
- 區(qū)域醫(yī)學(xué)檢驗(yàn)中心項(xiàng)目建設(shè)方案
- 小學(xué)四年級(jí)安全教育上冊(cè)教學(xué)計(jì)劃小學(xué)四年級(jí)安全教育教案
- 個(gè)人優(yōu)勢(shì)與劣勢(shì)分析
- VCR接頭鎖緊工作程序
- 2025閥門裝配工藝規(guī)程
評(píng)論
0/150
提交評(píng)論