【问题标题】:how to detect colour from an image matlab?如何从图像matlab中检测颜色?
【发布时间】:2014-02-28 13:04:01
【问题描述】:

我们正在做一个基于 mat lab 的机器人项目。它实际上根据对象的颜色对对象进行分类,因此我们需要一种算法来从使用 mat lab 的相机捕获的图像中检测特定颜色。 如果有人可以帮助我,那将是一个很大的帮助。its the video of the project

【问题讨论】:

标签: matlab image-processing


【解决方案1】:

回应 Amro 的回答:

上面的五个正方形在 HSV 空间中都具有相同的色调值。按色相选择很有帮助,但您还需要对饱和度和值施加一些限制。

HSV 允许您以更人性化的方式描述颜色,但您仍然需要查看所有三个值。

【讨论】:

  • 考虑这些的一种方式是,它们在不同的照明条件下代表某种相同的颜色(紫色)。因此,色调可用于检测相同颜色的不同深浅,这在计算机视觉任务中通常很有帮助:皮肤检测、对象跟踪等。
  • 我同意色调是最好的起点。但是您的陈述不适用于边缘情况。成像系统中的噪声和系统误差会产生误报。例如,灰色对象将具有 一些 色调值,但它通常是由噪声引起的无意义值。与暗影相同。高光反映光源的颜色。如果相机的白平衡不正确,恒定的色调值将毫无用处。一个健壮的算法应该做一些额外的步骤。
【解决方案2】:

作为起点,我将使用 rgb 空间和欧几里得范数来检测像素是否具有给定的颜色。通常,一个像素有 3 个值:[red green blue]。您还有 3 个值定义目标颜色:[255 0 0] 表示红色。计算这两个向量之间的欧几里德范数,并应用决策阈值对像素的颜色进行分类。

最终,您想要摆脱亮度因素(即,它是亮红色还是暗红色?)。您可以切换到 HSV 空间并在 H 值上使用相同的范数。或者您可以使用[red/green blue/green] 向量。在此之前,对图像应用低通滤波器,因为除法(也存在于 hsv2rgb 变换中)往往会增加噪声。

【讨论】:

  • 谢谢大家的回复,
【解决方案3】:

您可能希望转换为 HSV 颜色空间,并根据色调值检测颜色。 MATLAB 提供了RGB2HSV 函数。

这是在 File Exchange 上提交的an example,说明了基于色调的颜色检测。

【讨论】:

    【解决方案4】:

    为了获得单色蒙版,首先使用 rgb2gray 将 rgb 图像灰度转换。还从 rgb 图像中提取所需的颜色平面,(例如,为了获得红色纯色,请给出 rgb_img(:,:,1))。从灰度图像中减去给定的平面............

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 2020-02-07
      • 2016-10-07
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2016-08-29
      相关资源
      最近更新 更多