OpenCV 霍夫變換圓檢測

2021-09-25 16:54:54 字數 1963 閱讀 9168

在直角座標系下,圓的方程表示為

其中,r是圓的半徑,(a, b)是圓心座標。

那麼換一種表達方式

因為在直角座標系下,圓上的所有點都滿足圓的方程,所以直角座標系下的乙個圓對應到abr座標系下就是乙個點。直角座標系下經過乙個點的所有圓在abr座標系下就是一條三維曲線。那麼,直角座標系下圓上的所有點在abr座標系下就是這麼多條三維曲線交於一點。

但是在實際計算中,三維空間意味著更加複雜的運算。opencv對基礎的霍夫圓檢測做了優化,使用兩輪篩選。第一輪篩選使用乙個二維累加器,找出可能是圓的位置。因為圓周上畫素點的梯度方向與半徑的方向一致,所以對每個畫素來說,累加器只對沿梯度方向的入口增加計數。一旦檢測到可能的圓心,就在第二輪篩選中建立半徑值範圍的一維直方圖,這個直方圖的尖峰值就是被檢測圓的半徑。

在實踐中,由於梯度容易受雜訊的影響,因此在進行霍夫圓檢測之前要先對影象進行平滑,以減少影象中可能導致誤判的雜訊。

opencv中的函式圓形

void cv::houghcircles(inputarray image,

outputarray circles,

int method,

double dp,

double mindist,

double param1 = 100,

double param2 = 100,

int minradius = 0,

int maxradius = 0

)

函式引數比較多,可能要反覆調參才能得到比較好的檢測效果。

opencv之霍夫變換圓檢測

霍夫變換就是將平面影象轉換到霍夫空間 極座標 進行特徵計算 圓的幾何標準方程 x a 2 y b 2 r 2 x a 2 y b 2 r 2 x a 2 y b 2 r2圓的極座標方程 x a rco s x a rcos theta x a rc os y b rs in y b rsin the...

OpenCV 霍夫線變換 霍夫圓變換

關於霍夫變換在官方文件opencv249裡的描述如下 api如下 void houghlines inputarray image,outputarray lines,double rho,double theta,int threshold,double srn 0,double stn 0 vo...

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...