我有一个预定义的RGB值数组。我想要能够比较用户定义的颜色和我的数组,并返回Objective C中最接近的匹配项。
非常感谢您的帮助。
非常感谢您的帮助。
[120 300 200]
,而预定义的颜色是[100 250 150]
,则平方差之和和得分为:
(120-100)*(120-100) + (300-250)*(300-250) + (200-150)*(200-150) = 5400
- 并选择差异最小的预定义颜色。你需要决定测试的颜色空间。
HSL颜色空间可能比RGB更好,因为您可以更加重视“色相差异”,而不是“亮度”。在RGB空间中,您需要扭曲差异,因为眼睛更擅长识别绿色而不是其他颜色的阴影。
这引出了颜色相似性的问题。
你需要尝试一下,因为颜色并不全是数学。如果想要在三维空间中找到两点之间的距离(即三种颜色),给定颜色1和颜色2的数学公式为:((r2-r1)^2 + (b2-b1)^2 + (g2-g1)^2)^0.5(最后的平方根对于比较目的不是必需的)。
可能更好的方法是在HSB空间中进行计算,可能只需查看色调。