Objective C找到最接近的颜色(rgb)匹配

时间:2009-11-20 02:25:49

标签: iphone colors rgb match uicolor

我有一个预定义的rgb值数组。我希望能够将用户定义的颜色与我的数组进行比较,并返回Objective C中最接近的匹配。

非常感谢任何帮助。

4 个答案:

答案 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)

首先,您应该定义距离函数。平凡的是矢量长度函数:所有维度的差异平方和。

然后直接浏览你的阵列并选择壁橱(距离最小)。

相关问题