По дате Декабрь 3rd, 2011

Вычисление расстояния между двумя цветами

Задача: найти на изображении элементы, похожие на заданные.

Вроде всё просто - смотрим на изображение.. видим фигуру, и говорим “вот она”. Однако, как объяснить компьютеру, что этот цвет должен быть примерно похож на заданный? По сути - задача сводится к тому, чтобы найти цветовое расстояние между 2-мя точками.. Цвет точки можно представить в виде RGB-кода.. т.е. по сути, ищем расстояние в пространстве RGB  R1G1B1 и R2G2B2. Но есть “одно НО”…

Формула Цветового Отличия (англ. Color Difference Formula), она же Формула Цветового Различия, Цветоразность, или Цветовое Расстояние (расстояние между цветами, используется в колориметрии) — это математическое представление, которое позволяет вычислить различие между двумя цветами.

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

Т.е. если RGB представить в виде куба и искать декартово расстояние между двумя точками по 3-м координатам R,G и B “в чистом виде”, то можно “нарваться” на странные совпадения, т.к. иногда при небольшом расстоянии цвета выглядят совершенно по-разному.

Для этого существует цветовое пространство XYZ, полученное в результате исследований: что именно видит глаз человека… При этом вводится точка белого цвета (d50).

После этого появилась ещё одна система LAB - в ней изменение цвета происходит линейно (если линейно изменять RGB - о плавности речи быть не может.. при этом возможны скачки).

Однако, для определения положения заранее известной фигуры, размещённой на произвольном рисунке (в jpg цвета искажаются, так что даже если прозрачность наложенного слоя отсутствует, не исключено, что полного совпадения цвета не будет) по заранее известным точкам (выбираем несколько контрастных точек на рисунке-маркере - знаем их координаты друг относительно друга и цвета) с довольно большой точностью (в конкретной задаче ни одного ошибочного расчёта) можно воспользоваться самой простой метрикой.. a1 и a2 - 2 точки в RGB-пространстве.|R1-R2| + |G1-G2| + |B1-B2|

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

http://www.easyrgb.com/index.php?X=MATH&H=07#text7

http://proteus2001.narod.ru/my/color/color.html

Опубликовано Декабрь 3, 2011 | автор: levik  |  Нет комментариев »