【问题标题】:Mapping RGB/hex color codes to general color categories将 RGB/十六进制颜色代码映射到一般颜色类别
【发布时间】:2015-06-20 06:07:40
【问题描述】:

是否有一个数据集可以将每个 ~16M RGB 或十六进制颜色值映射到一般颜色系列/类别 - 例如红色、紫色、橙色、米色、棕色等 - 我可以通过编程方式访问或加载到数据库或 JSON 文档中以交叉引用颜色代码?用例是将色板文件的 PIL 颜色检测结果分类为购物网站的一小部分颜色选择器。如果映射更精细一些,比如 100-200 个类别,它也会起作用,因为我自己将这些映射到我的目标 10-15 就很容易了。我对 kNN 分类有一些了解,如果需要,我会使用它,但如果已经存在静态映射,那么使用静态映射会容易得多。

【问题讨论】:

  • 请参阅xkcd Color Survey Results,了解有关颜色名称的一些见解。
  • 这是一个很好的资源,谢谢!我喜欢它们有“鼻屎”和“婴儿呕吐绿色”等颜色名称。 :D

标签: colors computer-vision python-imaging-library rgb


【解决方案1】:

您可以使用 X11 中的表格

http://www.astrouw.edu.pl/~jskowron/colors-x11/rgb.html

为了找到颜色的接近度,最好先将颜色转换到Lab颜色空间,这样欧几里得距离才有意义,然后最近邻会得到很好的结果。

【讨论】:

  • 谢谢!您能告诉我如何将颜色转换为 Lab 吗? PIL getcolors() 方法给我元组中的 RGB 值 - 如果我将 X11 颜色值转换为 RGB,我不能只计算两个 RGB 元组之间的欧几里德距离而不转换为任何其他格式吗?还是我错过了什么?
  • RGB 空间并不能准确地表示人类对颜色相似性的感知。这就是 CIE Lab 应运而生的原因。转换的方法有很多种,但自己实现并非易事。如果您可以使用 Ajay 的回答中提到的库,那就去吧。
【解决方案2】:

您可以从 RGB 转换为 CIE Lab 颜色空间,其中两种颜色选择之间的欧几里得距离在感知上更有意义。以下是 OpenCV 的颜色转换方法(cvtColor)中使用的所有相关颜色空间转换公式的链接:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html

由于您的用例是比较两个样本,我建议您使用纹理描述符 (http://www.robots.ox.ac.uk/~vgg/research/texclass/with.html) 以及颜色信息以获得更好的结果。

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 2017-04-11
  • 2021-02-17
  • 2014-04-25
  • 2018-10-13
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 2011-09-20
相关资源
最近更新 更多