1. 霍夫變換簡介
- 目的 :從圖像中分離出具有某種相同特徵的幾何形狀
霍夫變換是圖像處理中 從圖像中識別幾何形狀 的基本方法之一
最基本的霍夫變換是從黑白圖像中檢測直線
在圖像處理中可以通過霍夫變換可以快速的檢測出直線或圓
2. 霍夫線變換
霍夫線變換是用來尋找圖片中直線的方法
2.1. 檢測圖片的條件
首先要對圖像進行 邊緣檢測 的處理
也即霍夫線變換的直接輸入只能是 邊緣二值圖像,如下圖:
2.2. 直線的表示
一條直線在圖像二維空間可由兩個變量表示,如:
- 在笛卡爾座標系:可由參數 斜率 k 和 截距 b 表示:y = kx + b
不過,由於直線的斜率可能爲無窮大,或者無窮小
那麼在k-b參數空間就不便於對直線進行描述和刻畫 - 在極座標系:可由參數(r, θ)極徑和極角表示
對於霍夫變換,將用極座標系來表示直線
參考 y=kx + b,直線的表達式可爲:
化簡結果: = xcosθ + ysinθ
一般來說對於點(x0, y0)
可以將通過這個點的一簇直線同一定義爲: = x0cosθ + y0sinθ
這就意味着對於每一對(r, θ)代表一條通過點(x0, y0)的直線
2.3. 所有通過點的直線
如果對於一個給定點(x0, y0)
在極座標對極徑極角平面繪出所有通過它的直線,將得到一條正弦曲線
如對於給定點 x0 = 8 和 y0 = 6,可以繪出下圖:
2.4. θ - r 相交
對圖像中所有點進行上述操作:歷遍 ,得到 ,得到所有通過點的直線的表達
如果兩個不同點經過上述操作後得到的曲線在平面 相交
就意味着 它們可以在同一條直線上
繼續對存在的點 x1=9,y1=4 和 點 x2=12, y2=3 歷遍操作,得到下圖:
這三條曲線在 平面相交於點(0.925, 9.6)
那麼參數對(θ, r)爲點(x0, y0),(x1, y1)和(x2, y2)組成的平面內的直線
2.5. 閾值定義直線
一般來講,一條能夠通過在平面 尋找交於一點的曲線數量檢測
越多曲線交於一點也就意味着這個交點表示的直線由更多的點組成
一般來說可以通過設置直線上點的閾值
來定義多少條曲線交於一點認爲檢測到了一條直線
圖像中的每個點對應曲線間的交點,如果交於一點的曲線數量超過了閾值
那麼可以認爲這個交點所代表的參數對(θ, rθ)在原圖像中爲一條直線
3. 霍夫圓變換
霍夫圓變換的基本原理和霍夫線變換類似
只是點對應的二維極徑極角空間被三維的圓心點x、 y及半徑r空間取代
對圓來說,需要三個參數來表示一個圓 C:(X0, Y0, )
(X0, Y0) 表示圓心的位置, 表示半徑
現在原邊緣圖像的任意點(x,y)對應的經過這個點的所有可能圓
圓的數學的數學表達式爲:(x - x0)2 +(y - y0)2 = r2
是在三維空間由上面這三個參數來表示了,對應一條三維空間的曲線
與二維的霍夫線變換同樣的道理
對於多個邊緣點越多,這些點對應的三維空間曲線相交於一點
那麼經過共同圓的點就越多
類似的可以用同樣的閾值的方法來判斷一個圓是否被檢測到
這就是標準霍夫圓變換的原理
但也正是在三維空間計算量大,標準霍夫圓變化很難被應用到實際中
謝謝!