用MATLAB给图片加水印,怎样生成要加入的水印,并把水印嵌入图片中。 给个程序呗,谢谢了

2024-12-22 18:03:57
推荐回答(2个)
回答1:

M=256; %原图像长度
N=32; %水印图像长度
K=8;
I=zeros(M,M);
II=zeros(K,K);
B=zeros(M,M);
Idct=zeros(K,K);
D=zeros(M,M);

%读取原图像
I=imread('d:\My Documents\数字水印\LENA.BMP');
subplot(2,2,1);
%显示原图像
imshow(I);
title('原图像');

%产生水印序列
randn('seed',10);
mark=randn(1024,1);
subplot(2,2,2);
plot(mark);
title('水印序列');

%嵌入水印
T=1;
for m=1:N
for n=1:N
x=(m-1)*K+1;
y=(n-1)*K+1;
II=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块
Idct=dct2(II);%对子块进行DCT变换
if x==1&y==1
alfa=0.002;
else
alfa=0;
end
B=Idct*(1+alfa*mark(T));%嵌入水印
Bidct=idct2(B);%进行DCT反变换
I(x:x+K-1,y:y+K-1)=Bidct;
T=T+1;
end
end
subplot(2,2,3);
imshow(I);%显示嵌入水印后的图像
title('嵌入水印后的图像');imwrite(I,'嵌入后的图像.bmp');

回答2:

有没有人可以解释一下这是什么意思??