霍夫變換檢測直線

2021-07-05 16:28:48 字數 1027 閱讀 1305

對於結構化道路的檢測,常用的方法是採用霍夫變換檢測道路中的直線段。

一條直線可以看做是影象上的若干個畫素點組成,也可以用一條直線方程來表示,如 y=kx+b,那麼霍夫變換檢測直線段其實是將影象畫素點空間變換到引數空間,對於直線來說就是引數(k,b),也可以用來檢測其他形狀如圓和橢圓,只是引數空間表示不一樣了。

圖1由於用斜截式表示直線時無法表示垂直於x軸的直線,那麼這條直線也可以用引數空間(γ,θ)來表示,那麼一條直線也可以表示成:γ=xcosθ+ysinθ。

圖2圖3如圖3所示,影象空間的乙個點可能有無數條直線經過,這些直線如果用引數空間(γ,θ)來表示的話,實際上是一條正弦波函式,也就是說影象空間乙個點對應於引數空間中一條曲線。如果有三條正弦波函式相交於一點,則表示這三點在一條直線上,並且這條直線的引數就是這個交點對應的(γ,θ)。

但是實際在影象中,畫素點是離散的,因此我們可以以一定解析度如為1°,長度為1個畫素點進行遍歷搜尋影象,然後判斷待檢測的輪廓(在用霍夫變換之前一般要先用邊緣檢測得到二值輪廓影象)中是不是有一定數量的畫素點在某一引數的直線上,這樣我們便可以得到某一引數的直線(不能檢測直線段)。

opencv中的霍夫變換函式有三種[2]:

opencv支援三種不同的霍夫線變換,它們分別是:標準霍夫變換(standard hough transform,sht)和多尺度霍夫變換(multi-scalehough transform,msht)累計概率霍夫變換(progressive probabilistic hough transform ,ppht)。

其中,多尺度霍夫變換(msht)為經典霍夫變換(sht)在多尺度下的乙個變種。累計概率霍夫變換(ppht)演算法是標準霍夫變換(sht)演算法的乙個改進,它在一定的範圍內進行霍夫變換,計算單獨線段的方向以及範圍,從而減少計算量,縮短計算時間。之所以稱ppht為「概率」的,是因為並不將累加器平面內的所有可能的點累加,而只是累加其中的一部分,該想法是如果峰值如果足夠高,只用一小部分時間去尋找它就夠了。這樣猜想的話,可以實質性地減少計算時間。

比如檢測校園處道路,效果如下:

[1]

[2]

[3]

霍夫變換檢測直線

對於線性目標提取時,霍夫變換是個很好的手段,博主在這裡做了 實驗,在乙個影象中畫上圓和矩形,通過霍夫變換提取矩形的邊緣。編譯環境為matlab2014a,如下。霍夫變換,找到矩形影象的邊界,用彩色表示出來,矩形和圓不重疊 clc clear all close all i zeros 256,256...

霍夫變換 檢測直線

將笛卡爾座標系的直線用統計展示 座標系a中的點 座標系b中的線 座標系a中的線 座標系b中的點 a中多點的連線 b中多曲線的交點 先理解這樣乙個思維 那麼x y座標系中,點a對應k b座標系的綠直線,點b對應k b座標系的紅直線,連線a b兩點的直線對應,紅綠直線的交點 這裡呼應了上一部分第4點 直...

4 霍夫變換直線檢測

定義 霍夫變換 hough transform 是影象處理中的一種特徵提取技術,可以識別影象中的幾何形狀。它將影象空間中的特徵點對映到引數空間進行投票,通過檢測累計結果的區域性極值點得到乙個符合某特定形狀的點的集合。經典霍夫變換用來檢測影象中的直線,後來霍夫變換擴充套件到任意形狀物體的識別,多為圓和...