Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Замещение одного цвета другим |
Автор: UnixBeginner 30.6.2006, 08:15 |
Есть объект закрашенный одним каким-то цветом. Человек кликает в центре этого объекта и программа должна заменить тот цвет, по которому щелкнул пользователь другим (и так по всей фигуре). ТОлько проблема заключается в том, что для человека это все один цвет, а для компа - нет. Ведь даже если он незначительно отличается, то он уже не совпадает с тем, который является базовым для сравнения. Поэтому и возникает вопрос, а как можно определить границы цвета (диапазон параметров), одинакового для человека? Что-то типа "MagicWand" в Photoshop. |
Автор: drkot 30.6.2006, 12:14 |
Цвет трехкомпонентный RGB (0..255). Предположим пользователь кликнул по R(50)G(100)B(150). Предполощим Tolerance 10%. Тогда R=50+-5%=47..52 G=100+-5%=95..105 ..... Для всех цветов попавших в интервалы производим замену. Только коэффициенты для каждого компонента цвета свои, в зависимости от восприимчивости их глазом. |
Автор: UnixBeginner 30.6.2006, 20:11 |
Вроде бы при изменении любого из компонентов цвета при RGB меняется цвет, даже для восприятия человеком. Может быт проще использовать не RGB, а HSV или HLS. Там вроде бы можно менять насыщенность или светлость. Правда могут быть косяки с тоном, особенно у белого цвета и черного. Я так сделал, но может быть есть какие-либо книги или статьи по данному вопросу. Я правда ничего не нашел. |
Автор: maxim1000 1.7.2006, 01:23 |
можно попробовать собрать статистику возле указанной точки и использовать её для генерации правила для решения, принадлежит ли точка фигуре или нет... (правда, для этого нужна уверенность, что точка достаточно далеко от границы) |