【发布时间】:2010-11-23 23:59:22
【问题描述】:
常见的RGB混色与绘画混色有很大不同, 它是光的混合,而不是颜料的混合。
例如:
Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128)
(应该是蓝色+黄色=绿色)
是否有任何已知的颜色混合算法可以像混合真实颜色一样工作?
我的方法
我已经尝试过以下操作:
将两种颜色转换为 HSV 并混合色调(乘以从饱和度计算的系数), 以及饱和度和价值通道的简单平均值。然后我计算了两者的平均亮度 颜色并调整生成的颜色以匹配此亮度。 这工作得很好,但色调混合有时是错误的,例如。 g.:
Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°)
我发现有时我需要将色调值移动 360°(当 色调大于 180°)。
Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°)
但这种转变也不是很好,例如:
Cyan (Hue 179°) + Red (Hue 0°) = Hue 89.5°
Cyan (Hue 181°) + Red (Hue 0°) --> shifting is performed (the difference is greater than 180°)
Cyan (Hue 181°) + Red (Hue 360°) = Hue 270.5°
(Hue 179 + Red) 和 (Hue 181 + Red) 会产生两种完全不同的颜色。
然后我尝试了 CIE Lab 色彩空间(就像在 Photoshop 中一样),它旨在更接近人类感知颜色的方式。
我对每个对应的两个通道只使用了一个简单的平均值,但结果并不令人满意, 例如,我从蓝色 (98, -16, 93) 和黄色 (30, 68, -112) 中得到粉色 (64, 26, -9.5)。这些系数 取自 Photoshop。
也许如果我使用一些不同于平均水平的操作,它可以工作,但是 我不知道是什么。
CMYK 也不好用,结果就像 RGB 或 LAB 一样。
似乎在任何这些色彩空间中微不足道的加法或减法颜色混合都不会产生自然的结果。
工作实施
Krita – 绘画混合器
光栅图形编辑器 Krita 在某些时候实现了更逼真的颜色混合:http://commit-digest.org/issues/2007-08-12/(Painterly 混合器插件)
他们说这是第一个使用描述颜料行为的 Kubelka 和 Munk 方程实现特殊技术的公共应用程序。
这是 Krita 混色的视频:https://www.youtube.com/watch?v=lyLPZDVdQiQ
五十三的论文
还有由FiftyThree开发的article about color blending in the Paper app for iOS。他们描述了他们如何在该领域进行创新和实验,并提供混合蓝色和黄色的样本,从而产生绿色。然而,实际的过程或算法并没有真正描述在那里。
引用:
“在寻找一种好的混合算法时,我们最初尝试在各种颜色空间中进行插值:RGB、HSV 和 HSL,然后是 CieLAB 和 CieLUV。结果令人失望,”Chen 说。 “我们知道红色和黄色应该产生橙色,或者红色和蓝色应该产生紫色——但无论你使用什么色彩空间,都没有办法得到这些颜色。有一个工程公理:做最简单的事情可能会奏效。好吧,我们现在已经尝试了最简单的方法,但他们甚至感觉都不对。”
好像和 Krita 一样,Paper 实现了 Kubelka-Munk 模型:
[...] Kubelka-Munk 模型对每种颜色至少有六个值,包括每种 RGB 颜色的反射和吸收值。 “虽然屏幕上颜色的外观可以用三个维度来描述,但颜色的混合实际上是在六维空间中发生的,”FiftyThree 的联合创始人兼首席执行官 Georg Petschnigg 解释道。 Kubelka-Munk 的论文使团队能够将美学问题转化为数学框架。 [...]
从所有这些信息来看,基于 Kubelka-Munk 模型的实施似乎是前进的方向,并提供更接近现实的结果。
尽管它看起来像一个复杂的过程,但我还没有看到太多关于如何实现这样的东西的好信息。
相关问题
这些问题是在这个问题之后发布的,都与同一件事有关。
他们都没有真正的答案。
- Calculation of a mixed color in RGB
- Algorithm for finding the color between two others - in the color space of painted colors
- Implementing Kubelka-Munk like Krita to mix colors like paint
其他相关链接和资源
- Kubelka-Munk search on Twitter
- Diana Liao 混合颜料 (!!Con 2016)
- Paint Inspired Color Mixing and Compositing for Visualization (N. Gossett, B. Chen)
【问题讨论】:
-
Krita Painterly Exhumed: github.com/KDE/krita/tree/…
标签: algorithm colors language-agnostic blending color-space