【问题标题】:Mapping RGB Values to color names MATLAB将 RGB 值映射到颜色名称 MATLAB
【发布时间】:2016-04-06 08:44:46
【问题描述】:

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

聚类操作结果示例:

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

 134.2263  146.4977  194.6406
 137.5899   78.5631   50.4859
 111.6383  131.4764   36.3863

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

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

stackoverflow 上有类似的问题,但与 python、java 等相关,而不是 matlab。是否有任何 matlab 功能可以实现这一点?

谢谢!

【问题讨论】:

    标签: matlab image-processing colors image-segmentation matlab-cvst


    【解决方案1】:

    解决方案草图:

    下载包含有关 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 值,在你的表中找到最接近的 rgb 值,并输出匹配的名称。可以使用 Matlab 的knn

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

    编辑 先用行尾分割ctable 中的内容可能更容易,然后当你找到具有 rgb 值的行时,你可以在下一行中查找名称。

    【讨论】:

    • +1,谢谢!但这对我的应用程序来说可能有点太复杂了。你能想出另一种方法,它可以简单地使用大约 10 种主​​要颜色来完成,例如红色 蓝色 绿色 黄色 等,但带有暗、亮等描述?我只能想到在 hsv 中估计这些颜色的范围,然后将其映射到定义的标签。 KNN 分类器是否也适用于这种情况?谢谢。
    • 对于较短的表(您也可以在网上找到,或自己构建),它应该同样适用。 drak/light 可以基于某个阈值。如果它对 hsv 不起作用,您可以随时转换 hsv->rgb 并在 rgb 空间中执行 knn
    • 深色/浅色是否有设定范围?还是我只是从“颜色选择器”应用程序中估算?
    • 我不知道任何范围,但这并不意味着没有。您可以在hsvv 值上尝试一个阈值,看看什么效果最好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2018-06-21
    • 2012-04-03
    • 2011-09-02
    • 2018-12-23
    • 2011-09-18
    相关资源
    最近更新 更多