彩虹的颜色接近

时间:2012-06-28 14:56:23

标签: python

我有n个属于彩虹的点(或者接近于“彩虹色”)。现在给出一个也是彩虹色的点,我想在n个点中找到最接近的匹配

什么是强大而简单的数据结构+算法组合才能做到这一点?我想到了使用(R,G,B)元组和Eularian距离。

是的,我有一个严重的用例: - )

4 个答案:

答案 0 :(得分:2)

你大部分都是正确的,但HSL或HSV可能会让你更加准确,因为你可以对属性进行加权。请参阅colorsys

答案 1 :(得分:2)

您应该将RGB值转换为HSL,其中基于色调的匹配颜色接近应该更容易。

答案 2 :(得分:2)

我不是在玩彩虹;-)但我的情况几乎相同,我使用kd树来快速搜索最近的“点”。我的观点也是0-1花车形式的rgb颜色

http://code.google.com/p/python-kdtree/

from kdtree import KDTree

data = [(1,2,3),(4,0,1),(5,3,1),(10,5,4),(9,8,9),(4,2,4)]

tree = KDTree.construct_from_data(data)
nearest = tree.query(query_point=(5,4,3), t=1)

答案 3 :(得分:1)

你说彩虹色,它通常意味着可见光谱中的单色,即单一频率的颜色(白色或粉红色不是彩虹色)。在这种情况下,您具有能够仅使用其频率或波长(单个数字)来表示它们的巨大优势。例如,在这里查看与彩虹光谱的样本划分对应的频率:

所以现在你有 n 数字,然后你选择另一个数字(另一种彩虹色),并且必须决定它最接近哪一个。这应该是微不足道的。

所以,如果你的频率方面有彩虹色(你应该知道它们,你怎么知道它们是彩虹色?),这是一个简单的工作。