如果我有两种颜色由RGB值定义,我可以平均红色,绿色和蓝色值然后组合以定义看起来像两者的视觉平均值的第三种颜色吗?
即NewColor =(R1 + R2)/ 2,(G1 + G2)/ 2,(B1 + B2)/ 2
EDIT1:感谢所有回复.对于我目前的需求,我只处理颜色相同的颜色对,所以我认为平均它们会起作用.但是,我将尝试转换到Lab Space以确保假设是正确的,并且该技术将来会有用.
EDIT2:这是我的结果FWIW.Color1和Color2是我的两种颜色,两个中间列是分别在L a b空间和平均RGB中取平均值的结果.在这种情况下,两种颜色之间没有太大差异,因此平均技术的输出差异是微妙的.
几个答案建议转换为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
看看这个问题的答案.
基本上,您希望将颜色转换为称为Lab空间的颜色,并在该空间中找到它们的平均值.
实验室空间是一种表示颜色的方式,其中彼此接近的点是那些看起来与人类相似的点.
我不知道从感知的角度来看,对于组件的简单平均值是否是"最佳"(听起来像心理学家的问题),但这里有一些使用简单组件平均的例子.
红芥末绿色很丑,但插值似乎足够合理.
HSL色彩空间的平均可能会产生更好的结果.