【问题标题】:Use Octave/Matlab combine multiple blobs in close proximity into one blob使用 Octave/Matlab 将多个靠近的 blob 组合成一个 blob
【发布时间】:2014-08-01 20:00:17
【问题描述】:

我目前正在开展一个项目,该项目利用交通摄像头视频流并对其进行分析。我在 Octave 中编写了一个算法,一个 .m 文件,它能够将多辆汽车的轮廓作为单独的 blob 及其轮廓和中心坐标返回。具体来说,对于 blob 部分,我使用 BWLabel 和 BWBoundaries 并将其应用于我创建的二进制图像,其中 1 是汽车,0 是背景,根据我的算法的其余部分。我在下面有一张图片显示了这一点。

http://imgur.com/25hgrUP

所有的 blob 都是汽车,包括一个有大约 5 个 blob 彼此相邻的汽车。所有这些斑点都是一辆面包车,但不同的颜色和特征使检测系统无法正常工作。有谁知道一种方法可以轻松地将所有这些靠近的 blob 组合成一个 blob。我说的是 Octave 包或 Matlab 工具箱中已经存在的现有算法或函数。如果没有,我将从头开始编写代码并实现它。这个问题只是一个询问是否有预先存在的解决方案的电话,而不是为我编写代码的电话,除非你想:)。

感谢您的帮助,

AeroVTP

【问题讨论】:

  • 你尝试过形态闭合(matlab中的imclose)吗?
  • 在我发布这个之后,我读到了这个,我现在正在实施它。发表您的评论作为答案,如果有效,我会接受。
  • @AeroVTP 你正在实施它吗?为什么?该函数已存在于 Octave 中。
  • 通过实施,我的意思是把它放在我的 Octave 代码中。

标签: algorithm matlab image-processing binary octave


【解决方案1】:

你可以(在一定程度上)用morphological closing 解决这个问题,在Matlab 中它是imclose。您需要小心,因为太近的噪音可能会被包括在内,而太远的真正斑点可能会被排除在外。

【讨论】:

    【解决方案2】:

    虽然 imclose 是一个好主意,但只运行一次它对图像的影响比只运行多次“侵蚀”和“扩张”功能要“强”得多。我个人连续运行了 5 次 erode 和 dilate 函数,以获得早期图像的最佳结果。分别运行 Dilate 和 Erode 命令可为良好的图像处理提供更多控制。

    Imclose 只是一个重复应用 erode 和 dilate 函数的函数。在 Octave 中,膨胀和腐蚀的函数是

    editedImage = bwmorph(initialImage, 'dilate', 5 %number of times to apply% ); 
    
    editedImage = bwmorph(initialImage, 'erode', 5 %number of times to apply% );
    

    我还发明了自己的评论结构:)。

    感谢 wbest 最初的 imClose 想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2022-11-26
      • 2018-10-08
      • 2020-03-31
      • 2021-06-27
      相关资源
      最近更新 更多