Смешивание двух цветовых векторов RGB для получения результатов
Я пытаюсь смешать два исходных вектора RGB, чтобы создать третий "результирующий вектор", который представляет собой интуитивное сочетание первых двух.
В идеале я мог бы эмулировать "реальные характеристики смешивания краски", но для простоты я пытаюсь найти метод, в котором результат выглядит интуитивно похожим на то, что вы получили бы от объединения двух исходных rgb.
минимально, эти характеристики:
КРАСНЫЙ + ЧЕРНЫЙ = ТЕМНЫЙ КРАСНЫЙ
RED + WHITE = LIGHT RED
оптимально, также с реальными характеристиками краски:
RED + BLUE = PURPLE
RED + YELLOW = ORANGE
(и т.д.)
-
В настоящее время я делаю это "ленивым путем", добавляя два исходных вектора RGB/255, а затем нормализуя (и умножая на 255).
Итак, используя это: [Red = < 1,0,0 > * 255] + [Blue = < 0,0,1 > * 255] дает Magenta = < 1,0,1 > /sqrt (2) * 255, хотя другие цвета менее интуитивные или даже видимые... Мне нужен лучший метод! Пожалуйста, помогите: -)
Ответы
Ответ 1
Это то, что вы предложили так же, как средневзвешенный?
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
Что касается сопоставления полученного цвета с именованным цветом ( "темно-красный" ), возможно, просто выполните таблицу поиска и выберите ближайший из них?
Ответ 2
Проблема в том, что вы пытаетесь связать две разные цветовые теории. RGB - аддитивная теория цвета (цветной свет испускается из источника). В этом случае больше спектра, который вы добавляете в микс, тем ближе к белому.
Для "смешивания красок" вам нужно эмулировать субтрактивную теорию цвета, которая определяет способ смешения отраженных цветов. (т.е. отраженный свет, такой как краски, различные поверхности и т.д.). Здесь обзор.
JavaScript на на этой странице - это ключ к тому, как вы можете продолжить преобразование RGB в CMYK.
Ответ 3
Смешивание цветов RGB для имитации субтрактивной цветовой смеси (то есть смеси, подобной краске) может быть выполнено путем преобразования значений RGB в кривые спектрального отражения, а затем выполнения смеси там. Этот вопрос очень похож на другой, fooobar.com/questions/111217/..., где решение обсуждается более подробно.
Ответ 4
Я думаю, вы действительно должны определить, что такое "+" в вашей цветовой гамме.
В соответствии с вашими требованиями я перевел их в оцененные шестнадцатеричные цветовые коды, (представление 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
Я не вижу определенного шаблона, в котором вы можете разработать некоторые формулы для достижения этого.
Методы Джона и Нилса, вероятно, приблизится к цветам, но, вероятно, не к точным значениям. Я предлагаю вам попробовать.
EDIT:
Обновлены неверные цветовые коды. Ну, теперь это стало намного больше.