資源簡介
DCT域的matlab加水印及去水印,可直接運行,自己改改圖片就行
代碼片段和文件信息
%嵌入水印的程序代碼
M=256;?%原圖像長度
N=32;?%水印圖像長度
K=8;
I=zeros(MM);J=zeros(NN);BLOCK?=?zeros(KK);
%顯示原圖像
subplot(321);I=imread(‘mona.bmp‘‘bmp‘);imshow(I);title(‘原始公開圖像‘);
%顯示水印圖像
subplot(322);J=imread(‘flag.bmp‘‘bmp‘);imshow(J);title(‘水印圖像‘);
%嵌入水印
for?p=1:N
?for?q=1:N
??x=(p-1)*K+1;
??y=(q-1)*K+1;
??BLOCK=I(x:x+K-1y:y+K-1);
??BLOCK=dct2(BLOCK);
??if?J(pq)==0
????a=-1;
??else
????a=1;
??end
??BLOCK(11)=BLOCK(11)*(1+a*0.03);
??BLOCK=idct2(BLOCK);
??I(x:x+K-1y:y+K-1)=BLOCK;
?end
end
%顯示嵌入水印后的圖像
subplot(323);imshow(I);title(‘嵌入水印后的圖像‘);
imwrite(I‘watermarked.bmp‘‘bmp‘);
%從嵌入水印的圖像中提取水印
I=imread(‘mona‘‘bmp‘);
J=imread(‘watermarked.bmp‘‘bmp‘);
for?p=1:N
for?q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1=I(x:x+K-1y:y+K-1);
BLOCK2=J(x:x+K-1y:y+K-1);
BLOCK1=i
評論
共有 條評論