【问题标题】:performing border tracing on multiple objects in an image对图像中的多个对象执行边界跟踪
【发布时间】:2013-07-15 02:51:54
【问题描述】:

我开发了一种算法,用于对图像中的对象进行边界跟踪。该算法能够跟踪图像中的所有对象并返回结果,因此您不必将具有多个对象的图像切片来使用它们。

所以基本上我首先找到一个阈值,然后在阈值之后获取二进制图像,然后对其运行算法。

算法如下:

  1. 找到属于任何对象的第一个像素。
  2. 跟踪该对象(有自己的算法)
  3. 获取包含该对象的正方形的最小面积
  4. 将该正方形中的所有像素标记为 0(将其从二值图像中删除)
  5. 从 1 开始重复,直到没有任何对象。

这个算法对于相距很远的物体非常有效,但是当我尝试使用附加的图像时,我也得到了附加的结果。

问题在于,正方形靠近圆形,部分位于包含对象的正方形中,所以这部分被删除,因为程序认为它是第一个对象的一部分。

如果有人对此问题有解决方案,我将不胜感激。

谢谢!

【问题讨论】:

    标签: opencv image-processing computer-vision emgucv


    【解决方案1】:

    一种快速而简单的方法是在擦除形状之前按区域升序对边界框进行排序。这样,首先删除较小的形状,这将减少重叠对象的数量。如果您只有凸形,这就足够了。

    伪代码:

    calculate all bounding boxes of shapes
    sort boxes by area (smallest area first)
    foreach box in list:
        foreach pixel in box:
            set pixel to 0
    

    保证适用于任意形状的方法是使用对象的掩码填充框。您已经创建了一个二进制图像,因此您可以将其用作掩码。

    伪代码:

    foreach box in list:
        foreach pixel in box:
            if (pixel in mask == white): set pixel to 0
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用精明的边缘检测技术来解决此问题。

      您可以在以下网址中找到更多相关信息,

      http://homepages.inf.ed.ac.uk/rbf/HIPR2/canny.htm

      问候

      湿婆

      【讨论】:

        猜你喜欢
        • 2018-08-24
        • 2014-06-16
        • 2018-07-07
        • 2023-04-02
        • 2018-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        相关资源
        最近更新 更多