帮忙解释一段基于DWT的数字水印的MATLAB代码blocksize=8 %图像分块大小b=0.318 %水印嵌入程度的调制参数 message_vector=reshape(message,1,r_message*l_message); %message 为水印图像,r,l_message分别为水印突袭那个

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/11 07:39:14
帮忙解释一段基于DWT的数字水印的MATLAB代码blocksize=8 %图像分块大小b=0.318 %水印嵌入程度的调制参数 message_vector=reshape(message,1,r_message*l_message); %message 为水印图像,r,l_message分别为水印突袭那个
xV[SF+za"#5ͤLڷ }# %v k\d6R@[ 3t+gBNXw;g9ٳ j 5_TFpڬЏr{GV;RWUt34W@$XAJ+uFUFٞq`Ȭ̡GTH̤iSulJUQ5VY{Ș=9q>z{պ}(Gqs縕իG}ވ룷y_ K?fEgQzcAw7qL^k2 $aIPO>bTNKJhJ?>;3餴Kg{fkBOb(Öʀ+a FN7|AQ? K AUaEP1 cHՉQǀ+P[20:6DF ] wυ|x-rʅ9B]| /"s]W8+"t04F#ifx tXi55ɲmP>2烌MG2ҤnW2R8Fh  r" {ֶu?GYb*JڨזWRKbNtPR:à8>1Hg~3|ɛ0(8m\[uXd/ٰ[m݋!A($].kÿG]ݘV,4rTLʑ:>柄x%+eLەWec%&2fÞ1(It7Սӹu:cBS;UCִzeBqWi*paRdMPVʅ4^ ksT2:KMqy*4 J͗shlCyx\..` ܩY'׸a|' Cq&c_ߌt~o:'Εh5#Qͳ3pLb TAlX<:HD4`ezҩF,j_!Je͹Sc⫶Nq[͡R .̟}Zƞ^PkzuIf3E *7N

帮忙解释一段基于DWT的数字水印的MATLAB代码blocksize=8 %图像分块大小b=0.318 %水印嵌入程度的调制参数 message_vector=reshape(message,1,r_message*l_message); %message 为水印图像,r,l_message分别为水印突袭那个
帮忙解释一段基于DWT的数字水印的MATLAB代码
blocksize=8 %图像分块大小
b=0.318 %水印嵌入程度的调制参数
message_vector=reshape(message,1,r_message*l_message);
%message 为水印图像,r,l_message分别为水印突袭那个的行和列
% 图像分块,嵌入水印信息
x=1;
y=1;
for kk=1:length(message_vector);
w=cover_object(x:x+blocksize-1,y:y+blocksize-1); %cover_object为未嵌入水印的图像
[cA1,cH1,cV1,cD1]=dwt2(w,'haar'); %二级haar小波变换
[cA2,cH2,cV2,cD2]=dwt2(cA1,'haar');
a=[cA2,cH2,cV2,cD2];
ca=reshape(a,1,(blocksize^2)/4);
ca2=reshape(cA2,1,(blocksize^2)/16);
ch2=reshape(cH2,1,(blocksize^2)/16);
cv2=reshape(cV2,1,(blocksize^2)/16);
cd2=reshape(cD2,1,(blocksize^2)/16);
E=(sum(ca)-sum(ca2))/(16-4); % 二级细节子图的小波系数的平均值
c=[ch2,cv2,cd2]-E;
s=0;
for nn=1:length(c)
s=s+c(nn)^2; %%%%?
end;
s=sqrt(s); %%%?
t=s^b;
p=A+t*B; % 调制参数
if message_vector(kk)==0
C=c+p; %C代表什么?为什么要+p
end;
if message_vector(kk)==1
C=c;
end;
cH2=reshape(C(1:4),2,2);
cV2=reshape(C(5:8),2,2);
cD2=reshape(C(9:12),2,2);
cA1=idwt2(cA2,cH2,cV2,cD2,'haar',[blocksize/2,blocksize/2]); %二级haar小波逆变换
watermarked_image(x:x+blocksize-1,y:y+blocksize-1)= idwt2(cA1,cH1,cV1,cD1,'haar',[blocksize,blocksize]);
if (x+blocksize) >= r_cover %r_cover为原图像行的数目
x=1;
y=y+blocksize;
else
x=x+blocksize;
end;
waitbar(kk/length(message_vector),h);
end;
close(h);
提问:a代表什么?c代表什么?
由于对MATLAB不是很熟悉,我需要读懂这个程序才好进行下一步,最好每一行都详细说明一下,

帮忙解释一段基于DWT的数字水印的MATLAB代码blocksize=8 %图像分块大小b=0.318 %水印嵌入程度的调制参数 message_vector=reshape(message,1,r_message*l_message); %message 为水印图像,r,l_message分别为水印突袭那个
a是把图像做小波分解后的低频分量再做一次小波分解的结果.
c是把a中的高频分量减掉a的平均值得到的结果.这样减的目的是使得c中的数值相对于0基本保持平均.
s是c中数值的几何平均值,其目的是根据图像的特点,达到自适应的嵌入强度.
C就是把c加了水印的系数了.
同志,在这里能碰到搞水印的真是不容易啊……
以上.
专业路过的老狼