| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Выбор основных цветов картинки. |
| Автор: Shar_nir 15.10.2007, 16:30 |
| Появилась такая проблема: Необходимо выделить из картинки описанной как TBitmap основные составляющие цвета... Создать палитру... Причем колличество цветов паллитры может регулироваться пользователем.... Основная проблема в том что если делать банально по числу наибольших повторений цвета пикселя, то получается массив забит оттенками того цвета которого на картинке больше всего... Таким образом пропадает некотарая часть спектра рисунка... На фоне синего неба маленький зелёный лист... Все цвета голубого либо синего оттенков... зелёный ушёл в нибытие... Если кто знает как туда программно внести "зелёный" напишите...Плиз... Срочно надо... |
| Автор: Alexeis 16.10.2007, 10:17 |
| Предлагаю сделать для каждого цвета свой вес. Вес тем больше чем больше этого цвета в картинке и тем меньше, чем больше рядом цветов близких оттенков. И добавлять в палитру только цвета с наибольшим весом. |
| Автор: Shar_nir 16.10.2007, 17:22 | ||||
Задать вес. Такая идея приходила, но когда стал реализовывать получилось так:
получается вель массив забит к примеру синим цветом.... вот только не делал
Вот если честно не представляю как это можно сделать... Как определить программно принадлежность оттенка к тому или инному цвету... Если есть стандартный алгоритм, то я его наверное не знаю... решение задачи в моём представлении выглядит так:
вот пункт три это и не знаю как сделать отсев!!! Просто с цветом работаю можно сказать в первый раз... |
| Автор: Shar_nir 16.10.2007, 21:53 |
| ну в принципе да..... только как только начинаю писать, ничего не получается.... может руки не от туда растут.... Всё поятно, просто, логично, но не получается.... пасибо за наводку.... буду ломать голову(ладно бы себе) |
| Автор: Alexeis 17.10.2007, 08:51 |
Я бы сделал так. Сначала сделал массив всех цветов. Затем для каждого цвета прошелся по всем цветам палитры и проверил если нашел цвет отличающийся всего на 1 единицу по одной из составляющей то цвету -10 рейтинга если на 2е то -7 на 3 -5 и так например до 10ти если отличается на 10 то -1 рейтинга. За каждые 10 повторений цвета в картинке можно давать например по 1му очку рейтинга. После этого всего сортируем цвета по рейтингу в порядке убывания. Берем только первые 256 цветов с максимальным рейтингом. |
| Автор: Shar_nir 17.10.2007, 12:40 |
| какого размера делать первоначальный массив? по всей видимости по колличеству цветов картинки???? как узнать это колличество??? |
| Автор: Alexeis 17.10.2007, 12:54 |
| Сначала выделить например на 2000, если не поместиться, то удлинить на 100% и так дальше удлинять. |