在RGB空间中,识别不同颜色的范围是什么?

6

我如何以编程的方式确定给定像素是否是黄色? 或红色? 或其他颜色?

在RGB空间中,红色通常为(255,0,0),但我们也知道(230,0,0)也会显示为红色。

是否有任何标准将RGB空间分成八种主要颜色 - 红色、绿色、蓝色、黄色、品红、青色、黑色和白色?

2个回答

7
在RGB中确定颜色可能会很复杂,但是您可以将RGB值转换为HSV,这是一种通过色调、饱和度和明度表示颜色的格式。这是像Photoshop这样的软件中用于选择特定颜色的系统。
在此系统中,光谱的所有颜色都用单个浮点数(色调)表示,其范围从0到360度,另外2个数字仅修改此颜色(告诉它是灰色还是更亮)。

enter image description here

这使比较颜色变得容易,正如您在此图像上看到的,在RGB和CMYK系统中的每个原色都相隔60度。
在这里,您可以轻松地确定30到90之间的任何颜色都是黄色调,330(或-30)到30之间的任何颜色都是红色调,依此类推。
您甚至可以更具体地确定橙色、紫色和其他非基本颜色的色调范围。
关于黑色和白色,您可以通过检查其值是否低来确定颜色是否为黑色,例如如果它的值小于0.1(它的范围从0到1),如果找到高价值(大于0.9,例如)和低饱和度(低于0.1,例如)的组合,则为白色。当然没有确切的数字,因此您必须自行决定非常暗或非常明亮的颜色何时变成黑色或白色。

0
在RGB颜色模型中,您有三个通道:红色、绿色和蓝色,其值范围从0到255(您已经知道这一点!)。
为了覆盖整个光谱,您需要将三个通道与一定数量的值选项相结合。
因此,如果每个通道都有x个值选项,则会得到x * x * x = x^3种颜色值。
例如,对于两个选项,例如0和255,您将获得2^3 = 8种颜色。
对于六个选项,它们构成五个(= 6-1)段,您可以使用以下值:
0 *(255/5),1 *(255/5),2 *(255/5),3 *(255/5),4 *(255/5),5 *(255/5)
这样就可以得到6^3 = 216种颜色,您可以在此处查看示例。
上面的范围向您展示了如何为一个通道构建一维数组。由于三个通道是相同的,因此您可以将其用于所有三个通道。
使用此方法,您可以构建二维数组:
0, 0, 0
51, 0, 0
102, 0, 0

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接