艾裕豐,趙 敏,張 琪,雷 杰,白小亮
(1.中國石油集團石油管工程技術研究院,陜西 西安 710077;2.西安理工大學 機械與精密儀器工程學院,陜西 西安 710048;3.西安捷創(chuàng)測控技術有限公司,陜西 西安 710048)
圖像測量技術在現(xiàn)代工業(yè)中應用愈來愈廣泛,為了提高測量精度,首先要求相機畸變得到控制,因此相機標定是圖像測量和機器視覺應用中很重要的一個環(huán)節(jié)。相機標定需要使用標定模板,通常標定模板采用等間距的國際棋盤格圖案。黑白棋盤格角點檢測的準確與否將會對標定結果的精確性產(chǎn)生很大影響。
角點是圖像中的強特征點,其對圖像處理、匹配、計算機視覺具有重要作用。在棋盤格標定中,角點檢測是相機標定的關鍵步驟。目前棋盤格角點檢測算法主要分為兩類[1-2]:基于圖像角點的檢測方法和基于圖像邊緣的檢測方法。基于圖像角點的檢測方法是一種基于圖像灰度的檢測方法,這類方法主要考慮像素鄰域點的灰度變化,將與臨點亮度對比足夠大的點定義為角點?,F(xiàn)有角點檢測比較成熟的算法有SUSAN算法、Harris算法、FAST算法等[3-5]。角點檢測算法的精度依賴于參數(shù)設置,并且對圖像噪聲比較敏感,因此檢測結果的魯棒性不高。基于圖像邊緣的檢測方法要先對圖像進行邊緣檢測[6],然后通過Hough變換等手段求取直線,再通過兩條直線的交點求出角點的精確坐標,這種方法簡單易行。基于邊緣的角點檢測,由于利用了大量邊緣信息,通過多點平均,可以有效地濾除噪聲點誤差,提高結果的魯棒性。目前利用邊緣檢測方法,是采用整像素邊緣,再計算線段交點,獲取棋盤格角點。由于整像素帶來的舍入誤差,會傳遞到角點計算中,降低檢測精度。
本文提出一種亞像素邊緣角點檢測方法。采用結合像素插值和灰度曲線擬合的方法提取亞像素邊緣,再通過邊緣相交獲得角點位置。本算法可有效的提高角點檢測精度且不受棋盤格角點方位影響。
圖像邊緣提取,目前常見的算法有Prewitt算法、Sobel算法、Canny算法和Laplacian算法[7-9]。這些典型的一階導數(shù)邊緣檢測算子僅在兩個方向上計算邊緣強度,且只在灰度變化最大的方向上求解梯度,在沒有模糊干擾的情況下,一個理想的邊緣灰度分布就可模擬為一個階躍函數(shù)(一維條件下):
(1)
式中:f(x)表示位于像素處的灰度值,h和k分別表示灰度背景和灰度反差,R為設定值。
然而,由于模糊效應在圖像形成的過程中對視覺系統(tǒng)的影響,階躍模型并不能真實體現(xiàn)邊緣灰度的分布情況,但是這些算法通過合理的參數(shù)設置,可以得到單像素圖像邊緣位置。亞像素邊緣是在整像素邊緣的基礎上,通過灰度曲線梯度得到的,見圖1。
圖1 整像素邊緣與亞像素邊緣
為了提高邊緣的位置精度,需要確定亞像素邊緣。目前已有插值、矩法及曲線擬合等多種方法[10-11]。其中,擬合類亞像素邊緣檢測算法,由于對噪聲具有良好的魯棒性,能夠較好的保證檢測精度,獲得了較廣泛的應用。而結合插值和曲線擬合的方法將進一步提高亞像素邊緣檢測精度。
目前插值和曲線擬合的方法大都是在水平或垂直方向計算,得到亞像素邊緣,但在棋盤格角點檢測時,邊緣線大多是傾斜位置,因此要建立邊緣法向方向亞像素定位算法。
根據(jù)圖像質量,本文采用邊緣5個點擬合檢測亞像素邊緣。點數(shù)增多會引入無關信息,降低擬合精度。
圖2 邊緣像素點5×5鄰域
在法線方向以單個像素距離在中心像素兩端各插值兩個像素點,得到5個法線方向虛擬像素點,通過5個虛擬像素點,擬合出法線方向灰度變化曲線,計算梯度極值,得到法線方向亞像素點坐標。虛擬像素點灰度值通過其相鄰四個像素灰度值插值計算,見圖3。
圖3 虛擬像素點灰度插值
虛擬像素點在4個整像素中坐標為(x,y),到中心像素點(0, 0)的距離為1,即:
x=cosθ
(2)
y=sinθ
(3)
對虛擬像素點Ixy灰度采用雙線性插值方法計算:
(4)
(5)
(I10-I00)x+(I01-I00)y+I00
(6)
擬合類亞像素邊緣檢測的基本思路是先給出近似真實邊緣灰度分布的擬合函數(shù)模型,然后獲得模型中的參數(shù),從而實現(xiàn)亞像素邊緣定位。Gauss模型邊緣檢測求解的時間往往較長,很難滿足實時檢測的需求。
分析發(fā)現(xiàn)反正切函數(shù)圖像與邊緣區(qū)域灰度分布非常相似。為了進一步確認,增加了不同擬合函數(shù)的對比實驗。相關指數(shù)R表征擬合效果的好壞,其數(shù)值越大擬合效果越好[12]。Gauss擬合R1=0.996 68,反正切擬合R2=0.998 17,雙曲正切擬合R3=0.987 58。根據(jù)實驗對比,利用反正切函數(shù)可以簡單、準確擬合邊緣實際的灰度分布情況。邊緣模型擬合函數(shù)為[13-14]:
y=a1arctan(a2x+a3)+a4
(7)
式中:a1表示將反正切函數(shù)趨于的最大值與最小值擴大至原來的a1倍;a2和a3表示反正切函數(shù)曲線彎曲的程度,a2和a3的值越大,曲線彎曲的程度越大;a4表示反正切函數(shù)在y軸的偏移量。用最小二乘法擬合,可以計算出a1,a2,a3,a4??紤]到運算效率,可以采用數(shù)值計算的牛頓法解決該問題。
在計算出擬合曲線后,定義亞像素邊緣在函數(shù)斜率最大坐標點處。即對函數(shù)求導:
(8)
再對x求導:
(9)
得:
(10)
此即為亞像素點位置。
相比較于基于灰度的角點檢測算法,基于邊緣的角點算法具有更好的抗噪聲能力和更高的定位精度。基于邊緣的角點檢測技術,是通過棋盤格亞像素邊緣點擬合直線,再根據(jù)直線交點確定棋盤格角點[15]。邊緣直線在角點處相交有三種形式,見圖4。
圖4 邊緣交點形式
在圖4的三種形式中:形式一,一個交點即為棋盤格角點;形式二,棋盤格角點為兩個交點中心點;形式三,棋盤格角點為四個交點中心點。在以上三種交點形式中,角點是通過邊緣交點形心確定。
為了驗證算法的有效性,對任意位置放置的棋盤格模板,見圖5。通過亞像素邊緣的檢測,再根據(jù)邊緣線交點定位圖像角點。以整像素邊緣坐標(76, 44)為例,計算此點亞像素坐標。
圖5 棋盤格灰度數(shù)據(jù)
法線方向灰度擬合曲線見圖6,式(7)中參數(shù)分別為a1=56.8,a2=3.3,a3=-10.1,a4=106.3。
圖6 灰度擬合曲線
由上式得亞像素點位置x=3.06。根據(jù)整像素邊緣點坐標(76, 44),得棋盤格上該邊緣點亞像素坐標為(76.514, 44.309)。計算棋盤格角點四個邊緣亞像素坐標,將亞像素邊緣做直線擬合,得到四條棋盤格邊緣線,根據(jù)邊緣線相交三種形式,可計算出亞像素角點坐標。
為了進一步驗證算法精度,對圖7的棋盤格角點進行了檢測對比試驗,驗證角點距離方差,見式(11)。對比本文算法和Harris角點檢測法檢測角點的精度。試驗中認為棋盤格為理想精度,即各角點都是等距離分布。
(11)
式中:L′為檢測得到各對角點距離均值,Li為第i對角點距離,N為角點對數(shù)。方差越小表示檢測結果越穩(wěn)定可靠。
圖7 棋盤格模板
本實驗檢測了10對角點位置,本文算法方差為:0.043 5 pixel,Harris角點檢測算法方差為0.087 2 pixel。通過試驗可以看出,本文算法可以有效提高檢測精度,滿足實際應用需求。
針對棋盤格標定中關鍵的角點檢測問題,提出了一種基于亞像素邊緣的角點檢測算法。采用結合像素插值和灰度曲線擬合的方法提取亞像素邊緣:先確定棋盤格邊緣線法線方向,再在法線方向插入虛擬像素,利用反正切函數(shù)準確地擬合邊緣灰度模型,再通過曲線梯度,確定亞像素邊緣。在得到各亞像素邊緣后,根據(jù)邊緣相交形式,采用形心法確定角點位置。
本算法建立了邊緣法向方向亞像素定位算法,不受棋盤格角點方位影響。實驗表明本算法有效的提高了檢測精度,相對Harris角點檢測算法精度提高一倍,已成功應用于石油管螺紋的圖像檢測中,滿足實際應用需求。