Реализация Kubelka-Munk как Krita для смешивания цветов (цвета) как краски

Кто-нибудь знает, где найти или реализоватьФункция Кубелка-Мунк смешать цвет как натуральную краску?Эмануэль Тампони реализовала эту функцию в Критепроект с открытым исходным кодом, но я нигде не могу найти, чтобы этот или подобный метод был предоставлен для «естественного» доступа. смешивать цвета. Возможно, он является коммерчески чувствительным или частным, но если вы не спросите, вы не узнаете!

 glenstorey02 июл. 2012 г., 02:33
Молись-скажи, почему -1?
 glenstorey21 апр. 2012 г., 03:17
Хороший споттинг. Нет, я не спрашиваю, как использовать эту функцию или аналогичную для естественного смешения цветов, как показано на видео. Я думаю, что сложная часть будет преобразовывать значения RGB во входные данные функции.
 Rob Keniger21 апр. 2012 г., 02:40
Вы спрашиваете, реализовал ли кто-нибудь это в Какао? Сама функцияeasily found через гугл.

Ответы на вопрос(3)

Решение Вопроса

который мы имеем в Крите. Это в calligra / krita / plugins / extensions / painterlyframework. Для резервирования нужна библиотека пигментов, но, думаю, вы можете легко абстрагироваться от этого.

Однако обратите внимание, что код находится под лицензией GPLv2 +. Если вы повторно используете код или файлы источников света, ваш код также должен быть GPL.

(для получения дополнительной информации, пожалуйста, свяжитесь со мной - [email protected] или boud на #krita на irc.freenode.net, я поддерживаю Krita).

 glenstorey22 апр. 2012 г., 06:10
Большое спасибо за ответ! Я уезжаю на неделю, но после этого пришлю вам электронное письмо.
 13 дек. 2017 г., 15:01
Похоже, этого больше нет в текущем коде Krita, развилось ли оно когда-либо в чем-то еще в Krita? Цифровой микшер цветов кажется самым близким.
 19 февр. 2013 г., 09:08
Вы реализовали это? Я сейчас работаю над той же проблемой ...

в которой используется упрощенная модель Кубелки-Мунка. Предполагается, что при смешивании все цвета имеют одинаковую концентрацию и что все цвета непрозрачны. Если это полезно, не стесняйтесь использовать его любым удобным для вас способом.

https://github.com/benjholla/ColorMixer

 18 февр. 2013 г., 13:16
Спасибо, что поделились своей реализацией цветового микшера. Тем не менее, я думаю, что это не работает правильно. Например, для смешивания красного (255, 0, 0) с желтым (255, 255, 0) я должен получить вид апельсина: (например, 255, 128, 0), но я получу: 255, 2, 1, что такой же красный. Есть идеи? Я делаю что-то неправильно?
 31 мар. 2013 г., 20:00
Нет, вы правы, похоже, что с моей реализацией все еще могут быть проблемы с микшированием. Я пытался преобразовать мое цветовое пространство RGB в RYB для работы, но это не помогло. Я немного озадачен некоторыми из смешанных цветов. Многие кажутся правильными, однако ...

предоставляемой только значениями RGB, чтобы выполнить истинное вычисление Кубелки-Мунка, так как вам нужны кривые как поглощения, так и рассеяния по видимому спектру. Вместо этого вы можете генерироватьrepresentative кривые отражения от значений RGB, а затем используйте информацию об отражении для выполнения вычитающей смеси, например, путем вычисления средневзвешенного геометрического значения двух кривых отражения.

 01 мая 2015 г., 11:36
Извините за пюре. Я не могу понять, как получить разрыв строки в комментариях.
 01 мая 2015 г., 13:45
Кроме того, если любое из значений отражательной способности окажется отрицательным в приведенном выше коде, тоsomewhat more complex version должен быть использован.
 07 мая 2015 г., 12:52
Коррекция: не усредняйте кривые отражения, как я предлагал. Это даст вам тот же результат, что и простое усреднение значений RGB! Вместо этого используйтеweighted geometric mean чтобы смоделировать смесь красок или умножить кривые вместе, если вы хотите смоделировать перекрывающиеся цветовые фильтры, которые намного "сильнее" вычитающая смесь.
 01 мая 2015 г., 11:28
Этот код Matlab преобразует sRGB в спектральный коэффициент отражения на основе длины волны:function reflectance=LSS(B12,sRGB) % compute target "linear rgb" values sRGB=sRGB(:)/255; % convert to 0-1 column vector for i=1:3 if sRGB(i)<0.04045 rgb(i)=sRGB(i)/12.92; else rgb(i)=((sRGB(i)+0.055)/1.055)^2.4; end end reflectance=B12*rgb;  Матрица B12 найденаhere. Как только два цвета sRGB были преобразованы в кривые отражательной способности, смешайте кривые (усредните их или, еще лучше, получите их «средневзвешенное геометрическое»).

Ваш ответ на вопрос