在OpenCV中可以執行級聯Hough變換嗎?我理解它只是一個HT,然後是另一個。我面臨的問題是,返回的值始終是rho和theta,絕不會以y截距的形式出現。在OpenCV中級聯Hough變換
是否可以將這些值轉換回y截距並將它們拆分成子空間,以便我可以檢測到消失點?
還是隻是更好地編程一個HT自己的實現,例如,Python?
在OpenCV中可以執行級聯Hough變換嗎?我理解它只是一個HT,然後是另一個。我面臨的問題是,返回的值始終是rho和theta,絕不會以y截距的形式出現。在OpenCV中級聯Hough變換
是否可以將這些值轉換回y截距並將它們拆分成子空間,以便我可以檢測到消失點?
還是隻是更好地編程一個HT自己的實現,例如,Python?
你可以嘗試填充M和C參數霍夫域代替,使表達式y = mx + C可以重新寫爲C = Y - MX所以不是通常rho = x cos(theta)+ y sin(theta),你有c = y - mx
通常,你會通過theta並計算rho,然後你增加accumulator的值一對rho和theta。在這裏,你將通過m的值並計算c的值,然後在累加器中累加m,c元素。得票最多的集裝箱會是正確的M,C
// going through the image looking for edge pixels
for (i = 0;i<numrows;i++)
{
for (j = 0;j<numcols;j++)
{
if (img[i*numcols + j] > 1)
{
for (n = first_m;n<last_m;n++)
{
index = i - n * j;
accum[n][index]++;
}
}
}
}
我想這個地方變得無效是,它難以定義的步長要通過兼併,因爲他們應該從技術上負無窮大到無窮大,從而你會遇到麻煩。對於Hough變換來說,m,c很重要。大聲笑
我想你可以走另一條路,並隔離m,所以它會是m =(yc)/ x,所以現在,你循環了一堆有意義的y值,儘管它仍然是可管理的很難定義你的累加器矩陣,因爲m仍然沒有限制。我想你可以限制你有興趣尋找的m的值。
是的,用rho和theta去把它們轉換成y = mx + c,然後製作一個全新的圖像並重新運行hough變換就更有意義了。
我不認爲OpenCV可以執行級聯hough變換。你應該把它們自己轉換成xy空間。這篇文章可以幫助你:
http://aishack.in/tutorials/converting-lines-from-normal-to-slopeintercept-form/
謝謝。但我認爲我需要直接解析y截距形式的HT,而不是轉換。你知道把Hough空間分成3個子空間是什麼意思,就像他們爲Cascaded Hough變換做的那樣? – saad 2010-11-03 20:56:25