在 RGB 中寻找最接近的颜色?
Finding nearest color in RGB?
我必须找到最接近的颜色。例如,我有两种颜色 colorA1、colorA2,它们几乎是相同的颜色。而且我还有其他颜色colorB1。
我需要这样的方法:
颜色 getNearestColor(colorA1, colorA2, colorB1)。这种方法应该给我 colorB2,它是通过使用 colorA1 和 colorA2 的差异计算的,然后使用它们的距离应该给我 colorB2,它与 colorA1 和 colorA2 具有相同的距离。
你能给出一些实现的想法吗?
要找到最接近的颜色,您需要 "near" 的定义,即度量。
在维基百科中,您会发现 color differences 的不同指标。
我个人会使用 2*R*R + 4*G*G + 3*B*B。 (不需要平方根,您只需比较相同的指标)。计算简单,只用整数就可以了(如果用32位整数就不会溢出)。
然后找出哪种颜色与您的目标颜色之间的差异最小。
其他方法更精确,但在那种情况下 "RGB" 是不够的。您需要知道 space 使用的是哪种颜色(可能您使用的是 sRGB)。
我必须找到最接近的颜色。例如,我有两种颜色 colorA1、colorA2,它们几乎是相同的颜色。而且我还有其他颜色colorB1。 我需要这样的方法: 颜色 getNearestColor(colorA1, colorA2, colorB1)。这种方法应该给我 colorB2,它是通过使用 colorA1 和 colorA2 的差异计算的,然后使用它们的距离应该给我 colorB2,它与 colorA1 和 colorA2 具有相同的距离。 你能给出一些实现的想法吗?
要找到最接近的颜色,您需要 "near" 的定义,即度量。
在维基百科中,您会发现 color differences 的不同指标。
我个人会使用 2*R*R + 4*G*G + 3*B*B。 (不需要平方根,您只需比较相同的指标)。计算简单,只用整数就可以了(如果用32位整数就不会溢出)。
然后找出哪种颜色与您的目标颜色之间的差异最小。
其他方法更精确,但在那种情况下 "RGB" 是不够的。您需要知道 space 使用的是哪种颜色(可能您使用的是 sRGB)。