![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 14
|
Добрый день!
Нужно сделать инструмент подобный Magic Eraser Tool в Photoshop. Сам инструмент сделал с помощью BitmapData.threshold(). Но пока работает по конкретному коду цвета. Нужно сделать допуск по отношению к выбранному цвету. Но, к сожалению, нигде не могу найти алгоритм работы этого атрибута (Tolerance в фотошопе) ![]() Буду очень рад любой помощи.. Что читать, где смотреть... Спасибо большое! |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
А BitmapData.threshold() почему не как надо работает? Ну какой алгоритм - если разница между заданным цветом и цветом пиксела картинки меньше заданной (range), то пиксел подходит, выделяется, нет так нет. Как разницу считать? Считаешь покомпонентно, для каждого компонента берешь модуль, складываешь.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 14
|
Проблема именно с подсчетом range. И каким образом относится tolerance 0-255 к конкретному цвету. Т.е. не достаточно теоретической базы для создания формулы, чтоб данные передать в threshold(). Буду очень рад ссылкам на теорию, где это описывается, дабы подучить этот материал... Т.к. ищу не понимаю, что...
Спасибо. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
http://ru.wikipedia.org/wiki/%D0%A4%...87%D0%B8%D1%8F
http://www.compuphase.com/cmetric.htm Но я бы советовал не париться, а сделать тупо либо dist = abs(R1-R2) + abs(G1-G2) + abs(B1-B2) либо dist = max(abs(R1-R2), abs(G1-G2), abs(B1-B2)) - 0 - 255 отлично ложится на такую метрику. Я чую, что её используют вообще) Тут (R1, G1, B1) -1-й цвет в RGB, если не понятно.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 14
|
Цвет хранится в таком формате: 0x00RRGGBB, где:
00 - прозрачность RR - доля красного 0-255 GG - доля зеленого 0-255 BB - доля синего 0-255 При разных составляющих этих трех компонентов получается цвет. Это понятно. Если tolerance 0 - то это один оригинальный цвет. Если например 1, то как подсчитать диапазон? Т.е. по Вашим словам нужно взять модуль... Ну мне к сожалению не понятно как ![]() Добавлено через 1 минуту О! Отлично! Буду разбираться! Огромнейшее спасибо за помощь! |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
В моих формулах tolerance - это dist.
Диапазон - все цвета 0xR2G2B2, удовлетворяющие условию tolerance >= max(abs(R1-R2), abs(G1-G2), abs(B1-B2)) 0xR1G1B1 - цвет, диапазон возле которого считаем. Как-то так.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|