Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
1

Создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета

15.09.2014, 18:49. Просмотров 2460. Ответов 7
Метки нет (Все метки)


Необходимо создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета. Нужно переделать под нее вот этот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  private void button4_Click(object sender, EventArgs e)
        {
            button2_Click(sender, e);
            DisableButtons();
            Bitmap b = new Bitmap(pictureBox1.Image);
            //progressBar1.Maximum = b.Height - 1;
            int[] m = new int[b.Height * b.Width];
            for (int y = 0, i = 0; y < b.Height; y++)
                for (int x = 0; x < b.Width; x++, i++)
                    m[i] = b.GetPixel(x, y).ToArgb();
            Array.Sort(m);
            Array.Reverse(m);
 
            Layers.Clear();
            Layers2.Clear();
            Bitmap L2 = new Bitmap(b.Width, b.Height);
            for (int i = 0; i < m.Length; )
            {
                Bitmap L = new Bitmap(b.Width, b.Height);
                int mc = m[i];
                Color Lc = Color.FromArgb(mc);
                for (int y = 0; y < b.Height; y++)
                    for (int x = 0; x < b.Width; x++)
                    {
                        int c = b.GetPixel(x, y).ToArgb();
                        if (c == mc || (checkBox2.Checked && c < mc))
                        {
                            L.SetPixel(x, y, Lc);
                            L2.SetPixel(x, y, Lc);
                        }
                    }
                Layers.Add(L);
                Layers2.Add(L2);
                L2 = (Bitmap)L2.Clone();
                for (; i < m.Length && m[i] == mc; i++) ;
            }
            numericUpDown1.Maximum = Layers.Count;
            numericUpDown1.Value = Layers.Count/2+1;
            //progressBar1.Value = y;
            EnableButtons();
        }
Здесь происходит поиск одинаковых пикселей и вывод цвета по контуру
Ниже приведены скрины работы программы, необходимо добиться такого же результата при помощи гистограммы цветов
0
Миниатюры
Создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета   Создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2014, 18:49
Ответы с готовыми решениями:

Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов....

Выделение общего цвета изображения (смешение цветов)
Есть фоновое изображение на рабочем столе. Нужно выделить из него один цвет.Ну допустим фоновое...

Построить гистограмму изображения, загруженного в PictureBox
Нужно построить гистограмму изображения, загруженного в PictureBox, по примеру Photoshop. Помогите...

Получить из множества цветов спектра новое множество путем исключения трех цветов
Задано множество, содержащее все цвета светового спектра от красного до фиолетового. ...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы С#-разработчиков‌
7
Заблокирован
15.09.2014, 18:59 2
factura122, Гистограмма изображения по компонентам RGB
Цитата Сообщение от factura122 Посмотреть сообщение
Ниже приведены скрины работы программы, необходимо добиться такого же результата при помощи гистограммы цветов
и как вы себе это представляете?
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
15.09.2014, 19:15  [ТС] 3
Если бы в полной мере представлял сюда не обратился бы)
Думаю что сперва нужно разбить изображение на пиксели и все цвета выстроить в гистограмме, затем в гистограмме найти цвета, начинать нужно с тех которые наиболее часто повторяются. Самое серьезная проблема для меня это поиск
0
Заблокирован
15.09.2014, 19:21 4
factura122, как построить гистограмму, в предыдущем посте я оставил ссылку на тему, где есть готовый код, но я спрашивал о другом:
Предположим, вы построили гистограмму. Это же просто картинка, показывающая частотность. Что вы будете с ней делать?
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
15.09.2014, 19:31  [ТС] 5
Под гистограммой имелось в виду не вывод картинки с частотностью а к примеру массив в котором содержаться пиксели одного цвета, например белый, желтый и черный. Допустим что черных пикселей больше чем всех остальных, значит с ними работаем в первую очередь.Вторыми по количеству к примеру скажем будут белые пиксели, значит работаем с ними, а уже затем с желтыми как с самыми малочисленными
0
867 / 717 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
15.09.2014, 19:42 6
factura122,
Ну так картинка и строится по массиву, у вас будет 3 массива для каждого основного цвета, значения их и будут частотой.
0
Заблокирован
15.09.2014, 19:47 7
factura122, если не хотите делать перебор сами, то используйте готовые библиотеки, например AForge:
path - путь к файлу
C#
1
2
3
4
            
Bitmap bmp = new Bitmap(path);
            ImageStatisticsHSL hslStatistics = new ImageStatisticsHSL(bmp);
            ImageStatistics rgbStatistics = new ImageStatistics(bmp);
получение:
C#
1
2
3
4
hslStatistics.Luminance.Values
rgbStatistics.Red.Values
rgbStatistics.Green.Values
rgbStatistics.Blue.Values
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
15.09.2014, 19:51  [ТС] 8
Я решил испробовать такой вариант, создать список List, загрузить в него все цвета,отсортировать,подсчитать, и при помощи этого списка осуществлять поиск

Добавлено через 2 минуты
Да мне всего лишь нужно подсчитать количество одинаковых пикселей, к чему эти страсти с разбиением пикселей на красный, зеленый и синий
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2014, 19:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Задать два перечислимых типа: первый - коды цветов, второй - названия цветов
Задать два перечислимых типа: первый коды цветов, второй - названия цветов. Вводится имя цвета,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.