1

私は次のことをしなければなりません -

1) 強度レベル 0 から強度レベル 255 に属するピクセルを見つけて、それらを 256 配列に保存します。

これは、私が解決しようとしているより大きな問題のアルゴリズムであり、セル配列要素を操作する方法がわからないため、ここで立ち往生しています。

セル配列には 256 個のセルがあり、個々のセルに属する要素を比較して再配分する必要があります。Matlab の専門家が助けてください。

4

1 に答える 1

0

アルゴリズムは単純です。2 次元イメージ行列からデータの 1 次元配列を作成します。配列の各要素には、次の 4 つの属性があります。

  • X 位置
  • Y位置
  • [0,255] の強度値
  • 優先度 (各ピクセルのデフォルトはゼロ)

ここで、強度値に基づいて、256 個の一意のビンの 1 つにある値を使用して、このデータからヒストグラムを生成します。それは十分に簡単なはずです。

ここで、各ビンにある要素の平均数 (つまり、行 * 列 / 256) を計算し、最も近い整数に丸めます。この値を使用すると、各ヒストグラムの「ビン」に含まれるピクセル数がわかります。したがって、ヒストグラムで次のことを行います。

  • 256 個のヒストグラム ビンの最初の 255 個をループします。
    • ビン内の値の数が平均より多いか少ないかを計算します。
    • 現在のビンのピクセルが多すぎる場合:
      • 各ビンのピクセルを「優先度」の値で昇順に並べ替えます (つまり、0 から開始します。優先度が高いほど、ピクセルを移動する可能性は低くなります)。
      • 優先度が最も低いピクセルを取得し、そのピクセルを次のビンに移動し (つまり、強度値を増やします)、優先度値を増やします。
      • 現在のビンのピクセル数が期待値と等しくなるまで、これを繰り返します (つまり、行数 * 列数 / 256)。
  • 最後のビンであるビン #255 (つまり、256 番目のビン) にアイテムが多くなりすぎる可能性があります。ヒストグラムで上記のアルゴリズムを逆に繰り返すことで、これを修正できます。ただし、今回は優先度の高い順にピクセルを並べ替えます。したがって、優先順位の値が高いほど、移動される可能性が高くなります。今回このピクセルを移動すると、強度値と優先度の両方が増加するのではなく、減少します。

ヒストグラムが均等化されたので、その内容をループして元の 2D 画像を再作成できます。

「優先度」の値は重要です。そのため、必要以上に多くのビンにわたってピクセルを誤ってシフトして、ガウスまたはインパルス/ごま塩ノイズさえも発生させないようにします。全体的なアルゴリズムは である必要がO(n^2)あるため、パフォーマンスの点で半分まともである必要があります。

最後にもう 1 つ: 使用する並べ替えアルゴリズムが安定した並べ替えではない場合、値が等しいピクセルをビン間で移動することを多かれ少なかれランダム化します。これは、強度が等しい隣接ピクセルのクラスターの移動を防ぐのに役立ちます値。

于 2013-09-17T21:38:01.957 に答える