Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с изображениями 
:(
    Опции темы
adom
Дата 15.6.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Программа по изображению на компе должна подбирать краски для создания этого изображения в реальности из базы красок. База красок ограничена. База занесена в комп, каждому цвету соответствует некоторое значение RGB, на компе цветов больше, чем в базе, мне надо чтобы близкие цвета прога автоматически заменяла цветами из базы. Подскажите есть ли такие проги или какие-нить стандартные средства реализации на каком-либо языке (php, например). И вообще в каком направлении посоветуете искать?
PS если вы считаете, что я написал не в ту тему (форум) буду благодарен если подскажете более подходящий


Это сообщение отредактировал(а) adom - 15.6.2007, 13:44
PM MAIL   Вверх
bsa
Дата 15.6.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Не очень понятно, тебе готовая программа нужна или сам написать должен?
Если сам, то все очень просто:
Берешь цвет и поочередно сравниваешь его с цветами из базы. В качестве результата сравнения получаешь три модуля разности (deltaR, deltaG, deltaB). Затем, находишь наименьшее отличие (имей в виду, что человеческий глаз лучше всего различает оттенки зеленого, а хуже всего - оттенки синего, поэтому критерий сравнения должен это учитывать). И если это наименьшее отличие меньше какого-то порогового значения, то можешь вместо этого цвета подставлять соответствующий цвет из базы.
PM   Вверх
adom
Дата 15.6.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



BSA: Спасибо, это наверное подойдёт, хотелось бы поподробней узнать о том какие цвета как воспринимаются, но это, наверное уже не сюда.
Прогу надо делать мне. Но если подобные есть, то хотелось бы их посмотреть
PM MAIL   Вверх
Pikon
Дата 15.6.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.6.2007

Репутация: нет
Всего: нет



Цитата

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

Скажем фактор света равен 1 (Y), то зелёного в нём 0,587, красного 0,299, а синего 0,114. Как уже сказали зелёный вопринимается глазом лучше всего, синий хуже всего, соотношения видны их цифр.
PM MAIL   Вверх
adom
Дата 15.6.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Pikon: Понятно сколько где какого цвета, а вот какой коэффициент при расчёте брать для зелёного, а какой для остальных - не понятно
PM MAIL   Вверх
Pikon
Дата 15.6.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.6.2007

Репутация: нет
Всего: нет



Это восприятие имеется ввиду. Зелёный в 3 раза светлее синего, если топорно. Я тут картинку нашёл, она наглядна мне кажется. Красный 0 градусов на графике, синий 240 и зелёный 120

user posted image

Это сообщение отредактировал(а) Pikon - 15.6.2007, 15:13
PM MAIL   Вверх
bsa
Дата 16.6.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(adom @ 15.6.2007,  14:57)
Pikon: Понятно сколько где какого цвета, а вот какой коэффициент при расчёте брать для зелёного, а какой для остальных - не понятно

Все просто. Для начала вычисляешь отличие текущего цвета от базового:
Код
colorDiff = 0.587 * fabs(Base.G - Color.G) + 0.299 * fabs(Base.R - Color.R) + 0.114 * fabs(Base.B - Color.B);

Затем перебором находишь базовый цвет, отличие (colorDiff) которого минимально. А затем сравниваешь его с каким-то числом, задающим допустимую погрешность. И если colorDiff меньше этого числа, то можно считать, что исходный цвет можно заменить базовым.

Кстати, "набор красок" называется палитрой.

Ты случаем, не программу палитризации (перевод из true color в indexed color) писать собрался? В этом случае могу посоветовать NeuQuant - нейронная сеть для перевода картинок в палитру. Работает лучше Photoshop'а. Она используется в некоторых свободных графических библиотеках, например, FreeImage.
Кстати, в нее встроен оптимизированный алгоритм, позволяющий переводить картинку в палитровую. Рекомендую.
PM   Вверх
adom
Дата 16.6.2007, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



bsa,  спасибо огромное, то что надо, кстати можно ссылку на источник откуда взята формула? И на другие источники где этот вопрос разобран. Я в программировании новичок, знаю только основы, посоветуйте, пожалуйста, что лучше почитать о работе С\С++ с графикой (цветами).
Pikon, спасибо, ссылку дайте, пожалуйста, откуда катинка.
Ещё мне надо будет использовать палитру дл я выбора цветов, такую как в fotoshop или paint (когда мышкой указываешь нужный цвет) как её создавать?


Это сообщение отредактировал(а) adom - 16.6.2007, 07:17
PM MAIL   Вверх
adom
Дата 16.6.2007, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Цитата(bsa @  16.6.2007,  00:30 Найти цитируемый пост)
Ты случаем, не программу палитризации (перевод из true color в indexed color) писать собрался? В этом случае могу посоветовать NeuQuant - нейронная сеть для перевода картинок в палитру.

Я собираюсь делать то, что в начале описал: палитризация, но по заранее заданным цветам, эти цвета не распределены равномерно по палитре, а берутся из базы красок, которая предварительно создаётся
PM MAIL   Вверх
bsa
Дата 16.6.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



база красок - это и есть палитра. Например, в ней может быть 256 цветов, а может и 16.
Алгоритм перевода RGB - RGB из палитры [базы красок] есть в программе, которую я тебе дал. В принципе, никто не мешает использовать формулу, которую я написал (ее я придумал, поэтому ссылку дать не могу). Но алгоритм в neuquant 100% работает.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.