返回信息流新手,望指教。。。不胜感激
这是一条镜像帖。来源:北邮人论坛 / matlab / #8970同步于 2012/4/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
显示Error: Missing variable or function.这是错哪了?我应该
QQ729859186
2012/4/24镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
%function Gabor_wavelet(m,n)
% m指定滤波器的尺度
% n指定滤波器的方向
Image = imread('D1.gif');%读入示例图像
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%提取示例图像的纹理特征
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
width=6;
[x,y]=meshgrid(-width:width,-width:width);
M=5; % M表示总共有5个尺度
N=6; % N表示总共有6个方向
for m=1:M
for n=1:N
Uh=0.4;
Ul=0.05;
a=(Uh/Ul).^(-1/(M-1));
sigma_x=(a+1)*sqrt(2*log(2))/(2*pi*a.^m*(a-1)*Ul);
sigma_y=1/(2*pi*tan(pi/2*N)*sqrt(Uh.^2/2*log(2)-(1/2*pi*sigma_x).^2));
% W=a.^m*Ul;
% Uh=pi/0.2;
% Ul=Uh/8;
% a=(Uh/Ul).^(-1/(M-1));
%sigma_u=(a-1)*Uh/((a+1)*sqrt(2*log(2)));
%sigma_v=tan(pi/(2*N))*(Uh-2*log(2)*sigma_u.^2/Uh)*(2*log(2)-(2*log(2)).^2*sigma_u.^2/Uh.^2).^(-1/2);
%sigma_u=1/(2*pi*sigma_x);
%sigma_v=1/(2*pi*sigma_y);
W=0.5;
theta=n*pi/N; % 指定滤波器的方向
xx=a.^(-m)*(x*cos(theta)+y*sin(theta));
yy=a.^(-m)*(-x*sin(theta)+y*cos(theta));
gabor=a.^(-m)/(2*pi*sigma_x*sigma_y)*exp(-(xx.^2/sigma_x.^2+yy.^2/sigma_y.^2)/2)*exp(2*pi*sqrt(-1)*W*xx);
gabor1=conj(gabor);
G= conv2(Image,gabor1);
Gabor=abs(G);
E1=sum(sum(Gabor));
miu=E1/(M*N);
sigema=sqrt(sum(sum((Gabor-miu)*(Gabor-miu))))/(M*N);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%示例图像的30个均值,30个方差,即:示例图像的纹理特征
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MIU1(m*n)=miu;
SIGEMA1(m*n)=sigema;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%循环读入图像
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=dir('F:\wenliku\*.gif');
for k=1:size(A)
B=strcat('\wenliku\',A(k).name);
Image=imread(B);
width=6;
[x,y]=meshgrid(-width:width,-width:width);
M=5; % M表示总共有5个尺度
N=6; % N表示总共有6个方向
for m=1:M
for n=1:N
Uh=0.4;
Ul=0.05;
a=(Uh/Ul).^(-1/(M-1));
sigma_x=(a+1)*sqrt(2*log(2))/(2*pi*a.^m*(a-1)*Ul);
sigma_y=1/(2*pi*tan(pi/2*N)*sqrt(Uh.^2/2*log(2)-(1/2*pi*sigma_x).^2));
% W=a.^m*Ul;
% Uh=pi/0.2;
% Ul=Uh/8;
% a=(Uh/Ul).^(-1/(M-1));
%sigma_u=(a-1)*Uh/((a+1)*sqrt(2*log(2)));
%sigma_v=tan(pi/(2*N))*(Uh-2*log(2)*sigma_u.^2/Uh)*(2*log(2)-(2*log(2)).^2*sigma_u.^2/Uh.^2).^(-1/2);
%sigma_u=1/(2*pi*sigma_x);
%sigma_v=1/(2*pi*sigma_y);
W=0.5;
theta=n*pi/N; % 指定滤波器的方向
xx=a.^(-m)*(x*cos(theta)+y*sin(theta));
yy=a.^(-m)*(-x*sin(theta)+y*cos(theta));
gabor=a.^(-m)/(2*pi*sigma_x*sigma_y)*exp(-(xx.^2/sigma_x.^2+yy.^2/sigma_y.^2)/2)*exp(2*pi*sqrt(-1)*W*xx);
gabor1=conj(gabor);
G= conv2(Image,gabor1);
Gabor=abs(G);
E1=sum(sum(Gabor));
miu=E1/(M*N);
sigema=sqrt(sum(sum((Gabor-miu)*(Gabor-miu))))/(M*N);
MIU(m*n)=miu;
SIGEMA(m*n)=sigema;
end
end
diff1 = MIU1-MIU;
diff2 = SIGEMA1-SIGEMA;
EulerDistance = sqrt( sum([sum( diff1(:).*diff1(:)),sum( diff2(:).*diff2(:))]));
w(k)=EulerDistance;
end
%--------------------------------------------------------------------------
%按纹理的相似性显示图片
%--------------------------------------------------------------------------
[B,IX]=sort(w,2);
A=dir('F:\wenliku\*.gif');
for n=1:12
subplot(3,4,n);
I=imread(strcat('\wenliku\',A(IX(n)).name));
imshow(I);
end