Нахождение второго цвета, зная расстояние - PullRequest
0 голосов
/ 14 ноября 2018

Я делаю проект, в котором я нахожу узоры из 1 цветового дуэта и пытаюсь найти неизвестный второй цвет второго цветового дуэта.

Если, например, у меня есть 2Цвета (первый дуэт):

RGB (60, 90, 80)
RGB (70, 50, 120)

Используя самый простой алгоритм, я нахожу, что:

расстояние = sqrt ((r2 - r1) ^ 2 + (g2 - g1) ^ 2 + (b2 - b1) ^ 2)

где расстояние равно 57 .

Тогда у меня есть второй дуэт:

RGB (80,45,150)
RGB (x, y, z)

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

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

У вас есть сферическая поверхность вокруг первой цветовой точки в RGB пространстве (вырезанная сфера, если расстояние слишком велико).Для точного расстояния у вас есть целочисленное уравнение

dr^2 + dg^2 + db^2 = distance^2

, которое может иметь: нет решений и симметричные случаи: 4 решения, 8 решений, 16/24 решения, возможно, больше.Поэтому задача состоит в том, чтобы найти триплеты, дающие необходимую сумму (ср. Пифагорейские тройки для двумерного случая - для расстояния 2 есть 4 соседа, для расстояния 5 - 8 + 4, для расстояния 1,5 и т. Д. Нет соседей).

Еслидопустим некоторый допуск, тогда вы сможете найти еще больше возможных решений.

Кажется, вам нужны какие-то ограничения для ограничения результатов.

Также может быть полезно рассмотреть другую цветовую модель, такую ​​как HSV (если важно восприятие цвета)

0 голосов
/ 14 ноября 2018

Добро пожаловать в StackOverflow!

Если существует только 1 возможный второй цвет, вы можете рассчитать расстояние просто по разности каждого элемента R, G и B. Следовательно, расстояние между RGB (60, 90, 80) и RGB (70, 50, 120) составляет (-10, +40, -40).

Если первый цвет RGB (80,45,150), то второй цвет с таким же расстоянием - RGB (90, 5, 190)

Другим способом является использование расстояния в качестве радиального расстояния, однако это приведет к бесконечному числу возможных вторых цветов

...