2011-01-06 781 views

回答

3

在我看来就像

if (B>R) { 
    color=cool 
} else { 
    color=warm 
} 

是一个相当不错的近似。您可以使用检查了这一点上你的色轮: http://www.colorzilla.com/firefox/

+1

也许是一个很好的近似值,但是如果你想用任何精度来确定这个值,你需要将绿色值分配到那里。例如,(50,200,0)产生一个很好的中等绿色,可能会被认为是“酷”的颜色。 – 2011-01-06 13:32:34

+0

我对忽视绿色并不感到完全舒服,但在我看来,像'温暖'和'酷'这样的分类是足够主观的,'精确地确定'可能会过度工程化一点......我想它取决于要求。 – 2011-01-06 13:58:54

+0

你对主观性绝对正确。文化通过语言来决定人们认识到同一种颜色的不同颜色和变体。例如,某些语言对绿色和蓝色使用相同的单词,对蓝色和黑色使用相同的单词(例如http://en.wikipedia.org/wiki/Distinguishing_blue_from_green_in_language)。但是,人们是否真的*看到*不同或相同的颜色是另一回事(例如http://en.wikipedia.org/wiki/Linguistic_relativity_and_the_color_naming_debate)。 – 2011-01-06 15:09:48

41

考虑您链接到的是什么“暖”和“冷”,我们得到以下的参考图像。

Colour wheel

  • 最热的颜色是完全红色(R = 255,G = 0,B = 0)。
  • 最冷的颜色是完全蓝色的(R = 0,G = 0,B = 255)。

所以R越多,颜色越暖,B越多,颜色越凉。 G将带您穿过绿松石,绿色和黄色的色调,每个都越来越温暖。当G为零时,当R和B改变时,移动到圆的左下对角线上。当G接近255时,当R和B变化时,您跨过右上对角线。

然而,相邻的温暖和凉爽的颜色有不同数量的绿色。紧靠对角线下方的红色比紧靠其上方的红色少绿色。紧靠对角线下方的蓝色比紧靠其上方的蓝色少绿色。这个色轮看起来好像并不能很好地代表RGB空间,特别是在蓝色光谱的末端。

最终,您感觉温暖和寒冷取决于您的显示器设置和光照条件。很多也是你的感知和认知 - 你认为是温暖还是寒冷。在图像中,颜色对比会影响您的判断。一个明显很酷的颜色旁边的“中间”颜色看起来很温暖,但如果相同的颜色旁边有明显的暖色,它会显得很酷。看一看该色轮:

colourwheel

在这里,每一个24位彩色显示(对于每个R,G和B的8位),以及用于顶部的RGB值,右显示底部和左侧的颜色。在我看来,有比“温暖”更多的“酷”颜色。希望这可以帮助你决定什么RGB值是你认为很酷和温暖的颜色。

加分:在上图中,您还可以看到以色相,饱和度和数值(HSV)颜色模型表示的颜色。色调基本上是对颜色进行编码。饱和度编码颜色的“完整”程度 - 较少的饱和度使其更加“暗淡”,即。白色。值的编码方式有多黑 - 值越小表示黑色越深,并且饱和度的白色也会变得更灰。色调从0到360,对应于一个圆的角度,0是全红,90是霓虹绿,180是亮蓝色,270是蓝紫色,360又回到红色。 S和V从0到100,并会影响确切的色调 - 这些示例是S = V = 100。

在我看来,在0-80和330-360范围内的H值是温暖的,而H> 80和H是低温(大约)。

您可能想要在您喜欢的绘画程序中打开颜色选择器。他们通常可以并排显示HSV和RGB,并让您使用色轮来观看HSV和RGB数字的效果。如果你还没有,我会建议GIMP。它有我一直用来获得这个答案的数字的色轮。

加分2:以上所有假设都是对什么是热和什么是冷的主观评估。我认为客观测量色温的唯一方法是测量并在温标上表示。通常开尔文似乎被使用。这项措施不仅考虑颜色的阴影,而且还考虑其亮度(或发出的光量)。如果你有一个现代化的显示器,它可能有一个温度设置,有一些开尔文值可供选择。只要您知道白色的温度(白平衡),就可以计算显示器上每种RGB颜色的温度。但是,这个计算非常复杂,我不知道该怎么做。您可能会发现Bruce Lindbloom是进一步信息的好资料,或任何关于色彩科学的书籍。但我想这是比你讨价还价你的问题更多... ;-)

+1

+1对于具有挑战性的问题,一个很好的答案。 – 2011-01-06 13:33:37

+1

我会简单地说:转换为HSV/HSL,然后根据H确定热度。无需考虑用绿色做什么:-) – user562374 2011-01-06 13:49:39

+0

@ user562374:我完全同意,并且已经发布了这个答案(包含样例转换代码),除了该问题明确要求RGB颜色空间的解决方案。 – 2011-01-06 14:01:34

1

已经回答了,但需要补充一点:

如果您有兴趣物理温度和颜色依赖那么这是你正在寻找的规模:

Black body Temperature color

它是光从黑体给定温度的发光的颜色。在天文学中,这用于明星颜色分类(如BV color index)。

它也可以用于间接温度测量。