Нормировка гистограммы изображения - C#
Формулировка задачи:
Необходимо выполнить нормировку гистограммы по оси Y. Изображение bmp, 8 битное, градации серого
максимальный элемент то я нашел, и понимаю смысл, но как реализовать не понятно
public Bitmap histo(Bitmap bmp, Chart chart11)
{
if (bmp != null)
{
Rectangle rect = new Rectangle(0, 0, Bmp.Width, Bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = Bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, Bmp.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = bmpData.Stride * Bmp.Height;
byte[] grayValues = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);
int[] R = new int[256];
for (int j = 0; j < grayValues.Length; ++j)
{
++R[grayValues[j]];
}
int max = 0;
for (int i = 0; i < R.Length; i++)
{
if (max < R[i]) max = R[i];
}
for (int s = 0; s < 256; s++)
{
chart11.Series[0].Points.Add(R[s]); //нормировка диаграммы по оси Y не выполнена!
}
Bmp.UnlockBits(bmpData);
chart11.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
chart11.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
chart11.ChartAreas[0].AxisX.LabelStyle.Enabled = false;
chart11.ChartAreas[0].AxisY.LabelStyle.Enabled = false;
chart11.ChartAreas[0].AxisY.Interval = 2500;
chart11.ChartAreas[0].AxisX.Interval = 10;
}Решение задачи: «Нормировка гистограммы изображения»
textual
Листинг программы
chart1.ChartAreas[0].AxisY.Maximum = max + 10;