簡體   English   中英

如何使用Matlab查找二進制圖像的最長行

[英]How to find the longest line of a binary image using matlab

在此處輸入圖片說明

如您在圖像中看到的,我的圖像包含很多行。 如何使用Matlab獲得最長的線,然后刪除其他線?

首先,如Lokesh AR所述,圖像中所需的線不是最長的,因為它不連續。

如果您確實希望找到該線,請查看膨脹 ,它會擴大線的長度,在連接的線中造成小斷裂,然后將線減小到相同的厚度。 但是,這會冒着連接您不想連接的線的風險,並且除非圖像中的線相距足夠遠,否則可能不可靠。

如果您確實只想要最長的行,那么我建議使用一種算法(您必須編寫代碼)

  1. 遍歷圖像像素
    1. 將您迭代的每個像素標記為“已訪問”
    2. 當您找到一個像素時,請查看其所有9個相鄰像素,以檢查該行是否繼續,如果行,則跟隨該行(做相同的事情),並跟蹤行的長度和起始位置(因此您知道在完成該行之后要返回的位置),以及哪些像素坐標是該行的一部分(以便輕松刪除其余圖像)。
      1. 跟隨該行之后,返回到該行的起點並再次開始迭代。
  2. 分析您收集的線條集合,並保持線條最長(或像素最多)。
  3. 將圖像中的每個像素設置為黑色,除非它是您要保留的一行的一部分。

這是檢測圖像中對象的基本算法,matlab可以執行此步驟。 查看有關對象檢測的 mathworks頁面,看看它是否可以“檢測”圖像中的線條並為您提供有關它們的統計信息(例如每個像素的數量)

在這里,請閱讀以下內容: http : //www.mathworks.com/help/images/ref/houghlines.html

基本上應該回答您的問題。 HoughLines是檢測線的較常見方法之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM