Рубрики
Без рубрики

Разница между 2 цветами с использованием python

Недавно мне нужно было сравнить несколько цветов, чтобы получить 2 самых одинаковых цветов. Эта проблема … с меткой данных DataScience, Python.

Недавно мне нужно было сравнить несколько цветов, чтобы получить 2 самых одинаковых цветов. Эта проблема на фасаде выглядит как легкая прогулка, даже для начинающих, но немного вовлечена.

Наивная реализация заключается в расчете на евклидовое расстояние (как показано ниже) между значениями RGB 2 цветов.

d = SQRT ((x1 -x2)^2 + (y1 -y2)^2 + (z1 -z2)^2)

Затем выбраны 2 цвета, которые имеют самое низкое евклидовое расстояние. Но в этом предположении есть серьезный недостаток. Хотя значения RGB являются удобным способом представления цвета в компьютерах, мы, люди, воспринимаем цвета по -разному от того, как цвета представлены в цветовом пространстве RGB. То, что для нас выглядит как идентичные цвета, может дать нам евклидовое расстояние, которое больше, чем евклидова расстояния цветов, которые выглядят отличными от нас при сравнении в цветовом пространстве RGB.

Итак, что теперь делать?

Delta-E Distance Metric приходит на нашу помощь. Он использует цветовое пространство CIE Lab, которое приближается к тому, как мы воспринимаем цвета, хотя оно также не совсем точное. Как только мы представляем цвет в цветовом пространстве CIE, мы можем рассчитать метрику расстояния Delta-E с использованием евклидового расстояния. С момента его выхода в 1976 году он был изменен 2 раза, чтобы справиться с недостатками предыдущих версий. Диаграмма ниже показывает, что, смещаясь по оси x и y, мы получаем разные оттенки одного и того же цвета. CIE76 -> CIE94 -> CIE2000

Для этого урока мы будем использовать CIE2000. Если вы заинтересованы в реальной математике, обратитесь к странице Википедии. Довольно легко написать свой собственный код, чтобы сравнить 2 цвета, но мы не попытаемся заново изобрести колесо. Python обеспечивает высокую коммунальную пакет Colormath Для преобразования между различными цветами сравнения дельта, плотности с спектральной работой и т. Д.

Используя Colormath Нам просто не нужно прилагать много усилий, чтобы найти метрику Delta-E.

Модуль Colormath может быть установлен с помощью PIP –

sudo apt-get install python-pip
sudo pip install colormath

Теперь давайте напишем фактический код Python, чтобы найти разницу между 2 цветами.

from colormath.color_objects import sRGBColor, LabColor
from colormath.color_conversions import convert_color
from colormath.color_diff import delta_e_cie2000

# Red Color
color1_rgb = sRGBColor(1.0, 0.0, 0.0);

# Blue Color
color2_rgb = sRGBColor(0.0, 0.0, 1.0);

# Convert from RGB to Lab Color Space
color1_lab = convert_color(color1_rgb, LabColor);

# Convert from RGB to Lab Color Space
color2_lab = convert_color(color2_rgb, LabColor);

# Find the color difference
delta_e = delta_e_cie2000(color1_lab, color2_lab);

print "The difference between the 2 color = ", delta_e

Рекомендации

  1. Поток переполнения стека
  2. Pypi Colormath Package

Оригинал: “https://dev.to/tejeshreddy/color-difference-between-2-colours-using-python-182b”