hough变换原理
霍夫變換運用兩個坐標空間之間的變換將在一個空間中具有相同形狀的曲線或直線映射到另一個坐標空間的一個點上形成峰值,從而把檢測任意形狀的問題轉化為統計峰值問題,本文介紹hough變換檢測直線、圓的原理。
霍夫變換于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推廣使用,經典霍夫變換用來檢測圖像中的直線,后來霍夫變換擴展到任意形狀物體的識別,多為圓和橢圓。
hough線檢測原理
在笛卡爾坐標系中有 y = kx +b,確定一條直線只需要確定k,b的值。對于過點(x0,y0)的直線有以下滿足以下表達式的k,b 值。b=-kx0+y0。如果某一組(b,k)滿足多個點(x0,y0),(x1,y1),(x2,y2),則說明這幾個點都在直線y=kx+b上,所以可以確定一條直線。下圖演示了這個情況:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-s2Ek2vHP-1574154843803)(https://chenandongtime.github.io/img/1565954684619.png)]
紫色線即為所求直線。
在笛卡爾坐標系下,特殊直線方程不好表達.(b,k)的可視化效果也不好,將直線方程轉移到極坐標系。
row = y0 * sin(theta)+x0*cos(theta)可以化簡為:row = r * sin(theta + fa)。不同的(x0,y0)的坐標對應的r 和fa 不同 ,但是如果共線則有一組(row,theta)相同,即表現為圖像相交。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CZSueg7p-1574154843804)(https://chenandongtime.github.io/img/1565955367220.png)]
從統計學上交點的的頻率更高,也即是峰值。
hough圓檢測原理
從線檢測原理可以總結出,hough變化就是把解析幾何的幾個參數值確定,如何確定?就是轉化到參數坐標系,觀察參數的頻率峰值,確定合適的參數值。
在圓中有三個參數 (x-a)^2 + (y-b)^2 = C^2。可以先確定一個C值,這樣(a,b)集合就組成了一個以(x0,y0)為集合中心的圓,改變C值獲得不同大小的圓,這時就可以把C值當作Z坐標,參數集合就變成一個倒圓錐的形狀。多個不同的(x,y)坐標形成多個不同的倒圓錐,其交點及時參數值。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oLOd3VP4-1574154843805)(https://chenandongtime.github.io/img/1565956078452.png)]
更多參數的幾何形狀也可以如此推理,但是要注意計算復雜度。
參考文獻:https://blog.csdn.net/shenziheng1/article/details/75307410
總結
- 上一篇: OpenCV学习笔记十一-findcou
- 下一篇: Matlab-OpenCV-VC-混合编