实施像Krita这样的Kubelka-Munk来混合颜色(颜色)如油漆

gle*_*rey 5 colors

是否有人知道在哪里可以找到或实现Kubelka-Munk功能以像自然涂料一样混合颜色?Emanuelle Tamponi在开源项目Krita中实现了此功能,但在任何地方都找不到这种或类似方法可以“自然地”混合颜色的功能。可能是商业上敏感或私人的,但如果您不询问,就不会发现!

小智 5

随意重用我们在krita中拥有的代码。它在calligra / krita / plugins / extensions / painterlyframework中。它确实需要颜料库作为备份,但是我想您可以轻松地从中提取颜料。

但是请注意,该代码受GPLv2 +许可。如果您重复使用代码或光源文件,则您的代码也必须是GPL。

(有关更多信息,请与我联系-boud@valdyas.org或irc.freenode.net上的#krita上的boud,我是Krita的维护者)。


Sco*_*rns 5

仅靠 RGB 值无法提供足够的信息来执行真正的 Kubelka-Munk 计算,因为您需要整个可见光谱的吸光度和散射曲线。相反,您可以根据 RGB 值生成代表性反射率曲线,然后使用反射率信息执行减法混合,例如,通过计算两条反射率曲线的加权几何平均值。

  • 此 Matlab 代码会将 sRGB 转换为基于波长的光谱反射率: `function Reflectance=LSS(B12,sRGB) % 计算目标“线性 RGB”值 sRGB=sRGB(:)/255; % 如果 sRGB(i)<0.04045 rgb(i)=sRGB(i)/12.92,则转换为 i=1:3 的 0-1 列向量;否则 rgb(i)=((sRGB(i)+0.055)/1.055)^2.4; end end Reflectance=B12*rgb;` 可以在[此处找到矩阵 B12。](http://scottburns.us/wp-content/uploads/2015/04/B12-matrix.txt) 一旦两种 sRGB 颜色已转换为反射率曲线,混合曲线(对它们进行平均,或者更好的是,得到它们的“加权几何平均值”)。 (2认同)