4

画像テクスチャ機能を抽出するために、次のガボール フィルターがあります。

a=imread('image0001.jpg');
a=double(a); 
a=a-mean(a(:)); 
[r,c,l]=size(a); 

 K=5;  S=6;
 Uh=0.4;
 Ul=0.05;
 alpha=(Uh/Ul)^(1/(S-1));  
 sigmau=(alpha-1)*Uh/((alpha+1)*sqrt(2*log(2))); 
 sigmav=tan(pi/(2*K))*(Uh-2*log(2)*((sigmau^2)/Uh))/sqrt((2*log(2))-(((2*log(2))^2)*(sigmau^2)/(Uh^2)));
 sigmax=1/(2*pi*sigmau);
 sigmay=1/(2*pi*sigmav);
 b=fft2(a);
 [e d]=size(b);
  i=1;
 G=zeros(r,c,S*K);
 IZ=zeros(r,c,S*K);
for m=0:S-1
    for n=0:K-1 
       fprintf(1,'.');
       for x=-r/2+1:r/2;
          for y=-c/2+1:c/2;
             xdash=(alpha^(-m))*((x)*cos(n*pi/K)+(y)*sin(n*pi/K));
             ydash=(alpha^(-m))*((y)*cos(n*pi/K)-(x)*sin(n*pi/K));
             g(r/2+x,r/2+y)=(alpha^(-m))*((1/(2*pi*sigmax*sigmay))*exp(-0.5*(((xdash^2)/(sigmax^2))+((ydash^2)/(sigmay^2)))+0.8i*pi*xdash));
          end
       end
       [rr cc]=size(g); 
       G(:,:,i)=g;
       h=fft2(g); 
       z=b.*h;
       iz=ifft2(z);
       IZ(:,:,i)=iz;
       FeatureVector(i)=mean(abs(iz(:)));
       i=i+1;
    end
 end
 fprintf(1,'\n');

%%%%%%%%%

このコードを実行すると、次のエラーが発生します。

==> 回の使用エラー マトリックスの次元が一致する必要があります。==> ComputeGaborFeatures4 のエラー 37 z=b.*h;

誰かがこのエラーを解決するのを手伝ってくれるか、誰かが私に別の単純なガボールフィルターを与えることができますか?

4

2 に答える 2

0

エラーにより、g(r/2+x,r/2+y) が g(r/2+x,c/2+y) に変更される可能性があります。

于 2013-02-27T13:28:01.563 に答える
0

このエラーは、r が r と等しくなく、cc が c と等しくないため、b と h のサイズが等しくない配列乗算 (.*) の呼び出しが原因です。

行列乗算 (*) を使用するか、fft2 を呼び出す前に g と a を同じサイズにする必要があります。

于 2012-02-10T14:45:37.827 に答える