四、 研究方法與步驟
4.4 霍氏轉換(Hough transform)
霍氏轉換(Hough transform)這套方法是 P.Hough(P.V.C.Hough. Method and Means for Recognizing Complex Patent , December 1962)在 1962 年提 出,而 Barllad 提出一般化的霍氏轉換(generalized Hough transform)以偵測 任意形狀的曲線[4][5][6][10][11]。霍氏轉換是對二值化影像做形狀偵測 (shape detection),主要原理是利用影像中分散的點位置找出特定形狀的參 數值,藉由一對多的映射(由影像空間映射到參數空間)產生參數的所有可 能,在累加所有參數值的投票結果,最後在參數空間內找出最高票的參數 值來當作形狀可能所在的位置。如:直線、圓形等。計算各特徵點可能形 成的圖形參數,統計所有可能的圖形參數後,找出最可能形成圖形的參數 以找出影像中的圖形位置。而一般是用使用在線段的檢測,基本上它有兩 種主要的方式,一種是用斜率來表示,另外一種則是使用角度與半徑的格 式。第一種表示的方式如下:
y ax b
算式 4-6其中 a 代表斜率,只是將常用的斜率所表達的直線方程式作移項動作
而已。而做法是把所有的點(x,y)代入方程式,並且把所有點的解利用聯立
本研究使用霍氏轉換(Hough transform)裡的偵測圓形部份,而一般圓 的數學函式為(x-a)2+(y-b)2=r2,然而在利用霍氏轉換去尋找圓形球體部分 果是前景點的話再做運算,以(x,y)為例,先在(x,y)點上利用半徑 r(10~100) 畫出一個圓形,而且把畫過的位置在參數 acc[a][b]上做累加一[10],統計
完所有可能的圓心位置(a,b)與半徑(r)後,再移至下一個特徵點(x´,y´),
直到所有的點都處理完畢,就可以得到所有可能參數的投票紀錄。而每個 半徑 r 都可以得到一組 acc[a][b],並且找出最大的票數,接下來再去比較 在半徑 r(10~100)之間得到票數哪一個最大,例如:在圖 5-8,其中 27 是 半徑 99 與 51 是圓心位置(x,y),因此找出參數裡面所有最大的值,便可以 找到球所在。
圖 4-5 利用霍氏轉換示意圖
圖 4-6 霍氏轉換流程圖
4.4-1 霍氏轉換加速
霍氏轉換作法所需要的時間花費時間頗長,必須對圖片中每一個像素 點先區分是否為前景點,然後再對這些白色的像素點作霍氏轉換,因此所 需要的時間為圖片的大小乘上半徑 R 的範圍(10~100),為了能使在執行時
能更即時運作分析,因此可以作以下三種方式使其加速:
1.正規化:把圖片資料庫裡的圖片都作正規化處理,讓圖片都正規化 為一樣的圖片大小,例如:400*300 像素的圖片,正規化後使圖片資料庫 裡的圖片都為 300*200 像素,使其長寬縮小使其減少資料,讓運算量變 小。除了上述優點也可以方便統一管理。
2.掃描間距:圓形度數為 360 度,我們提升度數的掃描間距,讓原本 以 1°下去作運算改成 2°、3°、4°或 5°,讓原本半徑 r 需要作 360 次的運算 變成 180 次、120 次、90 次、72 次,如果以 1°跟 5°來比較,一個半徑 r 可以省略 288 次。
3.索引化:先把前景點找出來使其索引化,再讓這些索引化進行霍氏 轉換,這樣可以省略每一次都必須先找出圖片的前景點才能做霍氏轉換,
如此可以省略圖片大小減掉前景點數量再乘上半徑 R 的範圍(10~100),而 所需要的時間只是圖片的前景點數量乘上半徑 R 的範圍(10~100)。
利用上面三個方式可以使霍氏轉換時間縮短,但是因為在掃描間距時
會把間距變大,可能會造成誤判的情形發生,因此在找尋球的準確率跟找 球所需的時間上值得去注意,這方面我們會在實驗結果探討。