2014-01-17 166 views
0

我正在使用EmguCV(.NET版本的OpenCV)開發一個項目,我正在使用概率Hough轉換來查找線條。執行Canny邊緣檢測兩次 - >更好的線檢測?

所以起初我正在執行canny操作符。之後進行Hough變換。

Gray cannyThreshold = new Gray(50); 
Gray cannyThresholdLinking = new Gray(300); 

Image<Gray, Byte> cannyEdges = gray.Canny(cannyThreshold, cannyThresholdLinking); 

LineSegment2D[] linesFound_temporary = cannyEdges.HoughLines 
(
    cannyThreshold,   // 1. Parameter 
    cannyThresholdLinking, // 2. Parameter 
    1,      // 3. Parameter 
    Math.PI/360.0,  // 4. Parameter 
    gray.Width * 0.2,  // 5. Parameter 
    gray.Width * 0.4,  // 6. Parameter 
    gray.Width * 0.1  // 7. Parameter 
)[0]; 

後來我意識到HoughLines-Method已經集成了Canny邊緣檢測。儘管如此,當我使用額外的canny檢測而不是將其排除在外時,我的線檢測結果更好,更穩定。

任何人都可以向我解釋,爲什麼會發生這種情況?還是有誰有同樣的經歷?

回答

0

我在做我的一個項目時經歷過同樣的事情。我認爲這取決於給這兩個函數的參數。如果第一個canny刪除了太多的信息並且沒有行,那麼第二個函數就會消失。如果你做了「第一次通過」,刪除了大部分信息,但留下了非常明顯的線條,那麼霍夫線就沒有什麼用。但是我發現通過第一次調整Hough Line的參數可以獲得幾乎相同的結果。

希望它有幫助!