![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.03.2011
Сообщений: 9
|
![]()
В окончательном варианте программа должна проводить анализ изображения и выводить долю каждого цвета по отношению к размеру. Последнее - не проблема, а вот сам анализ...
В коде два варианта, один просто диапазоны, другой по условиям. Незакоменнтированный как-то работает, во-втором вообще максимум 1 пиксель находит. Подозреваю, что проблема в диапазонах, но как их сузить? Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Как вариант, создать 3(три) массива, длиной 0..255 (256 всего) для каждого цвета, пройтись по изображению и увеличивать каждый цвет при встрече. А потом посчитать процент труда не составит.
//ИМХО Хотя, что-то мне подсказывает, что бред полный написал. Последний раз редактировалось psycho-coder; 28.03.2011 в 16:57. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.03.2011
Сообщений: 9
|
![]()
Ах, если бы все было так просто. Если бы нужно было только красный, синий и зеленый найти - тогда ок. Но тут-то надо именно цвета такие найти (из короткого варианта психодиагностики по Люшеру), причем учесть возможные оттенки ><
И проблема, как я выше уже писал - не проценте - его-то просто подсчитать будет, а в самом распознавании цветов. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
Ну вот вроде ты вытаскиваешь код цвета
Код:
Код:
![]() |
![]() |
![]() |
![]() |
#5 |
Регистрация: 08.03.2011
Сообщений: 9
|
![]()
Видимо-таки да.) Суть задачи я вроде уже объяснял, но попробую яснее расписать.) В общем человек что-то рисует на листке, а психолог на основании рисунка определяет, в каком состоянии находится человек. Там, допустим, черный - угнетенное состояние, зеленый - жизнелюбие, упорство, и так далее.
Программа призвана автоматизировать этот процесс и свести к минимуму количество ошибок. Вся проблема в том, что в отсканированном рисунке не будет точно тех цветов, которые используются в эталонном варианте теста Люшера (я использую его сокращенный вариант, как наиболее удобный), а будут их оттенки. Соответственно мне нужно заставить программу их распознавать. Задание диапазонов, как выше - дает слишком большой разброс значений. По логическим условиям (которые закомментированы), и к которым, кстати, относится и код cb:= GetBValue(c); cg:= GetGValue(c); cr:= GetRValue(c); - вообще никак не считает. Ваш вариант подходил бы, если бы необходимо было получить фактическое распределение цвета, а не видимое =) Вот как-то так. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Суть задачи более менее понятна. Таким "лобовым" методом Вам её решить не удасться. Для разных рисунков оттенки и яркость будут разными.
Диапазрны сдесь не помогут. Для решения надо приводить цвета к "стандартному" виду. Для этого необходимо, чтобы красный был красны, а зелёный - зелёным. Т.е. хотя бы одна из трёх составляющих была равна нулю. Яркость всегда 256. Для этого надо использовать как минимум три метода. Корреляционный анализ, регрессионный анализ (или аппроксимацию) и возможно спектральный анализ. В общем задачка не так проста, как кажется.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#7 |
Регистрация: 08.03.2011
Сообщений: 9
|
![]()
Минуточку. Разве нельзя подобрать диапазоны, внутри которых можно однозначно сказать - вот это оттенок красного, а это - фиолетового?
p.s. кстати, была идея преобразовывать в gif, уменьшая количество цветов и уже в уменьшенной палитре искать - может быть в этом направлении покопать? Ведь стопроцентная точность тут не нужна. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
а зачем тогда в gif?
кто вам мешает самим написать ваши диапазоны? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 08.03.2011
Сообщений: 9
|
![]()
Чтобы уменьшить возможные варианты оттенков.
А диапазоны - в них-то и проблема. Как их подобрать?) |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
в паинте откройте палитру.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ABC анализ | aliya_n_g | Microsoft Office Excel | 7 | 14.01.2011 08:48 |
выпуклый анализ | Жанна__90 | Помощь студентам | 2 | 12.01.2011 22:59 |
АВС-анализ. | abdumanon | Microsoft Office Excel | 8 | 14.09.2010 08:32 |
Сортировка+Анализ | женя2010 | Microsoft Office Excel | 2 | 23.04.2010 12:06 |
Попиксельный доступ к TJPEGImage | Serge_Bliznykov | Общие вопросы Delphi | 4 | 29.09.2009 22:57 |