Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм сравнения цветов?

13K
13 ноября 2009 года
Heart1ess
84 / / 26.04.2007
Дано: Набор пар цветов. Надо сравнить их на "схожесть"

847225 837225 -Цвета разные, как визуально так и символьно
9C982D 9B982D - только 2ой символ отличается и визуально цвета неотличить.

Собственно есть ли функции алгоритмы? Куда копать? работаю в AutoIt но это не важно.

Есть мысли идеи?:)
5
13 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Heart1ess
Дано: Набор пар цветов. Надо сравнить их на "схожесть"

847225 837225 -Цвета разные, как визуально так и символьно
9C982D 9B982D - только 2ой символ отличается и визуально цвета неотличить.

Собственно есть ли функции алгоритмы? Куда копать? работаю в AutoIt но это не важно.

Есть мысли идеи?:)


Цвета даны в формате RGB.
Для понятности: [COLOR=Blue]9C[/COLOR][COLOR=SeaGreen]98[/COLOR][COLOR=Red]2D
[COLOR=Black]Можно сказать, что цвет - это точка в трехмерном пространстве. Вот и оценивайте, насколько удалены две точки друг от друга: если расстояние между точками меньше некоторого порогового значения, можно считать, что цвета неотличимы.[/COLOR]
[/COLOR]

13K
13 ноября 2009 года
Heart1ess
84 / / 26.04.2007
Так про точку в 3D понял.
А как с 16тиричной системой быть?
Сравнивать ёё надо переводя в 10ку а потом обратно или... есть проще методы?

Просто сравнение это есть if abs(a-b)<const then ....
вот эти A и B как получить?
274
13 ноября 2009 года
Lone Wolf
1.3K / / 26.11.2006
а в каком виде задан изначально значения цвета? строковая переменная? или целочисленая?
5
13 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Heart1ess
Так про точку в 3D понял.
А как с 16тиричной системой быть?
Сравнивать ёё надо переводя в 10ку а потом обратно или... есть проще методы?

Просто сравнение это есть if abs(a-b)<const then ....
вот эти A и B как получить?

Вам нужно получить компоненты цвета. Каждая компонента - один байт, записаный в 16ричной системе счисления. Не позорьтесь, алгоритм чтения числа, записанного в 16ричной СС есть в любой стандартной библиотеке любого языка программирования.

Формула у вас неправильная. Расстояние между точками расчитывается не так (формула "длины вектора"):

d = sqrt( sqr(p1.r - p2.r) + sqr(p1.g - p2.g) + sqr(p1.b - p2.b) )

13K
13 ноября 2009 года
Heart1ess
84 / / 26.04.2007
Цитата: Lone Wolf
а в каком виде задан изначально значения цвета? строковая переменная? или целочисленая?



Изначально она получается функцией

 
Код:
_PixelGetColor_GetPixel($vDC,$x,$y,$hDll)

Это функция берёт цвет из потока $vDC на координатах $x $y и возврощает - C26B0B (к примеру)
13K
13 ноября 2009 года
Heart1ess
84 / / 26.04.2007
Я же почему и спросил: если бы допустим я цвет разделил по координатам x y z то моя формула как a1-a2 аля x1-x2 и так по всем координатам очень даже была бы к месту.

Ммм... я просто думал, что-то интереснее ;)
303
14 ноября 2009 года
makbeth
1.0K / / 25.11.2004
Цитата: Heart1ess

847225 837225 -Цвета разные, как визуально так и символьно
9C982D 9B982D - только 2ой символ отличается и визуально цвета неотличить.


Если эти цвета в формате RGB, то визуально их не отличишь. Так что, ИМХО, что-то ты лукавишь :)

13K
25 ноября 2009 года
Heart1ess
84 / / 26.04.2007
Up.
Так с цветами разобрался.
Теперь всё тоже и так же, только как получить массив:
допустим есть 91982A, а надо получить массив a=[9,1,9,8,2,11]
Только средствами AutoIt я просто не могу найти функции...

Просто дело дошло до оптимизации, и сравнивать вектора не так акутально как сравнивать массивные блоки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог