來源:技術(shù)飯
霍夫變換是一種對(duì)圖像中形狀的定位技術(shù),常被用于提取圖像中的直線,圓和橢圓等簡(jiǎn)單形狀。霍夫變換運(yùn)用兩個(gè)坐標(biāo)空間之間的變換,將在一個(gè)空間中具有相同形狀的曲線或直線映射到另一個(gè)坐標(biāo)空間的一個(gè)點(diǎn)上形成峰值,從而把檢測(cè)任意形狀的問題轉(zhuǎn)化為統(tǒng)計(jì)峰值問題。
簡(jiǎn)單形狀指可以用少量參數(shù)表示的形狀,如,直線可由兩個(gè)參數(shù)表示。霍夫變換的主要優(yōu)點(diǎn)是它對(duì)遮擋不敏感。本文通過一個(gè)簡(jiǎn)單的例子來介紹霍夫變換如何運(yùn)作的。
霍夫變換檢測(cè)直線
直線的方程通常表示為:
該函數(shù)中斜率m可以取介于–∞到+∞之間的值。但對(duì)于霍夫變換,參數(shù)需要有界。故在霍夫變換中,直線的極形表示為:
(方程1)
這里ρ表示直線與原點(diǎn)的垂直距離(以像素為單位),θ是以弧度為單位測(cè)量的角度,直線與原點(diǎn)形成的角度,如下圖所示:
在理論上,ρ可能取0到+∞之間的值,但因?yàn)閳D片本身是有限的,故ρ也是有界的。
累加器
在2D空間中,每一個(gè)(ρ,θ)對(duì)應(yīng)一條線,這個(gè)過程也叫做線由ρ和θ參數(shù)化。
下圖2D陣列被稱為累加器,因?yàn)槲覀儗⑹褂眠@個(gè)陣列的倉來收集圖像中存在哪些線的證據(jù)。左上角的單元格對(duì)應(yīng)于a(-R,0),右下角對(duì)應(yīng)于(R,π)。隨著收集到更多關(guān)于存在具有參數(shù)ρ和θ的線的證據(jù),容器內(nèi)的值(ρ,θ)將增加。
檢測(cè)圖像中的線條需要以下幾個(gè)步驟:
1.初始化累加器
首先需要?jiǎng)?chuàng)建一個(gè)累加器數(shù)組。累加器中的單元格數(shù)量是一個(gè)設(shè)計(jì)決定。假設(shè)選擇了一個(gè)10×10的累加器,意味著ρ只能取10個(gè)不同的值,θ可以取10個(gè)不相同的值,因此程序可以檢測(cè)到100種不同的線。累加器的大小也將取決于圖像的分辨率。
2.檢測(cè)邊緣
當(dāng)累加器設(shè)置好后,我們需要為累加器的每個(gè)單元搜集數(shù)據(jù)。如果圖像中有一條可見線,則邊緣檢測(cè)器應(yīng)在該線的邊界處發(fā)射。這些邊緣像素為線的存在提供了數(shù)據(jù)。邊緣檢測(cè)的輸出是邊緣像素的陣列 [ (x1, y1), (x2, y2) ... (xn, yn)]
3. 按邊緣像素進(jìn)行投票
對(duì)于上述陣列中的每個(gè)邊緣像素(x,y),我們將θ的值從0變?yōu)棣校⑵浯敕匠?,以獲得ρ的值。在下圖中,我們改變?nèi)齻€(gè)像素的θ(由三條彩色曲線表示),并使用方程1獲得ρ的值。這些曲線在一點(diǎn)相交,這表明參數(shù)為θ=1和ρ=9.5的線正在穿過它們。
我們會(huì)得到數(shù)百個(gè)邊緣像素,累加器用于找到由邊緣像素生成的所有曲線的交點(diǎn)。
假設(shè)我們的蓄能器尺寸為20×20。因此,θ有20個(gè)不同的值,因此對(duì)于每個(gè)邊緣像素(x,y),我們可以使用方程1計(jì)算20個(gè)(ρ,θ)對(duì)。與這20個(gè)(ρ,θ)值相對(duì)應(yīng)的累加器的bin遞增。我們對(duì)每個(gè)邊緣像素都這樣做,現(xiàn)在我們有了一個(gè)累加器,它擁有關(guān)于圖像中所有可能線條的所有數(shù)據(jù)。我們可以簡(jiǎn)單地選擇累加器中高于某個(gè)閾值的倉,以找到圖像中的線。如果閾值更高,則強(qiáng)線更少,如果閾值更低,就會(huì)發(fā)現(xiàn)大量的線,包括一些弱線。
在OpenCV中,使用Hough變換的線檢測(cè)在函數(shù)HoughLines和HoughLinesP中實(shí)現(xiàn)。此函數(shù)包括以下參數(shù):
edges:邊緣檢測(cè)器的輸出
line:用于存儲(chǔ)線的起點(diǎn)和終點(diǎn)坐標(biāo)的矢量。
rho:分辨率參數(shù)ρ(以像素為單位)
θ:參數(shù)θ的分辨率,單位為弧度
threshold:檢測(cè)直線的最小交點(diǎn)
結(jié)果:
霍夫變換檢測(cè)圓
在線霍夫變換的情況下,我們要檢測(cè)圓需要三個(gè)參數(shù):(x,y)圓心的坐標(biāo),半徑。所以圓探測(cè)器將需要一個(gè)3D累加器,每個(gè)參數(shù)一個(gè)。圓的方程為:
要檢測(cè)圓需要以下步驟:
1. 在邊緣檢測(cè)器(Canny)的幫助下找到給定圖像中的邊緣。
2. 為圓半徑的最大值和最小值設(shè)置了閾值。
3. 在3D累加器陣列中收集存在具有不同中心和半徑的圓的數(shù)據(jù)。
函數(shù)HoughCircles在OpenCV中用于檢測(cè)圖像中的圓。它采用以下參數(shù):
image:輸入圖像。
method:檢測(cè)方法。
dp:累加器分辨率與圖像分辨率的反比。
mindst:檢測(cè)到的圓中心之間的最小距離。
param_1和param_2:這些是特定于方法的參數(shù)。
min_Radius:待檢測(cè)圓的最小半徑。
max_Radius:要檢測(cè)的最大半徑。
檢測(cè)結(jié)果如下,其質(zhì)量很大程度上決定于邊緣的質(zhì)量。
霍夫變換最早于1962年被提出,但隨著計(jì)算機(jī)視覺近年來的飛速發(fā)展,這種算法才開始廣泛使用。如今,特征提取的需求量越來越大,對(duì)于數(shù)據(jù)進(jìn)行標(biāo)記所耗費(fèi)的時(shí)間和精力也極大,而霍夫變換可在復(fù)雜的場(chǎng)景中提取特征,應(yīng)用范圍十分廣泛。
審核編輯:湯梓紅
-
圖像
+關(guān)注
關(guān)注
2文章
1089瀏覽量
40592 -
定位技術(shù)
+關(guān)注
關(guān)注
7文章
294瀏覽量
25401 -
2D
+關(guān)注
關(guān)注
0文章
66瀏覽量
15245 -
累加器
+關(guān)注
關(guān)注
0文章
50瀏覽量
9498
原文標(biāo)題:霍夫變換基礎(chǔ)簡(jiǎn)述
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
霍夫變換檢測(cè)圓,用于球體識(shí)別,如何標(biāo)定
驗(yàn)證基爾霍夫定律
![驗(yàn)證基爾<b class='flag-5'>霍夫</b>定律](https://file1.elecfans.com//web2/M00/A4/66/wKgZomUMNAiAEhOWAAAr2w2A9Is623.jpg)
基爾霍夫定律實(shí)驗(yàn)
![基爾<b class='flag-5'>霍夫</b>定律實(shí)驗(yàn)](https://file1.elecfans.com//web2/M00/A4/66/wKgZomUMNAuAOm5XAAAsewCdG80602.jpg)
基爾霍夫定律與疊加原理
![基爾<b class='flag-5'>霍夫</b>定律與疊加原理](https://file1.elecfans.com//web2/M00/A4/70/wKgZomUMNDWAPrBjAAAmZ3hR7xc495.jpg)
簡(jiǎn)述基爾霍夫電流定律_基爾霍夫電流定律公式_基爾霍夫電流定律教案
![<b class='flag-5'>簡(jiǎn)述</b>基爾<b class='flag-5'>霍夫</b>電流定律_基爾<b class='flag-5'>霍夫</b>電流定律公式_基爾<b class='flag-5'>霍夫</b>電流定律教案](https://file1.elecfans.com//web2/M00/A6/CB/wKgZomUMQH-AdFaWAAAkYkaEi6A322.png)
基爾霍夫電流定律例題詳解_基爾霍夫電壓定律例題詳解
![基爾<b class='flag-5'>霍夫</b>電流定律例題詳解_基爾<b class='flag-5'>霍夫</b>電壓定律例題詳解](https://file1.elecfans.com//web2/M00/A6/CB/wKgZomUMQH-AfSsrAAAhi-MFvX8868.png)
opencv霍夫變換的原理
![opencv<b class='flag-5'>霍</b><b class='flag-5'>夫</b><b class='flag-5'>變換</b>的原理](https://file1.elecfans.com//web2/M00/A7/04/wKgZomUMQdeAMqTgAABaE6oqhvU327.png)
一文解讀經(jīng)典霍夫變換(Hough Transform)
![一文解讀經(jīng)典<b class='flag-5'>霍</b><b class='flag-5'>夫</b><b class='flag-5'>變換</b>(Hough Transform)](https://file.elecfans.com/web1/M00/EC/55/pIYBAGCA7YaAaeqxAAAlKjMwVpE083.png)
評(píng)論