我正在开展一项图像分析项目,需要检查多张图片中设置位置的RGB值,并且需要确定某个区域是绿色还是蓝色。最初我认为可以通过测试RGB中G是否大于B来实现,但我意识到在绿色图像中,由于与红色混合,蓝色可能比绿色更多。有没有可能根据RGB确定颜色的外观,可能是一个公式或算法?
RGBtoHSB
方法将 RGB
值转换为 HSB
值。转换后的色相值介于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)。
.6
,而蓝色值更接近于.9
,因此>.5
测试可能并不总是能得到正确的结果。 - Jayjey
S
饱和度或者V
亮度)。” - Jason Sperske