如何根据颜色和大小细分对象?

时间:2012-06-12 22:05:17

标签: image-processing opencv computer-vision image-segmentation

我有两个图像处理问题,我正在使用Open-CV处理。

  1. 识别彼此不同颜色的相似物体。
  2. 识别彼此不同大小的相似彩色物体。
  3. 方案1和2的示例图像;

    1

    Different colored

    2

    Different sized

    两个图像都有三种类型的感兴趣对象。 (三种颜色或尺寸)

    我遇到的技术包括阈值处理,然后使用像素计数的侵蚀,使用RGB值进行颜色分割。

    什么是良好的工作链,什么是开始的好地方?

3 个答案:

答案 0 :(得分:6)

对于颜色分割,您应远离RGB,因为相似的颜色与线性无关。

作为示例,2个相似的颜色(具有相同的色调)可能具有非常不同的RGB值:

Same Hue and Very Different RGB values

最好使用LUV或HSV等颜色空间,这些颜色空间与亮度分开。例如,您可以在LUV的U,V组件上尝试聚类算法。

答案 1 :(得分:2)

查看cvBlob,它可以很好地处理复杂的形状。

答案 2 :(得分:2)

  1. 显然使用RGB值可能是从这里开始的最佳方式。使用函数cvSplit,它将为您提供三个分离的计划B,G和R(使用OpenCV的BGR顺序,而不是RGB)。在每一个中,您应该只看到相应颜色的圆圈。

  2. 我建议首先使用Canny算法执行边缘检测,通过函数cvCanny在OpenCV中实现,然后使用Hough算法进行圆检测,也在OpenCV中实现。如果我记得很清楚,Hough圆圈的OpenCV函数会返回圆形属性(半径...),这样您就可以根据它们的大小来识别圆圈。 2的另一个选择是Hit& Miss算法,它使用形态学。我从未使用过OpenCV的形态学,只使用Matlab。

  3. 玩得开心