我有一个预定义的rgb值数组。我希望能够将用户定义的颜色与我的数组进行比较,并返回Objective C中最接近的匹配。
非常感谢任何帮助。
答案 0 :(得分:2)
您需要决定要测试的色彩空间。
HSL可以说是比RGB更好的色彩空间,因为你可以赋予“色调差异”更多的权重而不是“亮度”。在RGB空间中,你需要扭曲你的差异,因为眼睛比其他颜色更能辨别绿色。
答案 1 :(得分:1)
您可以尝试找到预定义颜色与用户定义颜色之间的平方差 - 并选择具有最小“距离”的预定义颜色。
E.g。假设用户定义的颜色为[120 300 200]
且预定义的颜色为[100 250 150]
,则差异的平方和得分总和为:
(120-100)*(120-100) + (300-250)*(300-250) + (200-150)*(200-150) = 5400
- 并选择差异最小的预定颜色。
答案 2 :(得分:1)
这引出了一个问题或颜色的接近程度。
你需要尝试这个,颜色不是全部数学。如果想要找到3D空间中两点之间的距离(有三种颜色),给定color1和color2的数学将是:((r2-r1)^ 2 +(b2-b1)^ 2 +(g2-g1) ^ 2)^ 0.5(比较目的不需要最终的平方根)。
可能更好的方法是在HSB空间中进行计算,可能只看Hue。
答案 3 :(得分:0)
首先,您应该定义距离函数。平凡的是矢量长度函数:所有维度的差异平方和。
然后直接浏览你的阵列并选择壁橱(距离最小)。