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