登录论坛

查看完整版本 : [MATLAB图像处理] 请高人给一段基于DCT的图像水印代码注解


tomkeluqi
2010-05-02, 21:26
请各位高人给下面一段基于DCT的水印嵌入和提取代码作一下注解。由于我是新手,所以请你详细一点。非常感谢。还有,水印是怎么嵌入的,嵌入到哪个位置等问题也请你帮我回答一下。不胜感激。

%嵌入水印
for p=1:N
for q=1:N
x=(p-1)*block+1; y=(q-1)*block+1;
block_dct=trueImage(x:x+block-1,y:y+block-1);
block_dct=dct2(block_dct);
if waterMark(p,q)==0
a=-1;
else
a=1;
end
block_dct=block_dct*(1+a*0.03);
block_dct=idct2(block_dct);
I(x:x+block-1,y:y+block-1)=block_dct;
end
end
subplot(2,2,4);
imshow(I,[]);
title('嵌入水印图像');


%水印提取程序2
M=512;
N=64;
block=8;
for p=1:N
for q=1:N
x=(p-1)*block+1;
y=(q-1)*block+1;
BLOCK1=I(x:x+block-1,y:y+block-1);
BLOCK2=trueImage(x:x+block-1,y:y+block-1);
BLOCK1=idct2(BLOCK1);
BLOCK2=idct2(BLOCK2);
a=BLOCK1(1,1)/BLOCK2(1,1)-1;
if a<0
W(p,q)=0;
else
W(p,q)=1;
end
end
end
figure(2);
imshow(W);title(' 提取的水印');