OpenCV霍夫梯度找圓演算法

2021-07-26 18:19:41 字數 536 閱讀 3886

opencv使用霍夫梯度演算法檢測影象中的圓。

演算法步驟如下

尋找圓心

用canny演算法進行邊緣檢測,得到邊界二值圖

用sobel運算元計算原圖的梯度

遍歷邊緣二值圖中的非0點,沿著梯度方向和反方向畫線段(梯度方向為圓弧的法線方向,即半徑方向),線段的起點和長度由引數允許的半徑區間決定。將線段經過的點在累加器中記數

對累計器中的點從大到小排序,記數越大越有可能成為圓心,優先估計半徑

對某個可能的圓心作半徑估計

計算所有邊界圖中的非0點離圓心的距離,並從小到大排序

從小半徑r開始,距離相差在乙個小量範圍內的點,都認為是同乙個圓,記數屬於該半徑r的非0點數,記為n

嘗試放大半徑,同樣記數改半徑的點數

判斷兩個半徑孰優孰劣的依據——點的線密度(點數n/半徑r),密度越高,半徑的可信度越大

重複以上步驟,直至半徑超過引數允許的範圍,從而得到最優半徑

霍夫梯度法找圓

opencv內部提供了乙個基於hough變換理論的找圓演算法,houghcircle與一般的擬合圓演算法比起來,各有優勢 優勢 houghcircle對雜訊點不怎麼敏感,並且可以在同乙個圖中找出多個圓 反觀擬合圓演算法,單純的擬合結果容易受雜訊點的影響,且不支援乙個輸入中找多個圓 opencv內的h...

霍夫檢測圓 霍夫梯度法

承接上篇博文,在基本搞懂霍夫檢測直線是怎麼進化到檢測圓後,開始 痴心妄想 自己寫 了!雖說最後的效果不是很好,但是重要的是在碼 過程中發現和解決的一些問題 不一定有共性,但兄弟萌可以避免下這些bug 上篇博文已經闡述了我們是如何從三維計數 轉到霍夫梯度法的,該演算法主要分為兩步,先找圓心疑似點,再對...

opencv 霍夫圓變換

參考 1 官方文件api 2 d6 d00 tutorial py root.html 官方英文教程 3 4 高階教程 5 官方英文教程 6 7 8 opencv論壇 9 官方github 10 注 安裝的版本 opencv python 3.3.0 cp36 cp36m win amd64.whl...