📄 func_dwt.asv
字号:
function [E_W , S] = func_DWT(I, level, Lo_D, Hi_D);
mm=mean(I(:));
% best direction information
a=zeros(17,17);
a(1:16,1:16)=I;
for ii=17
jj=1:16;
a(ii,jj)=I(16,jj);
end
p=17;
a(:,17)=a(:,16);
% Subtract the DC component
m = mean(a(:));
a = a - m;
% Normalize for unit norm
m = 17 * m;
% Finite Radon transform
ra = frat(a);% The maxtrix of radon transoform will be P by P+1
yy=sum(ra.^2);
for zz=1:p+1
if max(yy)==yy(zz)
break;
end
end
M = bestdir(p);
if(sqrt(sum((yy-mean(yy(:))).^2))>=0.3)
max_direc=M(:,zz);
%direc=max_direc(1,1)/(sqrt(max_direc(2,1)^2+max_direc(1,1)^2));%direction information
direc=zz;
else
direc=-8;
end
%
[C,S] = func_Mywavedec2(I,level,Lo_D,Hi_D);
S(:,3) = S(:,1).*S(:,2); % dim of detail coef nmatrices
number=level*3+1;
L = length(S);
I_W=zeros(S(1,1),S(1,2));
% approx part
I_W( 1:S(1,1) , 1:S(1,2) ) = reshape(C(1:S(1,3)),S(1,1:2));
e=mean(mean(abs(I_W)));
for k=2:L-1
rows=S(k,1);
columns=S(k,2);
%horizontal part
c_start = S(1,3) + 3*sum(S(2:k-1,3)) + 1;
c_stop = S(1,3) + 3*sum(S(2:k-1,3)) + S(k,3);
% I_W=zeros(1:S(k,1),1:S(k,2));
I_W=zeros(S(k,1),S(k,2));
I_W(1:rows,1:columns) = reshape( C(c_start:c_stop) , S(k,1:2) );
e=[mean(mean(abs(I_W)));e];
% vertical part
c_start = S(1,3) + 3*sum(S(2:k-1,3)) + S(k,3) + 1;
c_stop = S(1,3) + 3*sum(S(2:k-1,3)) + 2*S(k,3);
I_W(1:rows,1:columns) = reshape( C(c_start:c_stop) , S(k,1:2) );
e=[mean(mean(abs(I_W)));e];
% diagonal part
c_start = S(1,3) + 3*sum(S(2:k-1,3)) + 2*S(k,3) + 1;
c_stop = S(1,3) + 3*sum(S(2:k,3));
I_W(1:rows,1:columns) = reshape( C(c_start:c_stop) , S(k,1:2) );
e=[mean(mean(abs(I_W)));e];
end
E_W=[e;mm;direc];
max_e=max(E_W);
E_W=E_W/max_e;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -