画像に作用するフィルターを開発しています。このフィルターを画像に適用した後、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# で何ができますか?