2011-12-14 2 views
1

MATLABのhist関数がどのように機能するのかよくわかりません。私はそれにほとんど問題がないようです。MATLABのhist関数がどのように動作するかわからない

下のコードでは、回転不変の均一ローカルバイナリパターン(LBP)コードを実行しようとしています。私はLBPコードに問題はありませんが、問題はhist関数(以下のコードで示されています)にあります。

問題は、範囲iは0:9からですが、ヒストグラム関数を適用すると、35,27、178114などの偶数の値が9より大きい値になります。 。

I2 = imread('test.png'); 
RIUniformHist=[]; 
m=size(I2,1); 
n=size(I2,2); 
for i=1:10:m 
    for j=1:10:n 
     for k=i+1:i+8 
      for l=j+1:j+8 
      J0=I2(k,l); 
      I3(k-1,l-1)=I2(k-1,l-1)>J0; 
      I3(k-1,l)=I2(k-1,l)>J0; 
      I3(k-1,l+1)=I2(k-1,l+1)>J0; 
      I3(k,l+1)=I2(k,l+1)>J0; 
      I3(k+1,l+1)=I2(k+1,l+1)>J0; 
      I3(k+1,l)=I2(k+1,l)>J0; 
      I3(k+1,l-1)=I2(k+1,l-1)>J0; 
      I3(k,l-1)=I2(k,l-1)>J0; 
      LBP=I3(k-1,l-1)*2^7+I3(k-1,l)*2^6+I3(k-1,l+1)*2^5+I3(k,l+1)*2^4+I3(k+1,l+1)*2^3+I3(k+1,l)*2^2+I3(k+1,l-1)*2^1+I3(k,l-1)*2^0; 
      bits = bitand(LBP, 2.^(7:-1:0))>0; 
      if nnz(diff(bits([1:end, 1]))) <= 2 
       RIULBP(k,l)=abs(I3(k-1,l-1)-I3(k-1,l))+ abs(I3(k-1,l)-I3(k-1,l+1))+ abs(I3(k-1,l+1)-I3(k,l+1))+ abs(I3(k,l+1)-I3(k+1,l+1))+abs(I3(k+1,l+1)-I3(k+1,l))+abs(I3(k+1,l)-I3(k+1,l-1))+abs(I3(k+1,l-1)-I3(k,l-1)); 
      else 
       RIULBP(k,l)=9; 
      end 
      end 
     end 
     RIULBP=uint8(RIULBP); 
     RIULBPv=reshape(RIULBP,1,size(RIULBP,1)*size(RIULBP,2)); 
     RIUHist=hist(RIULBPv,0:9); % problem 
     RIUniformHist = [RIUniformHist RIUHist]; 
    end 
end 
+0

もっと簡単なコード例を掲載してください。 –

答えて

1

RIUHist=hist(data, bins) 

によって返されたベクトルがdataのどのように多くの要素の数はbinsベクトルで識別ポイントに最も近いされます。したがって、値が178114の場合、178114の要素がdataで、一致するインデックスに最も近い数値がbinsであることを意味します。

あなたは

[RIUHist, binsOut] = hist(data) 

は、MATLABは、ビンを選択できるようにするか、

[RIUHist, binsOut] = hist(data, binCount) 

(私はそれが20個のビンを使用しています信じている)MATLABは、ビンを選択できるように使用しますが、ビンの一定数を強制することができます(私はよく100または200を使います)。

+0

私のコードは間違っているか正しいですか? – user999450

+0

あなたがしようとしていることによって異なります。私はLDBコードが何を意味するのか分かりませんし、あなたのサンプルコードをそのまま実行することはできません(私は 'test.png'を持っていません)。私は、0から9までのビンを作成しようとしたときに、ヒストリから大きな価値を得ることができるという特定の質問に答えようとしていました。 – Pursuit

+0

次に、RIUHistの値が0から9までの値を取得する方法は? – user999450

関連する問題