【问题标题】:How to find the longest line of a binary image using matlab如何使用matlab找到二值图像的最长线
【发布时间】:2014-01-22 22:14:35
【问题描述】:

正如您在图片中看到的,我的图片包含很多行。如何使用 matlab 获得最长的行,然后删除其他行?

【问题讨论】:

  • 看来划界的时间不是最长的。这条线不连续。

标签: matlab image-processing


【解决方案1】:

首先,正如 Lokesh A. R. 所提到的,您想要的图像中的线条不是最长的,因为它不是连续的。

如果你真的想找到那条线,那么看看dilation,它会扩大线,导致线中的小断点连接,然后将线减小到相同的粗细。但是,这可能会连接您不想连接的线,并且可能不可靠,除非图像中的线相距足够远。

如果你真的只想要最长的线,那么我会建议一种算法(你必须编写代码)

  1. 遍历图像像素
    1. 将您迭代的每个像素标记为“已访问”
    2. 当您找到一个像素时,查看它的所有直接 9 个邻居,以检查该线是否继续,如果是,则跟随它(做同样的事情),同时跟踪它有多长,它在哪里开始(这样您就知道在完成沿线后要返回到哪里),以及哪些像素坐标是该线的一部分(以便于删除图像的其余部分)。
      1. 跟随线后,回到线的起点,重新开始迭代。
  2. 分析您收集的线条集合,并保留线条最长(或像素最多)的线条。
  3. 将图像中的每个像素都设置为黑色,除非它是您要保留的一行的一部分。

这是用于检测图像中对象的基本算法,matlab 可能可以执行此步骤。查看object detection 上的 mathworks 页面,看看它是否可以“检测”图像中的线条并为您提供有关它们的统计信息(例如每个像素的数量)

【讨论】:

  • 感谢您的 ide Noremac,我将在 matlab 上尝试此算法。我觉得这个想法很有帮助。非常感谢。
【解决方案2】:

在这里,阅读:http://www.mathworks.com/help/images/ref/houghlines.html

应该基本上回答你的问题。 HoughLines 是一种比较常用的线检测方法。

【讨论】:

  • 不是直线的霍夫变换吗?
猜你喜欢
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多