Смешивание двух цветных векторов RGB для получения результанта

Я пытаюсь смешать два исходных вектора RGB для создания одной трети "результирующий вектор", который является интуитивным соединением первых двух.

Идеально, я был бы в состоянии эмулировать "реальные характеристики смешивания краски", но для простоты, я пытаюсь найти метод, где результант смотрит интуитивно как то, что Вы получили бы от объединения двух исходных rgb's.

минимально, эти характеристики:
КРАСНЫЙ + ЧЕРНЫЙ = ТЕМНО-КРАСНЫЙ
КРАСНЫЙ + БЕЛЫЙ = СВЕТЛО-КРАСНЫЙ

оптимально, также с реальными характеристиками краски:
КРАСНЫЙ + СИНИЙ = ФИОЛЕТОВЫЙ
КРАСНЫЙ + ЖЕЛТЫЙ = ОРАНЖЕВЫЙ
(и т.д.)

--

Я в настоящее время делаю это "ленивый путь" путем добавления двух исходных векторов/255 RGB, затем нормализации (и умножения на 255). Так, использование этого: [Красный = <1,0,0> * 255] + [Синий = <0,0,1> * 255] дает Пурпурный = <1,0,1>/sqrt (2) * 255, хотя другие цвета менее интуитивны или даже видимы... Мне нужен лучший метод! Помогите:-),

15
задан yos 12 December 2009 в 02:50
поделиться

3 ответа

То, что вы предложили, совпадает с средневзвешенным?

Average R = w1*R1 + w2*R2 + w3*R3 + ... + wn*Rn

Average G = w1*G1 + w2*G2 + w3*G3 + ... + wn*Gn

Average B = w1*B1 + w2*B2 + w3*B3 + ... + wn*Bn

w - это весовые дроби, а их сумма равна 1.

R1 - красный компонент первого цвета для смешивания, например.

Итак, если вы хотите равномерно смешать два цвета, это будет:

Average R = 0.5*R1 + 0.5*R2

Average G = 0.5*G1 + 0.5*G2

Average B = 0.5*B1 + 0.5*B2

Что касается сопоставления результирующего цвета с именованным цветом («темно-красный»), возможно, просто выполните таблицу поиска и выберите ближайший?

16
ответ дан 1 December 2019 в 02:19
поделиться

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

Для «смешивания красок» вам необходимо эмулировать субтрактивную теорию цвета, которая определяет способ смешивания отраженных цветов. (например, отраженный свет, такой как краски, различные поверхности и т. д.) Вот обзор .

JavaScript на этой странице является ключом к тому, как вы могли бы преобразовать RGB в CMYK.

10
ответ дан 1 December 2019 в 02:19
поделиться

Я думаю, вам действительно стоит определить, что такое «+» в вашей цветовой схеме.

Исходя из ваших требований, я перевел их в приблизительные шестнадцатеричные цветовые коды (представление RGB можно легко вывести).

RED     + BLACK   = DARK RED  
#ff0000 + #000000 = #800000
RED     + WHITE   = LIGHT RED
#ff0000 + #ffffff = #ff8080

optimally, also with real paint characteristics:
RED     + BLUE    = PURPLE
#ff0000 + #0000ff = #800080
RED     + YELLOW  = ORANGE
#ff0000 + #ffff00 = #ff8000

Я не вижу определенного шаблона, по которому можно было бы разработать какие-то формулы для достижения этого.

Методы Джона и Нильса, вероятно, приблизятся к цветам, но, вероятно, не к точным значениям. Я предлагаю вам попробовать.

РЕДАКТИРОВАТЬ:
Обновлены неправильные цветовые коды. Что ж, теперь в этом больше смысла.

1
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: