public Bitmap HistoramEqualization(Bitmap OriginalImage)
{
Bitmap image = OriginalImage;
int[] histogram = this.Histogram(image);
int pixelCount = image.Width * image.Height;
for (int m = 0; m < image.Width; m++)
{
for (int n = 0; n < image.Height; n++)
{
Color pixel = image.GetPixel(m, n);
int gs = (int)((pixel.R * 0.3) + (pixel.G * 0.59) + (pixel.B * 0.11));
Double PSum = 0;
for (int i = 0; i < gs + 1; i++)
{
PSum += Convert.ToDouble(histogram[i]) / pixelCount;
}
int newgs = Convert.ToInt16(Math.Floor(255 * PSum));
image.SetPixel(m, n, Color.FromArgb(255, newgs, newgs, newgs));
}
}
return image;
}