public Bitmap LogaritmicScaling(Bitmap OriginalImage)
{
Bitmap img = new Bitmap(OriginalImage.Width, OriginalImage.Height);
int[,] r = RMatrix(OriginalImage);
int[,] g = GMatrix(OriginalImage);
int[,] b = BMatrix(OriginalImage);
Double maxR = Convert.ToDouble(r.Cast<int>().Max());
Double maxG = Convert.ToDouble(g.Cast<int>().Max());
Double maxB = Convert.ToDouble(b.Cast<int>().Max());
for (int i = 0; i < OriginalImage.Width; i++)
{
for (int j = 0; j < OriginalImage.Height; j++)
{
Double aR = 255 / Math.Log10(1 + maxR);
int valueR = (int)(aR * Math.Log10(1 + OriginalImage.GetPixel(i, j).R));
Double aG = 255 / Math.Log10(1 + maxG);
int valueG = (int)(aG * Math.Log10(1 + OriginalImage.GetPixel(i, j).G));
Double aB = 255 / Math.Log10(1 + maxB);
int valueB = (int)(aB * Math.Log10(1 + OriginalImage.GetPixel(i, j).B));
Color p = Color.FromArgb(255, valueR, valueG, valueB);
img.SetPixel(i, j, p);
}
}
return img;
}