2014-01-21 32 views
1

enter image description here如何使用MATLAB

找到二進制圖像中最長的線路正如你在圖像看,我有包含許多行的圖像。我怎樣才能得到最長的線使用matlab,然後刪除其他線?

+0

看起來像劃出的線不是最長的時間。該行不連續。 –

回答

2

首先,正如Lokesh A. R.所提到的,你想要的圖像中的線不是最長的,因爲它不是連續的。

如果你確實想要找到這條線,那麼看看dilation,這將擴大線條,造成連線的小斷裂,然後將線條縮回到相同的厚度。但是,這可能會導致連接線不連接,並且可能不可靠,除非圖像中的線距離足夠遠。

如果你真的只想線路最長,那麼我建議的算法(你將不得不代碼)

  1. 迭代的圖像的像素超過
    1. 馬克每次迭代的像素「visited」
    2. 當你找到一個像素時,看看它所有的直接9個鄰居,檢查這條線是否繼續,如果是這樣(遵循同樣的事情),跟蹤它,跟蹤它的持續時間,它開始的地方(當你完成下面的行時,你知道該回到哪裏)以及哪個像素座標s是該行的一部分(用於輕鬆刪除其餘的圖像)。
      1. 在下一行之後,返回到行的起點並重新開始迭代。
  2. 分析你,你已經收集線的收集和保持一個最長線(或擁有最像素)。
  3. 將圖像中的每個像素設置爲黑色,除非它是您保留的一行的一部分。

這是一個檢測圖像中物體的基本算法,matlab可以做這一步。看看object detection上的數學工作頁面,看看它是否可以「檢測」圖像中的線條並給出關於它們的統計數據(如每個像素的數量)

+0

謝謝你的ide Noremac,我會在matlab上試用這個算法。我認爲這個想法非常有幫助。非常感謝你。 –