![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Есть картинка, на ней есть область, залитая красно-бордовым градиентом.
Беру цвет нескольких красных пикселей: 0x942518 0x924D46 0x942518 0x824D46. Числа естественно получаются разные, но все эти точки красного оттенка. Глазами я это конечно вижу. Но нужно это как-то запрограммировать. Грубо говоря, нужно написать метод boolean isRed(int color) или даже по другому byte compareColor(int currentColor, int pattern1, int pattern2) сравнить цвет, и определит, к каком образцу он ближе. Т.е. сравниваем пурпурный с красным и зеленым, и получаем 1, т.к. пурпурынй ближе к красному, чем к зеленому. Или сравнить цвет с образцом с каким-то коэффициентом "похожести": boolean isColorsSimilar(int currentColor, int baseColor, int accuracy), где accuracy - необходимая точность сравнения. Как сравнивать цвета? Интересует не какое-то готовое решение, а именно сам принцип сравнения. Это сообщение отредактировал(а) Temdegon - 19.2.2011, 21:02 |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Кажется, можно отдельно посчитать разницу каждого спектра. Если эта разница выше установленного лимита хотя бы в одном спектре - вернуть false.
Например: красный эталон - FF 00 00 на входе для сравнения: EF 00 00 лимит "похожести": A0 Вот и делаем:
придумал только что, если неправильно - пожалуйста, сильно не пинайте -------------------- ![]() ![]() |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Мне тоже очень интересно. Но при чем здесь Java? Вопрос явно просится в Алгоритмы
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| VictorTsaregorodtsev |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: нет Всего: 8 |
Temdegon, если нужен сам принцип сравнения - то почему не взять обычное расстояние между векторами из трех компонент (R,G,B-компоненты)? Позволит как напрямую сравнивать близость цветов между собой, так и ввести порог по похожести.
Если задача на самом деле стоит не так, как она описана - то опишите задачу нормально. Ибо и для задачи квантования палитры (чтобы картинку представить меньшим числом цветов), и для задачи сегментации изображения, и для других задач, основанных на объединении цветов или пикселов в наборы, хороших (точных, быстрых и т.д.) методов разработано много. Тогда, действительно, тема плачет по разделу "алгоритмы". |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |