2009-09-03 69 views
7

(這是從this previous question的後續)。如何在OpenCV中測試線(Hough變換)的接近度

我能夠成功地使用OpenCV/Hough變換來檢測圖片中的行(掃描文本);起初它會檢測許多行(每行文本至少有一行),但通過試錯法調整「閾值」參數,它現在只能檢測「實際」行。

('閾值'參數取決於圖像大小,如果需要處理不同分辨率的圖像,這是一個問題,但這是另一回事)。

我的問題是,霍夫變換有時會檢測到兩條線,其中只有一條;這兩條線非常接近,並且(明顯)平行。

=>如何識別兩條線幾乎平行且彼此非常接近? (這樣我可以只保留一個)。

+0

你有什麼數據? – Janusz 2009-09-03 14:36:34

回答

8

如果您使用標準或多尺度霍夫,您將以極座標中的線的rho和theta座標結束。 Rho是到原點的距離,θ通常是檢測線和Y軸之間的角度。沒有在opencv中查看hough變換的細節,這在這些座標系中是一條通用規則:當兩條線幾乎平行並且彼此非常接近時: - 它們的幾乎相同且它們的rhos幾乎相同 或 - 他們的泰晤士相距180度,他們的俄羅斯人彼此靠近彼此的負面

我希望這是有道理的。

+0

是的,你是絕對正確的;在發佈我的問題後,我確實發現了這一點;實際上它在OpenCV中非常簡單。謝謝! – Bambax 2009-10-20 08:39:09

+0

另外,如果將'分辨率'參數設置得更高,則找到更少的行;這是我實際需要的。 – Bambax 2009-10-20 08:40:44

+0

我們如何使用rho和theta參數設置'almost'關鍵字的閾值?例如,如果我想知道兩條線是否近似平行,且它們之間的最大角度爲0.5弧度(閾值= 0.5)。 – 2016-11-18 12:15:28

0

有趣的是θ是線和y軸之間的角度。

通常,ρ和θ值可視爲從x軸到垂直於所討論線的直線的角度。 rho就是這條垂直線的長度。因此,θ= 90和ρ= 20將意味着從原點向上20像素的水平線。 在Hough Transform question上顯示一個很好的圖像