如何在颜色表中找到与当前颜色最接近的颜色?

2017-08-31 15:21:12 +08:00
 em2046
有一个颜色表,含有 1000 多种颜色的数据( https://en.wikipedia.org/wiki/List_of_colors:_A%E2%80%93F
给定一个颜色,譬如#FF6600,如何在颜色表中找到与之最接近的颜色呢。

这样我就可以直接把 16 进制颜色值转化为接近的颜色名称。譬如#FF6600 是 Christmas orange

我的想法是,迭代整个颜色表中所有 1000 条数据,找到其中与当前给定颜色 rgb 分别相减平方和最小的数据。
(red1-red2)^2+(green1-green2)^2+(blue1-blue2)^2,但是每次查询都需要比较 n 次,感觉很弱呀

请问是否有更加巧妙的方法呢?
2215 次点击
所在节点    问与答
2 条回复
sanmaozhao
2017-08-31 16:01:14 +08:00
https://zh.wikipedia.org/wiki/%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2
这里面说到的线性查找就是你说的遍历
然后提到了 k-d 树是一个比较简单高效的查找方法:
https://zh.wikipedia.org/wiki/K-d%E6%A0%91
你搜一下“ k-d ”树吧
em2046
2017-08-31 16:22:17 +08:00
@sanmaozhao 感谢,我先去看看资料

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/387187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX