Этот вопрос похож на # 1634206 .
Если вы ищете расстояние в RGB-пространстве, евклидово расстояние будет работать, при условии, что вы рассматриваете значения красного, зеленого и синего одинаково.
Если вы хотите взвешивать их по-разному, как это обычно делается при преобразовании цвета / RGB в оттенки серого, вам необходимо взвешивать каждый компонент по-разному. Например, используя популярное преобразование из RGB в оттенки серого: 30% красный + 59% зеленый + 11% синий:
d2 = (30*(r1-r2))**2 + (59*(g1-g2))**2 + (11*(b1-b2))**2;
Чем меньше значение d2
, тем ближе цвета (r1,g1,b1)
и (r2,g2,b2)
друг к другу.
Но есть и другие цветовые пространства на выбор, чем просто RGB, которые могут лучше подходить для вашей проблемы.