RGB颜色空间到原始颜色名称的映射

RGB color space to raw color name mapping(RGB颜色空间到原始颜色名称的映射)

本文介绍了RGB颜色空间到原始颜色名称的映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定不同的RGB三联体(例如,[255,255,255]或[1,2,3]),我想将其映射到一组固定的颜色(红色、蓝色、绿色、黑色、白色、黄色、粉色、紫色、米色、棕色、橙色、灰色)。

举个例子,当我给出"0,0,0"时,黑色应该是映射的输出。同样,灰色代表"190,190,190"。地图的值将采用上面定义的枚举颜色(共12种)。 使用固定的颜色集维护反向映射,并使用地图的所有元素计算每个新的RGB三元组的平方差是一种方法,但这种方法的结果并不是很好。结果不佳的原因可能是我们选择的12种颜色在颜色空间中分布不均匀(但不确定:)。

此数据将进一步用于群集。

有没有库(最好是Java/C++或OpenCV)或网站可以执行类似的任务,我可以利用它?

提前谢谢!

推荐答案

首先使用

Map1: colourname->Colourvalue
example: "black" -> (255,255,255), "blue" -> (0,0,255)

Map2: Colourvalue->colourname
example: (255,255,255) -> "black", (0,0,255) -> "blue"

如果您获得一个值的颜色(0,10,240),您希望检查map2中的哪些已知条目也是最接近的。

因此,如果颜色的距离大致相等(否则请参见底部),则计算欧几里得距离,得到类似

的结果
dist((0,10,240), (0,0,255)) ~ 20 (number guessed)
dist((0,10,240), (255,255,255)) ~ 20000 (number guessed)

并且您知道您的颜色值(0,10,240)应映射到"蓝色"。

要记住的几件事:

  1. 您可能需要查看不同的颜色空间。我建议使用实验室的色彩空间,它的设计是为了使距离与人类体验世界的方式相似。

  2. 签出XKCD Colour Survey。如果您只使用RGB,您甚至可以存储所有颜色到其正确名称的静态映射。如果奥尤有足够的空间,你会有一个即时查找。(为了节省空间,使用来自[r,g,b]->char的三维数组,并根据您的char查找颜色名称)

编辑:您必须检查颜色之间的距离是否大致相等。否则,有些颜色可能会曝光量过大。(例如,在xkcd颜色图表中,一些颜色,如深棕色,只有微小的区域,而其他颜色则非常大。

这篇关于RGB颜色空间到原始颜色名称的映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:RGB颜色空间到原始颜色名称的映射

基础教程推荐