private void btn_equalization_Click(object sender, RoutedEventArgs e)
{
if (_primeBitmap == null)
{
MessageBox.Show("请选择图片");
return;
}
var numPixel = new int[256];
for (var i = 0; i < _primeBitmap.Height; i++)
{
for (var j = 0; j < _primeBitmap.Width; j++)
{
int x = _primeBitmap.GetPixel(j, i).R;
numPixel[x]++;
}
}
for (var i = 0; i < 256; i++)
{
Console.WriteLine(numPixel[i]);
}
var probPixel = new double[256];
for (var i = 0; i < 256; i++)
{
probPixel[i] = numPixel[i] / (_primeBitmap.Height * _primeBitmap.Width * 1.0);
}
var cumuPixel = new double[256];
for (var i = 0; i < 256; i++)
{
if (i == 0)
{
cumuPixel[i] = probPixel[i];
}
else
{
cumuPixel[i] = cumuPixel[i - 1] + probPixel[i];
}
}
for (var i = 0; i < 256; i++)
{
cumuPixel[i] = cumuPixel[i] * 256 + 0.5;
Console.WriteLine(@"pixel is :" + cumuPixel[i]);
}
for (var i = 0; i < _primeBitmap.Height; i++)
{
for (var j = 0; j < _primeBitmap.Width; j++)
{
int x = _primeBitmap.GetPixel(j, i).R;
var value = (int)cumuPixel[x];
if (value > 255)
{
value = 255;
}
var color = Color.FromArgb(value, value, value);
_primeBitmap.SetPixel(j, i, color);
}
}
//for (int i = 0; i < prime_bitmap.Height; i++)
//{
// for (int j = 0; j < prime_bitmap.Width; j++)
// {
// System.Drawing.Color color = prime_bitmap.GetPixel(j, i);
// MessageBox.Show(color.ToString());
// }
//}
show_pic();
}