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

基爾霍夫電流定律例題詳解_基爾霍夫電壓定律例題詳解

opencv霍夫變換的原理

評論