-1

我有這樣的二值圖像:
二進制圖像標記與Hough變換

我想躺在標註同一線路上 這樣的像素:

我試過霍夫轉變。但是,如您所見,找不到所有行。 有沒有人有任何想法?

+1

可能是你使用的門檻問題吧?那些未被識別的行具有較少的像素投票,因此您會希望Hough變換中的那些行的「投票」強度更小。你有沒有嘗試改變門檻? – Falimond

+1

...或降低hough空間分辨率,因爲您的線條不完美。 – gfkri

+0

感謝您的意見 –

回答

0

霍夫應該對這個應用程序很好。正如Falimond和gfkri所建議的那樣,標準Hough技術的一些參數調整將有所幫助。

幾個想法:

  1. 相反計數霍夫投票,確定行密度。找到多個候選行後,確定每行在圖像中佔用的最大像素數。 (通過中心的線比通過拐角附近的線的線長)。將容器計數[投票]除以最大可能的線長以產生線密度。然後按線密度過濾。當你遵循這種技術時,你通常需要爲密度和最小長度設置閾值 - 你不想找到8像素段,它們恰好是直的,而是與它們所屬的線略有偏斜。
  2. 首先擴大圖像;從它的外觀來看,你可以擴張很多。當白色像素塊擴張時,沿着霍夫擬合線的點會有更高的密度。膨脹後,您還可以對圖像進行縮減採樣(例如從640x480到160x120)以減少必須處理的點數。 [您也可以應用高斯模糊來生成灰度圖像。這將原始邊緣點保持爲最強的峯值。然後,您可以在Hough累加器中使用加權強度值。]
  3. 作爲(2)擴展的替代方法,對於圖像中的每個(x,y)白色像素,也會爲其所有相鄰像素的累加器箱添加投票:(x-1,y-1),(x,y-1),...。 。 。 (X + 1,Y + 1)。這可能是對你的代碼更快的改變。
  4. 降低角分辨率。也就是說,如果你的Hough累加器使用角度增量爲1度,請嘗試角度增量2度。
  5. 將您的(R,theta)累加器圖 - 您可以將其視爲一種2D強度圖像 - 並在識別峯之前對其進行平滑處理。如果你傾向於得到兩條几乎重疊的線條,則可能只需要平滑處理,因爲沿着你認爲應該是一條線的點是分散在雙峯叢中的。

長話短說:根據gfkri的建議,通過降低有效分辨率來簡化任務。考慮擬合N像素厚的霍夫線段而不是1像素霍夫線。