![]() |
Критерий "похожести" цветов в цифровом формате
Дано:
массив colours с цветами (0x55ff55, 0xaadd55, 0x884545, 0xFFFF00 .... ); любой цвет myColour (например 0x00аа00) Найти: цвет в массива colours самый близкий (визуально наиболее похожий) на цвет myColour. Условие "самый близкий" я вижу как наибольшую вероятность не различить эти цвета глазом. Разбиение uint на значения каналов и сравнение этих значений наводят меня на печальные мысли :( Что же взять за критерий "похожести" цветов в цифровом формате? |
А почему на печальные мысли наводит?
|
Например цвет 888888 визуально ближе к aaaaaa чем к aa88aa, а если сравнивать каналы то получим что цвет 888888 ближе к aa88aa... как их правильно сравнить-то?
Код:
graphics.lineStyle(0, 0x000000, 0) |
Для начала переводить цвета в HSB, так как эта модель самая близкая к восприятию человека.
|
Отлично, сэнкс за наводку. :)
Вот нашёл, __etc написал полезную штуку на эту тему: http://dev.etcs.ru/blog/as2/ru/etcs/draw/colorobject/ |
выделить канал можно следующим способом
Код:
function RGB(color:Number) { |
Цитата:
Я не понял твоей коснтрукции. Делаю вот так Код:
var color:Number = 0xe4dddf; |
Цитата:
R.делаем сдвиг на 16(биты которые выходят за рамки убиваются), остается красный G.--сдвиг на 8 (восемь убиваются) ----оставлям побитовым "&" нужные 8 B.оставляем "&" нужные 8 |
2 miramax: Твоя функция в 25 раз медленнее работает и самое главное в некоторых случаев она будет работать не правильно (например если был задан цвет 0x00FFFF или 0x055555).
2 udaaff: я не понял смысла операции color >> 0 |
miramax, цвет строкой должен быть задан, numberToHEX у меня в классе возвращает строку, которая потом уже разбивается на подстроки.
Переделаю пару функций в ColorObject, чтобы быстрее работало… UPD: можешь обновиться, я там как раз переделал на битовое сравнение. |
| Часовой пояс GMT +4, время: 14:56. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.