![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| adom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Программа по изображению на компе должна подбирать краски для создания этого изображения в реальности из базы красок. База красок ограничена. База занесена в комп, каждому цвету соответствует некоторое значение RGB, на компе цветов больше, чем в базе, мне надо чтобы близкие цвета прога автоматически заменяла цветами из базы. Подскажите есть ли такие проги или какие-нить стандартные средства реализации на каком-либо языке (php, например). И вообще в каком направлении посоветуете искать?
PS если вы считаете, что я написал не в ту тему (форум) буду благодарен если подскажете более подходящий Это сообщение отредактировал(а) adom - 15.6.2007, 13:44 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Не очень понятно, тебе готовая программа нужна или сам написать должен?
Если сам, то все очень просто: Берешь цвет и поочередно сравниваешь его с цветами из базы. В качестве результата сравнения получаешь три модуля разности (deltaR, deltaG, deltaB). Затем, находишь наименьшее отличие (имей в виду, что человеческий глаз лучше всего различает оттенки зеленого, а хуже всего - оттенки синего, поэтому критерий сравнения должен это учитывать). И если это наименьшее отличие меньше какого-то порогового значения, то можешь вместо этого цвета подставлять соответствующий цвет из базы. |
|||
|
||||
| adom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
BSA: Спасибо, это наверное подойдёт, хотелось бы поподробней узнать о том какие цвета как воспринимаются, но это, наверное уже не сюда.
Прогу надо делать мне. Но если подобные есть, то хотелось бы их посмотреть |
|||
|
||||
| Pikon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.6.2007 Репутация: нет Всего: нет |
Скажем фактор света равен 1 (Y), то зелёного в нём 0,587, красного 0,299, а синего 0,114. Как уже сказали зелёный вопринимается глазом лучше всего, синий хуже всего, соотношения видны их цифр. |
|||
|
||||
| adom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Pikon: Понятно сколько где какого цвета, а вот какой коэффициент при расчёте брать для зелёного, а какой для остальных - не понятно
|
|||
|
||||
| Pikon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.6.2007 Репутация: нет Всего: нет |
Это восприятие имеется ввиду. Зелёный в 3 раза светлее синего, если топорно. Я тут картинку нашёл, она наглядна мне кажется. Красный 0 градусов на графике, синий 240 и зелёный 120
![]() Это сообщение отредактировал(а) Pikon - 15.6.2007, 15:13 |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Все просто. Для начала вычисляешь отличие текущего цвета от базового:
Затем перебором находишь базовый цвет, отличие (colorDiff) которого минимально. А затем сравниваешь его с каким-то числом, задающим допустимую погрешность. И если colorDiff меньше этого числа, то можно считать, что исходный цвет можно заменить базовым. Кстати, "набор красок" называется палитрой. Ты случаем, не программу палитризации (перевод из true color в indexed color) писать собрался? В этом случае могу посоветовать NeuQuant - нейронная сеть для перевода картинок в палитру. Работает лучше Photoshop'а. Она используется в некоторых свободных графических библиотеках, например, FreeImage. Кстати, в нее встроен оптимизированный алгоритм, позволяющий переводить картинку в палитровую. Рекомендую. |
||||
|
|||||
| adom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
bsa, спасибо огромное, то что надо, кстати можно ссылку на источник откуда взята формула? И на другие источники где этот вопрос разобран. Я в программировании новичок, знаю только основы, посоветуйте, пожалуйста, что лучше почитать о работе С\С++ с графикой (цветами).
Pikon, спасибо, ссылку дайте, пожалуйста, откуда катинка. Ещё мне надо будет использовать палитру дл я выбора цветов, такую как в fotoshop или paint (когда мышкой указываешь нужный цвет) как её создавать? Это сообщение отредактировал(а) adom - 16.6.2007, 07:17 |
|||
|
||||
| adom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Я собираюсь делать то, что в начале описал: палитризация, но по заранее заданным цветам, эти цвета не распределены равномерно по палитре, а берутся из базы красок, которая предварительно создаётся |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
база красок - это и есть палитра. Например, в ней может быть 256 цветов, а может и 16.
Алгоритм перевода RGB - RGB из палитры [базы красок] есть в программе, которую я тебе дал. В принципе, никто не мешает использовать формулу, которую я написал (ее я придумал, поэтому ссылку дать не могу). Но алгоритм в neuquant 100% работает. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |