Hough Transform 霍夫變換檢測直線

2021-07-03 00:22:29 字數 1463 閱讀 5677

hough transform 霍夫變換檢測直線

從理論到**,再從**到理論

(1)理論之通俗理解:

1.在影象中檢測直線的問題,其實質是找到構成直線的所有的畫素點。那麼問題就是從找到直線,變成找到符合y=mx+c的所有(x,y)的點的問題。

2.進行座標系變化y=mx+c,變成c=-xm+b。直線上的點(x1,y1),在轉換座標系後為一條直線。這個原理應該是高中的。

3.直線上每乙個點在mc座標系中都表現為直線,而且,這些直線都相交於乙個點,(m,c)。找到所有點的問題,轉變為尋找直線的問題。

4.對於影象中的每乙個點,在mc座標系中對應著很多的直線。找到直線的交點,就對應著找到影象中的直線。

如何實現:

1.       將θ角在-90度到90度的範圍裡,劃分為很多區間,對所有的畫素點(x,y)在所有θ角的時候,求出ρ.從而累加ρ值出現的次數。高於某個閾值的ρ就是乙個直線。

2.       這個過程就類似於如下乙個二維的**,橫座標就是θ角,ρ就是到直線的最短距離。

橫座標θ不斷變換,對於所有的不為0的畫素點,計算出ρ,找到ρ在座標(θ,ρ)的位置累加1.

3.       上圖中區域性最大的就是找到的直線的θ和ρ的值。

(2) 具體**片段

for( ang = 

0, n = 

0; n 

//stage 1. fill accumulator

for( i = 

0; i 

for( j = 

0; j 

} //stage 2. find local maximums

for( r = 

0; r 

for( n = 

0; n 

//stage 3. sort the detected lines by accumulator value

icvhoughsortdescent32s( sort_buf, total, accum );

//stage 4. store the first min(total,linesmax) lines to the output buffer

linesmax = min(linesmax, total);

scale = 

1./(numrho+

2);for( i = 

0; i 

霍夫變換 Hough Transform

霍夫變換的主要作用是從影象中檢測出具有某種相同特徵的幾何形狀,如直線 圓等。霍夫變換的基本原理 例如檢測情景為直線檢測。我們知道,在直角座標系下,直線方程表示為y k x b 其中k,b 為引數,表示直線的斜率和截距。那麼,對於直角座標系下的某個特定點 x 0,y0 過該點的任意直線方程為y0 k ...

Hough transform 霍夫變換

主要內容 1 hough變換的演算法思想 2 直線檢測 3 圓 橢圓檢測 4 程式實現 hough變換是影象處理中從影象中識別幾何形狀的基本方法之一。hough變換的基本原理在於利用點與線的對偶性,將原始影象空間的給定的曲線通過曲線表達形式變為引數空間的乙個點。這樣就把原始影象中給定曲線的檢測問題轉...

Hough Transform 霍夫變換檢測直線

從理論到 再從 到理論 1 理論之通俗理解 1.在影象中檢測直線的問題,其實質是找到構成直線的所有的畫素點。那麼問題就是從找到直線,變成找到符合y mx c的所有 x,y 的點的問題。2.進行座標系變化y mx c,變成c xm b。直線上的點 x1,y1 在轉換座標系後為一條直線。這個原理應該是高...