混合 RGB 颜色 (L*a*b*)
基本上我想要两种混合两种颜色color1
和color2
。 由于简单的计算会带来像蓝色+黄色=灰色((color1.r + color2.r)/2
等)这样的东西,我做了一些研究,发现显然混合颜色是为了使混合颜色看起来我们也期望它(例如蓝色+黄色=绿色)并不是那么简单。
另一篇 stackoverflow 帖子告诉我的是,为了正确实现两者的混合,我必须使用 Lab* 空间 / CIELAB 并链接到有关该主题的维基百科页面。
我发现它内容丰富,但我无法真正理解如何将 RGB 转换为(sRGB 和)Lab* - 如何混合获得的颜色以及如何转换回来
我希望这里有人可以帮助我
,谢谢,
塞缪尔
Basically I want two mix two colours color1
and color2
.
Since simple calculation's bring up stuff like blue+yellow = grey ((color1.r + color2.r)/2
etc) i did some research and found that apparently mixing colors in order for the mixed color to look like we expect it too (e.g. blue+yellow = green) isn't that straight forward.
What another stackoverflow post taught me was that in order two achieve the mixture correctly i'd have to use the Lab* space / CIELAB and linked to the wikipedia page about this topic.
I found it informative but i couldn't really understand how to convert RGB to (sRGB and than to) Lab* - how to mix the obtained colors and how to convert back
I hope somebody here can help me
Thanks,
Samuel
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要在 LAB 颜色空间中的两种 RGB 颜色之间进行插值,首先需要通过 XYZ 将每种颜色转换为 LAB(RGB -> XYZ -> LAB)。
您可以使用此函数在两种 LAB 颜色之间进行插值
最后,将结果从 LAB 转换回 RGB
其他一些有用的函数
总而言之:
颜色空间转换参考:http://www.easyrgb.com/en/math.php
To interpolate between two RGB colours in the LAB colour space, you first need to convert each colour to LAB via XYZ (RGB -> XYZ -> LAB).
You may use this function to interpolate between two LAB colours
Finally, convert the result back from LAB to RGB
Some other helpful functions
All together:
Reference for colour space conversions: http://www.easyrgb.com/en/math.php
1)将sRGB转换为RGB。来自 GEGL:
2) RGB 到 CIELAB。查看 OpenCV 源代码 [/src/cv/cvcolor.cpp]。有颜色空间转换的函数 [icvBGRx2Lab_32f_CnC3R]
3) 混合颜色通道。
4)将所有颜色转换回来。
1) convert sRGB to RGB. From GEGL:
2) RGB to CIELAB. Look in OpenCV source [/src/cv/cvcolor.cpp]. There are functions for color space conversions [icvBGRx2Lab_32f_CnC3R]
3) mix color channels.
4) make all the color conversions back.