0

8 ビットのグレースケール イメージに ImageJ を使用してヒストグラム アルゴリズムを実装しようとしています。以下は私のコードで、正しく動作していません。私は初心者であることを覚えておいてください。

私のimageJコードはどのように動作するべきですか???

for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) { 
  min = lut[i+1]; 
} 

for ( i=0; i < 256; ++i )
{
    sum += histo[i];

    lut[i] = sum;
}
4

1 に答える 1

2
  1. まず、画像をスキャンして最小/最大を検索する必要があります。lut[] ではなく、OriginalImage の [0..pixelCount] で検索します。

  2. 次に、ヒストグラムを塗りつぶします(lut[]配列、塗りつぶしませんでした)

  3. 次に、EqualizedImage[k] を (max - min) * (Original[k] - min) / pixelCount; で埋めます。私がいくつかの間違いを犯していなければ。

編集(古いものはこちら)

for() ループの 'i' は、'i <= MaxIntensity' (MaxIntensity = 255) で確実に範囲外になります。

lut = newArray(256)
...
min = 0; 
for (i = 0; i <= MaxIntensity&& lut[i] == 0; i++) { 
   min = lut[i+1]; 
}

そのコードで何をしようとしているのかは明確ではありませんが、lut[] 配列でゼロ以外の最小値を探しているだけなら、これを使用しない理由は次のとおりです。

min = 0; 
for (i = 0; i < MaxIntensity ; i++)
{ 
   if(min > lut[i]) { min = lut[i]; }
}

元のループに「lut[i] == 0」を含める理由は明確ではありません。

于 2012-05-30T09:46:35.537 に答える