Домой WPF Создание гистограммы изображения с помощью C # и WPF: Справочник по C#

Создание гистограммы изображения с помощью C # и WPF: Справочник по C#

962
0


      В этой инструкции, рассмотрим как построить RGB гистограммы в C # и как отобразить их, используя не более, чем стандартные WPF UIElementПолигон если быть более точным.
      Для вычисления значений гистограммы мы будем полагаться на библиотеки обработки изображений AForge.NET. Нам понадобятся библиотеки и ссылки AForge.dll , AForge.Imaging.dll и AForge.Math.dll, код гистограммы рассчитывается очень просто:

System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(imageFilePath);
// Luminance
ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp);
int[] luminanceValues = hslStatistics.Luminance.Values;
// RGB
ImageStatistics rgbStatistics = new ImageStatistics(bmp);
int[] redValues = rgbStatistics.Red.Values;
int[] greenValues = rgbStatistics.Green.Values;
int[] blueValues = rgbStatistics.Blue.Values;

      Гистограммы результатов расчета хранятся в одномерных целочисленных массивах которые в дальнейшем будут использованы в качестве основы для отображения гистограмм.
      Гистограмма сглаживания, пригладить в простых терминах, состоит на удаление шипов без ущерба для общего смысла гистограммы. Лучше проиллюстрировать это на конкретном примере:

      Есть несколько подходов для сглаживания гистограммы, но для наглядности я буду использовать простой алгоритм из ответов переполнения стека . Вот код C #:

private int[] SmoothHistogram(int[] originalValues)
{
int[] smoothedValues = new int[originalValues.Length];
double[] mask = new double[] { 0.25, 0.5, 0.25 };
for (int bin = 1; bin < originalValues.Length - 1; bin++)
{
double smoothedValue = 0;
for (int i = 0; i < mask.Length; i++)
{
smoothedValue += originalValues[bin - 1 + i] * mask[i];
}
smoothedValues[bin] = (int)smoothedValue;
}
return smoothedValues;
}
ПРИМЕЧАНИЕ: С последней версией AForge (2.2.4 на момент написания этой статьи) разница между сглаженной и не сглаженной гистограммы не так заметно, как в приведенном выше примере. Алгоритм сглаживания включен для использования с более старыми версиями библиотеки или с различными библиотеками, которые не обеспечивают возможность выравнивания.

После компиляции и запуска, главное окно будет выглядеть следующим образом:

Ссылка для скачивания примера: Rusfolder.net

ЧИТАТЬ ТАКЖЕ:  Создание скриншота: Справочник по C#

Ссылка для скачивания библиотек AForge: Rusfolder.net

Создание гистограммы изображения с помощью C # и WPF: Справочник по C#

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь