定義:
霍夫變換(hough transform)是影象處理中的一種特徵提取技術,可以識別影象中的幾何形狀。它將影象空間中的特徵點對映到引數空間進行投票,通過檢測累計結果的區域性極值點得到乙個符合某特定形狀的點的集合。經典霍夫變換用來檢測影象中的直線,後來霍夫變換擴充套件到任意形狀物體的識別,多為圓和橢圓。它的抗雜訊、抗形變能力較強。另一種直線提取的方法是對影象邊緣點進行鏈碼追蹤,在得到的鏈碼串中提取直線。
霍夫變換將在乙個空間中具有相同形狀的曲線或直線對映到另乙個座標空間的乙個點上形成峰值,從而把檢測任意形狀的問題轉化為統計峰值問題。
標準霍夫變換:
考慮點和線的對應關係,過一點(x1,y1)的直線可表示為:y1=kx1+b,將變數和引數互換,已知乙個點(x1,y1),經過這一點的直線簇可以表示為b=(-x1)k+y1。位於同一條直線上的點具有相同的斜率和截距,反映到引數空間上就是這些直線會交於同一點(k,b)。
舉個例子:影象空間有三個點(1,1),(2,2),(3,3),他們在直線y=1*x+0上,如下圖所示
互換引數,在引數空間裡這三個點對應三條直線:1=k+b,2=2*k+b,3=3*k+b,交於同一點(1,0),這一點即影象空間中直線的斜率和截距,如果我們能得到這些點,也就得到了影象空間的直線:
由於上面的變換不能表示斜率為無窮大的情況,因此,採用極座標的方式:rho = x * cos(theta) + y * sin(theta):
在實際操作時,步驟如下:
1、得到影象的邊緣資訊;
2、對邊緣影象中的每乙個點,在k-b空間中畫出一條直線(實際是在極座標中畫出一條曲線)
3、對各直線上的點,我們採取「投票」(vote)的方法,即累加:有直線經過這一點,這一點的值加1;
4、遍歷k-b空間,找出區域性極大值點,這些點的座標(k,b)就是原影象中可能的直線的斜率和截距。
霍夫變換的計算量和儲存都是很大的。
同樣的原理,我們可以用來檢測圓,等式變為:(x –a ) ^2 + (y-b) ^ 2 = r^2,這樣霍夫的引數空間就變成乙個三維引數空間。若給定圓的半徑則簡化為二維霍夫引數空間。
霍夫變換檢測直線
對於結構化道路的檢測,常用的方法是採用霍夫變換檢測道路中的直線段。一條直線可以看做是影象上的若干個畫素點組成,也可以用一條直線方程來表示,如 y kx b,那麼霍夫變換檢測直線段其實是將影象畫素點空間變換到引數空間,對於直線來說就是引數 k,b 也可以用來檢測其他形狀如圓和橢圓,只是引數空間表示不一...
霍夫變換檢測直線
對於線性目標提取時,霍夫變換是個很好的手段,博主在這裡做了 實驗,在乙個影象中畫上圓和矩形,通過霍夫變換提取矩形的邊緣。編譯環境為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點 直...