将 RGB 值映射到颜色名称 MATLAB

Mapping RGB Values to color names MATLAB

我一直致力于对不同颜色空间的图像执行 K 均值聚类。聚类中心代表颜色值,我想用颜色名称来描述颜色值。

聚类操作结果示例:

我现在想从分割的img中描述这3个像素(RGB值)的颜色名称:

 134.2263  146.4977  194.6406
 137.5899   78.5631   50.4859
 111.6383  131.4764   36.3863

获得如下输出:深绿色、棕色、浅紫色等。

我认为这类似于使用 HTML 颜色代码,但我不确定如何在 matlab 中应用它。

Whosebug 上也有类似的问题,但与 python、java 等无关,与 matlab 无关。是否有任何 matlab 功能可以使这成为可能?

谢谢!

解决方案草图:

下载包含有关 rgb 值和匹配名称的信息的网页:

ctable = urlread('https://en.wikipedia.org/wiki/List_of_colors_%28compact%29');

解析rgb值,每个值恰好出现两次:

rgb_vals = regexp(ctable,'rgb\([0-9]+,[0-9]+,[0-9]+\)','match')';
rgb_vals = rgb_vals(1:2:end);

解析颜色名称:这可能有点棘手,但有可能。通过检查几对,确保顺序与解析的 rgb 值列表相匹配。

最后,构造一个KNN分类器,给定一个新的rgb值,在你的table中找到最接近的rgb值,并输出匹配的名称。您可以使用 Matlab 的 knn.

另一个类似的选择是寻找在线 rgb-to-name 转换器,并在每次需要时向其发送请求。

编辑 先将 ctable 中的内容拆分为 line-endings 可能更容易,然后当您找到具有 rgb 值的行时,您可以在下面的行中查找名称。