Справочник по C#

    Исходники по языку программирования CSharp

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

    /
    /
    /
    154 Views


          В этой инструкции, рассмотрим как построить 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

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

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

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9