当前位置:  开发笔记 > 编程语言 > 正文

平均定义线性渐变的两种颜色的最佳方法是什么?

如何解决《平均定义线性渐变的两种颜色的最佳方法是什么?》经验,为你挑选了4个好方法。

如果我有两种颜色由RGB值定义,我可以平均红色,绿色和蓝色值然后组合以定义看起来像两者的视觉平均值的第三种颜色吗?

即NewColor =(R1 + R2)/ 2,(G1 + G2)/ 2,(B1 + B2)/ 2

EDIT1:感谢所有回复.对于我目前的需求,我只处理颜色相同的颜色对,所以我认为平均它们会起作用.但是,我将尝试转换到Lab Space以确保假设是正确的,并且该技术将来会有用.

EDIT2:这是我的结果FWIW.Color1和Color2是我的两种颜色,两个中间列是分别在L a b空间和平均RGB中取平均值的结果.在这种情况下,两种颜色之间没有太大差异,因此平均技术的输出差异是微妙的.

颜色平均技术的视觉比较



1> 小智..:

几个答案建议转换为Lab颜色空间 - 这可能是更复杂的颜色操作的好方法.

但是,如果您只需要快速获取两种颜色的平均值,则可以在RGB空间中完成.您只需要注意一个警告:您必须在对它们求平均值之前对RGB值求平方,然后取结果的根.(如果你只是取平均值,结果将会太暗.)

像这样:

NewColor = sqrt((R1^2+R2^2)/2),sqrt((G1^2+G2^2)/2),sqrt((B1^2+B2^2)/2)

这是一个很棒的视频,解释了为什么这种方法有效:https://www.youtube.com/watch?v = LKnqECcg6Gw


Aha,一个能够识别图像在图像世界中使用的对数空间的答案!对于加权混合(即75%颜色A和25%颜色B),使用`NewColor = sqrt(R1 ^ 2*w + R2 ^ 2*[1-w]),sqrt(G1 ^ 2*w + G2 ^ 2*[1-w]),sqrt(B1 ^ 2*w + B2 ^ 2*[1-w])`其中w是从0到1的权重.
这就是大多数人通过Google提出此问题的答案.
3种颜色除以3并像往常一样使用sqrt root.例如,`NewColorR = sqrt((R1 ^ 2 + R2 ^ 2 + R3 ^ 2)/ 3).这仅适用于红色组件.为"绿色"和"蓝色"做同样的事情

2> Blorgbeard..:

看看这个问题的答案.

基本上,您希望将颜色转换为称为Lab空间的颜色,并在该空间中找到它们的平均值.

实验室空间是一种表示颜色的方式,其中彼此接近的点是那些看起来与人类相似的点.



3> Willie Wheel..:

我不知道从感知的角度来看,对于组件的简单平均值是否是"最佳"(听起来像心理学家的问题),但这里有一些使用简单组件平均的例子.

替代文字

红芥末绿色很丑,但插值似乎足够合理.


我知道一张图片胜过千言万语,但有时候你也可以用一些字

4> eugensk..:

HSL色彩空间的平均可能会产生更好的结果.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有