Нормировка гистограммы изображения - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д