2011-07-17 72 views
9

執行霍夫變換後,如何檢測線段而不是圖像中的線條?保存每個蓄電池箱的最小和最大座標是否有意義,或者有更好的方法嗎?從霍夫變換中提取線段

我沒有使用OpenCV,順便說一句。

回答

2

即使您不使用OpencV您可以查看返回線段的HoughLinesP function的代碼。

是的,保存累加器箱的極限座標是有道理的。

[編輯] 2011-07-19] 如果你有多條線段與belisarius' example above位於同一條線上,那麼你將不得不做更多的工作,只記得極限座標是不夠的。所以這取決於你的確切應用。

+0

對我死鏈接 –

+0

是老鼠死了 – mcy

+0

更新了鏈接 –

1

Matlab有houghlines函數,它完全符合你的要求。它基於hough變換提取線段。

http://www.mathworks.com/help/toolbox/images/ref/houghlines.html

保存爲霍夫箱極端座標,如果兩個獨立的線段位於同一條線路將無法正常工作。

+0

我不能使用像OpenCV或Matlab這樣的大包,因爲我在嵌入式平臺上。 – mdm

+1

但是你可以看到源代碼或讀取算法描述。 – ton4eg

4

我認爲這一形象,顯示了霍夫變換線路和段將幫助您捕捉正在發生的事情:

enter image description here

4

基本上,你必須追蹤到底是哪點貢獻了投票給每個霍夫斌。您可以在填滿容器後(如Matlab版本)或填充容器(更高效,但也更耗費內存,可能不適合嵌入式平臺)執行此操作。從那裏,您可以沿着線條上的像素來提取實際的線段,並在相鄰像素之間的間隙太大時創建一個新的線段。

請參閱this partial description of the Matlab algorithm以獲取有關如何提取哪些像素貢獻給特定Hough bin的更多信息,包括實際實現(鏈接爲hough_bin_pixels.m)。