在HSV空间中添加/混合颜色

时间:2011-09-11 21:27:19

标签: c++ colors hsv

我一直试图将可视化进行几天。 我正在生成衍射图像,并希望根据光的波长对其进行着色 获得正确颜色的最简单方法是使用HSV空间,其中H随波长变化,S,V设为1.0 唉,我找不到在HSV空间中混合不同颜色的公式/算法/方式。

是否存在混合HSV或其他可理解方式的公式?

2 个答案:

答案 0 :(得分:6)

老实说,我会转换RGB,平均组件并转换回HSV。

这不是最有效的方式,但您可能已经或需要RGB< - > HSV代码,并且RGB计算可能更简单。

答案 1 :(得分:5)

Foley等人的标准参考文献Computer Graphics: Principles and Practice之一。在第13.3.7节“色彩空间插值”中有这样的说法:

  

“当混合两个图像时,颜色可能相当远,并且添加模型(如RGB)是合适的。另一方面,如果目标是在两种固定颜色之间进行插值色调(或饱和度)并保持所有插值颜色的固定色调(或饱和度),然后HSV或HLS是优选的。但请注意,HSV或HSL中的固定饱和插值被视为具有由观众确定饱和度[...]“

所以他们同意@andrewmu的建议,这似乎是最好的建议。