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

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

15.09.2014, 18:49. Просмотров 1211. Ответов 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
Миниатюры
Создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета   Создать гистограмму цветов из цветов загруженного изображения и искать с помощью нее пиксели одинакового цвета  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2014, 18:49
Ответы с готовыми решениями:

Генерация элементарного изображения из 4 разных цветов
Нужно как-то генерировать элементарные изображения jpg, разрешения, допустим...

Как определить количество цветов в подгружаемом рисунке и наиболее частые цвета
Заранее благодарен...

Требуется разработать проект флага, имеющего три горизонтальные полосы разного цвета. Набор допустимых цветов указан в командной ст...
Кто решит - огурец :) Требуется разработать проект флага, имеющего три...

Как создать палитру цветов и как узнать выбранный цвет
Подскажите как можно реализовать такую задачу, пользователь выбирает палитру...

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

7
Ev_Hyper
Заблокирован
15.09.2014, 18:59 #2
factura122, Гистограмма изображения по компонентам RGB
Цитата Сообщение от factura122 Посмотреть сообщение
Ниже приведены скрины работы программы, необходимо добиться такого же результата при помощи гистограммы цветов
и как вы себе это представляете?
0
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
15.09.2014, 19:15  [ТС] #3
Если бы в полной мере представлял сюда не обратился бы)
Думаю что сперва нужно разбить изображение на пиксели и все цвета выстроить в гистограмме, затем в гистограмме найти цвета, начинать нужно с тех которые наиболее часто повторяются. Самое серьезная проблема для меня это поиск
0
Ev_Hyper
Заблокирован
15.09.2014, 19:21 #4
factura122, как построить гистограмму, в предыдущем посте я оставил ссылку на тему, где есть готовый код, но я спрашивал о другом:
Предположим, вы построили гистограмму. Это же просто картинка, показывающая частотность. Что вы будете с ней делать?
0
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
15.09.2014, 19:31  [ТС] #5
Под гистограммой имелось в виду не вывод картинки с частотностью а к примеру массив в котором содержаться пиксели одного цвета, например белый, желтый и черный. Допустим что черных пикселей больше чем всех остальных, значит с ними работаем в первую очередь.Вторыми по количеству к примеру скажем будут белые пиксели, значит работаем с ними, а уже затем с желтыми как с самыми малочисленными
0
XRoy
861 / 711 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
15.09.2014, 19:42 #6
factura122,
Ну так картинка и строится по массиву, у вас будет 3 массива для каждого основного цвета, значения их и будут частотой.
0
Ev_Hyper
Заблокирован
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
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
15.09.2014, 19:51  [ТС] #8
Я решил испробовать такой вариант, создать список List, загрузить в него все цвета,отсортировать,подсчитать, и при помощи этого списка осуществлять поиск

Добавлено через 2 минуты
Да мне всего лишь нужно подсчитать количество одинаковых пикселей, к чему эти страсти с разбиением пикселей на красный, зеленый и синий
0
15.09.2014, 19:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2014, 19:51

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

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

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


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

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

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