1

画像に作用するフィルターを開発しています。このフィルターを画像に適用した後、255 を超えるか 0 未満の RGB 値が得られます。このピクセルをそれぞれ 255 と 0 に飽和させることはできますが、画像は良くありません。

ピクセル ヒストグラムを正規化する方法を見つけたいので、正規化後に RGB の値が 0,255 の間になるようにします。

コードは次のとおりです。

  double max = outputPixel.Cast<double>().Max();
  double targetMax = 300;
  double min = outputPixel.Cast<double>().Min();
  double targetMin = -50;
  for (int c = 0; c < 3; c++)
  {
       for (int i = 0; i < outputPixel.GetLength(0); i++)
       {
           for (int j = 0; j < outputPixel.GetLength(1); j++)
           {
                outputPixel[i, j, c] = wb[c] * (((outputPixel[i, j, c] - min) * (targetMax-targetMin) / (max - min))+targetMin);
                    outputPixel[i, j, c] = Saturate(outputPixel[i, j, c]);
                }
            }

        }
     }

次のように定義された outputPixel

  private static double[, ,] outputPixel;

次のように初期化します。

    outputPixel = new double[inputImage.Width, inputImage.Height, 3];

問題は:

ヒストグラムの正規化を行わないと、暗い領域に斑点状のノイズが多くなり、画像の大部分が白っぽくなります。

ヒストグラムの正規化を使用すると、白い領域 (主に雲の領域) に赤い色合いが見えます。

1 つの解決策は、HSB でヒストグラムを正規化することですが、RGB の値が 255 (0) よりも大きい (または小さい) ため、HSB の内部 C# 計算を使用できません。

C# で何ができますか?

4

0 に答える 0