Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Замещение одного цвета другим


Автор: 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
можно попробовать собрать статистику возле указанной точки и использовать её для генерации правила для решения, принадлежит ли точка фигуре или нет...
(правда, для этого нужна уверенность, что точка достаточно далеко от границы) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)