?? dwtwatermark.txt
字號(hào):
/*****************************************
圖像先進(jìn)行DWT一級(jí)分解,用兩個(gè)不相關(guān)的偽隨機(jī)序列分別代表水印信息中的0和1,潛入到小波分解后的LH和HL兩個(gè)字圖上。
注:整個(gè)算法分水印嵌入和水印提取兩個(gè)部分。
/*****************************
%小波擴(kuò)頻水印嵌入部分
k=2;
file_name='';
cover_object=double(imread(file_name));
Mc=size(cover_object,1);
Nc=size(cover_object,2);
file_name='';
message=double(imread(file_name));
Mm=size(message,1);
Nm=size(message,2);
message_vector=round(reshape(message,Mm*Nm,1)./256);
file_name='';
key=double(imread(file_name))./256;
%產(chǎn)生PN序列密鑰
rand('state',key);
[cA1,cH1,cV1,cD1]=dwt2(cover_object,'haar');
%將PN序列嵌入到小波分解后的LH分量和HL分量上
for(kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mc/2,Nc/2)-0.5));
pn_sequence_v=round(2*(rand(Mc/2,Nc/2)-0.5));
if(message(kk)==0)
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_h;
end
end
%小波反變換
watermarked_image=idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);
watermarked_image_uint8=uint8(watermarked_image);
imwrite(watermarked_image_uint8,'dwt_watermarked.bmp','bmp');
psnr=PSNR(cover_object,watermarked_image_uint8,Mc,Nc),
%顯示圖像
figue(1)
imshow(watermarked_image_uint8,[])
title('Watermarked Image')
%小波擴(kuò)頻水印提取部分
file_name='dwt_watermarked.bmp';
watermarked_image=double(imread(file_name));
Mw=size(watermarked_image,1);
Nw=size(watermarked_image,2);
file_name='_copyright.bmp';
orig_watermark=double(imread(file_name));
Mo=size(orig_watermark,1);
No=size(orig_watermark,2);
file_name='_key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
message_vector=ones(1,Mo*No);
[cA1,cH1,cV1,cD1]=dwt2(watermarked_image,'haar');
for(kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mw/2,Nw/2)-0.5));
pn_sequence_v=round(2*(rand(Mw/2,Nw/2)-0.5));
correlation_h(kk)=Similar(cH1,pn_sequence_h);
correlation_v(kk)=Similar(cV1,pn_sequence_v)
end
for(kk=1:length(message_vector))
if(correlation(kk)>mean(correlation))
message_vector(kk)=0;
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_h;
end
end
figure(2)
message=reshape(message_vector,Mo,No);
imshow(message,[])
title('Recovered Watermark')
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -