2011-12-26 9 views
2

イメージヒストグラムを計算するプログラムを作成しようとしています。私は上記のコードを持っていますが、なぜそれが動作しないのか理解できません。ヒストグラム計算in java

public void hist(List<Integer> r, List g, List b){ 

    int count[] = new int [256]; 

    int rSize = r.size(); 
    int gSize = g.size(); 
    int bSize = b.size(); 


    for (int j = 0; j<=255; j++){ 

     for(int i = 0; i < rSize; i++){ 

     if(r.get(i) == j){} 

      //System.out.println(r.get(i) == j); 

      count[j]++; 

     } 
    } 

    for (int i = 0; i < count.length; i++) { 

     System.out.print(count[i]); 

    } 
} 

私がメインでそれを呼び出す場合は、カウントのすべての要素は、rリストは画像の赤チャンネルの値を持つように不可能であるRSIZEです。

答えて

4

ifが空です:if(r.get(i) == j){}です。

それは次のようになります。

if(r.get(i) == j) 
{ 
    count[j]++; 
} 

デバッガ次回を使用して、単にあなたのコードをステップ実行したい場合があり、これを簡単に捕まえたでしょう。

+0

笑を持つことができます。残念だ。正直、申し訳ありません。 –

1

ifが空であるという前の回答に追加するには(IDEの自動書式設定でインデントが正しくないことがわかります)。

しかし、ネストされたループを持つ必要はありません。 rは任意の整数またはnullを持つことができる場合は、あなたが持つことができます。

for (Integer integer: r){ 
    if (integer != null) { 
     int i = integer; 
     if(i >= 0 && i<= 255) { 
      count[i]++; 
     } 
    } 
} 

と仮定し、rはカウントのみに収まる整数を含む、あなたは

for (int i: r){ 
    count[i]++; 
}