如何从RGB值中分辨出可见颜色

时间:2015-05-20 23:00:32

标签: java image image-processing colors

我正在进行图像分析项目,该项目检查大量图像中设定位置的rgb值,并且需要能够知道某个区域是绿色还是蓝色。最初我以为我可以通过测试rgb中的g>b来做到这一点,但我已经意识到,由于混合了红色,绿色图像中通常会出现比绿色更多的蓝色。我怎么知道 - 可能是公式或算法,基于rgb显然看起来是什么颜色?

1 个答案:

答案 0 :(得分:2)

您可以使用ColorRGB方法将HSB值转换为RGBtoHSB值。得到的色调值介于0-1之间,绿色(0,255,0)的色调值为0.33,蓝色(0,0,255)为0.66

float[] hsb = Color.RGBtoHSB(0, 255, 0, null);//green
System.out.println(hsb[0]);
hsb = Color.RGBtoHSB(0, 0, 255, null);//blue
System.out.println(hsb[0]);

通过此,您可以为色调值创建一个指标,然后更接近'绿色,例如任何色调值< 0.5比绿色更绿。

下面的图片描绘了这个颜色空间中的颜色如何变化,在X轴上有色调(在此图片中注意色调从0-360度变化,而RGBtoHSB返回值0-1)< / p>

enter image description here