霍夫变换算法理解
霍夫變換個人理解就是將一種檢測事件,轉換為一種概率統計問題,期間需要找到起變換公式。其標準定義可自行百度。
一、 霍夫變換直線檢測
直線我們一般可以在直角坐標系用斜截式來定義,即y=k*x+b。但同時也可以用極坐標系進行表示,即xcosθ+ysinθ=r。
這里當(x,y)一定時,當θ在0-pi范圍內,可以得到一條曲線
當同時3個點,作曲線可以得到如下圖
其中,可以看到一個公共交點,該交點就說明,這3個點在交點處的(θ,r)時,處在同一條直線上。當一幅圖像上的需要特征點進行處理時,可以得到一個(θ,r)的直方圖,可以獲取其中極大值點,這些極大值點就是要獲取的待檢測直線。
在opencv使用中,一般步驟:
1、 圖像高斯濾波
2、 Canny邊緣檢測
3、 Houghlines進行霍夫直線檢測
二、 霍夫變換圓檢測
圓檢測和直線檢測思想基本相同,只是在轉換表達式不同。
一般表達一個圓個方程為(x-a)2+(y-b)2=r2,這里將其變換為如下形式表示。
接下來我們可以先獲取每個特征點的梯度,計算每個點在梯度方向上的直線坐標點,將計算的每個點值,放在圖像坐標系中進行獲取直方圖。其中如果一個圓邊緣,經過處理后,其會同時交于一點,其效果如下圖:
也就是說,直方圖中,可以根據一定閾值策略,得到圓心坐標。接下來再有圓心坐標,計算到每個點的距離值,獲取一個距離直方圖,便可以得到圓的半徑值,此時,便完成了圓的檢測工作。
1、 圖像高斯濾波
2、 Canny邊緣檢測
3、 HoughCircles進行霍夫直線檢測
參考鏈接:
1、https://www.cnblogs.com/lancer2015/p/6852488.html
2、https://www.cnblogs.com/long5683/p/9678386.html
3、https://blog.csdn.net/weixin_40196271/article/details/83346442
總結
- 上一篇: python梦幻西游鼠标偏移_梦幻西游鼠
- 下一篇: 一测振系统包括微型计算机,机械工程师职称