王欣月,趙柏山
(沈陽工業(yè)大學信息科學與工程學院,沈陽 110870)
在傳統(tǒng)制造業(yè)現(xiàn)代化的今天,計算機視覺已經(jīng)成為了當下人們探討的焦點,計算機視覺技術應用于傳統(tǒng)制造業(yè)將具有重要意義。物理傳感器[1]、結構光[2]、激光[3]等技術,都已被用來測量目標物體的三維信息,在無人工干豫條件下達到了精準的效果。然而現(xiàn)有的方法采用的硬件設備都相對昂貴、不易安裝,普及難度大。而機器視覺恰好能彌補這方面的缺陷。本研究將雙目視覺技術與傳統(tǒng)工業(yè)相結合,通過結合Harris算子和極限約束來改進立體匹配算法,以提高匹配的精度,利用得到3個特征點以及1個驗證的坐標來求取吊具的位姿,在精準識別的同時節(jié)省人力資源。
改進方法首先對采集的圖像進行預處理,同時對雙目相機進行標定,獲取相機的內(nèi)外參數(shù),根據(jù)所得參數(shù)對圖像的特征點提取;然后根據(jù)改進的SIFT算法進行立體匹配,得到精準的物體坐標;最后根據(jù)3D-2D的PnP求解吊具的位姿。
為了更精準地得到物體的三維坐標,首先需要進行圖像預處理操作。此處采用對灰度圖像處理效果最好的加權平均值法對圖像進行灰度處理,然后通過對比選擇中值濾波法對圖像進行濾波處理。
在Windows10系統(tǒng)下利用MATLAB R2019a環(huán)境,通過張氏標定法[4]進行雙目相機標定。得到的左右相機內(nèi)參為:
左右相機徑向畸變參數(shù)為:
外參旋轉矩陣為:
外參平移矩陣為:
SIFT算法是由David G.Lowe于2004年正式提出的一種基于局部特征的匹配算法。它主要包含尺度空間極值點檢測、精確定位、特征點方向和特征描述子的產(chǎn)生等步驟。
由于傳統(tǒng)的Harris角點提取方法不能很好地適應尺度變換,以及SIFT的特征描述子向量維數(shù)過高,造成圖像的匹配不夠快,在此提出一種基于SIFT的改進算法,把Harris算子、極限約束與SIFT算法有效地結合在一起。該方法在保留SIFT方法優(yōu)點的同時,可以有效地降低特征點數(shù)和提高查找速度,使其達到更好的效果。改進方法的主要步驟如下:
步驟1:構建尺度空間的特征點
由于Harris檢測算子對尺度的變化比較敏感,所以用該檢測算子把SIFT算法中的極值點替換掉。改進的角點檢測算子如下:
步驟2:圖像的角點檢測
計算亞像素特征點坐標,通過迭代優(yōu)化,使誤差最小,最終得到具有較高精度的角點坐標。
步驟3:引入極限約束
極限約束原理如圖1所示。在右圖中搜尋候選點。在立體匹配過程中,為了減少搜索時間、提高搜索精度,常常添加約束條件進行搜索。圖中Ol和Or分別為兩個相機投影的中心點;Ol和Or的連線交兩平面于el和er,空間中點P與Ol、Or連線分別交于p和q,p與el連接的直線就是極限,因此p匹配點一定在er與q的連線上。
圖1 極限約束原理
由此可以推導出,當相機所有參數(shù)均已知時,就可得到基礎矩陣F。根據(jù)極限約束原理,計算左圖特征點在右圖上的極線,取極線上下10像素范圍里的角點作右圖像上的特征點。此方法把特征點的搜索由2維降到1維,有效提高了搜索的效率。
步驟4:確定關鍵點位置方向
通過與關鍵點相鄰的像素點可以獲取到關鍵像素點(x,y)梯度模值和方向:
對關鍵點3×3鄰域窗口進行采樣[5],對相鄰像素的梯度進行統(tǒng)計,用梯度柱狀圖來表示,然后選擇最大幅度的兩個方向,作為主方向和輔方向[6],以此即可使關鍵點有旋轉的不變性。
步驟5:SIFT關鍵點描述子的生成
SIFT算法可以將尺度不變與梯度向量結合起來,使其對目標物體尺度變換、旋轉、模糊等方面表現(xiàn)出良好的穩(wěn)定性,同時還具備一定的抗噪性和很好的魯棒性,有效地識別出圖像中的關鍵點。與其它算法相比,這是一個很好的局部特征描述子,然而同時此方法還需要產(chǎn)生128個維度的描述子,使得建立特征描述子和后續(xù)的匹配耗時較多,計算復雜。對此,可通過降低特征向量的維度來降低計算時間。對該特征點的描述方法如圖2所示。取以關鍵點為中心的8×8的像素區(qū)域,每4×4的窗口內(nèi)計算出8個方向直方圖,由此,關鍵點被表示為4×8的32維特征描述子。
圖2 由關鍵點鄰域梯度信息生成特征向量
步驟6:圖像特征匹配
生成了兩張圖片的描述子后,最終對兩張圖片中的不同大小的描述子進行匹配。至此,完整的改進算法流程結束。
改進算法最終應用在吊具位姿的估計上。實驗的設計是基于手眼標定的基礎上,即相機在吊具的前端,因此默認為吊具的位姿即相機的位姿。
首先使用上述算法流程中獲得的所有立體匹配的特征點,然后利用最小化重投影誤差來算出吊具的位姿。獲取雙目相機的標定參數(shù),通過三角測量把圖像的特征角點投影到三維空間中。假定0偏移情況下,則有:
在獲取三維空間中的點與相機的投影點坐標之后,采用3D到2D的PnP方法求解吊具位姿R(r)和t,如圖3所示。在世界坐標系下空間中有三點A、B和C,將其投影在平面上的點記做a、b和c,驗證點記為D-d。
圖3 P3P問題示意圖
由于2D點在圖像中的坐標位置已知,而利用世界坐標下的坐標可以計算出u、v、w的比值,這時只有x和y是未知變量。由于直接求解方程過于復雜,改用吳氏消元法求解[7],求得四種解,最終獲取到在相機坐標系下的三維坐標,并由此計算出吊具的位姿R和t。
為估計吊具的位姿,采用迭代最近點(ICP)進行求解。對ICP的求解使用Bundle Adjustment優(yōu)化方法,通過構建最小二乘來獲得最優(yōu)解。假定三維空間中點P及投影點p有n個,求解吊具位姿R(r)和t,記它的李代數(shù)為ξ。設空間中點的坐標為Pi=[Xi,Yi,Zi]T,ui=[ui,vi]T代表投影點的像素坐標,則式(9)可變形為:
至此,用于表示吊具位姿的坐標在世界坐標系下的空間位姿的六個參數(shù)已全部得到,需進行實驗,證明改進方法的可行性。
本實驗使用Windows 10系統(tǒng)MATLAB R2019a為開發(fā)環(huán)境。首先通過實驗來驗證改進的立體算法的魯棒性和實時性,分別選擇不同尺度、不同旋轉角度以及不同模糊程度的圖像進行匹配,將原圖像與待匹配圖像進行匹配。改進算法與文獻[8]算法的對比實驗通過40幅圖像、三種不同干擾情況來進行,對每組錯誤匹配率和耗時進行統(tǒng)計。
不同尺度變換圖像的匹配結果如圖4所示。
圖4 不同尺度變換圖像匹配結果
不同旋轉角度變換圖像的匹配結果如圖5所示。
圖5 不同旋轉角度變換圖像匹配結果
不同模糊程度變換圖像的匹配結果如圖6所示。
圖6 不同模糊程度變換圖像匹配結果
采用兩種方法對40張圖像進行了比較,并在不同的干擾條件下,分別計算了匹配率和算法耗時,詳細比較結果如表1所示。
表1 不同干擾程度下匹配算法比較
結果表明,本算法對不同干擾的正確匹配率都比較高,從算法耗時比較的結果來看,此匹配算法所需時間明顯減少,因此驗證了改進的算法具有較好的魯棒性。
由上述算法得出空間中的3個3D-2D對點,以及一對驗證點,便可利用PnP算法求解出吊具的空間位姿。為驗證此吊具位姿估計系統(tǒng)的檢測精度,實驗使用New Tsukuba數(shù)據(jù)集做測試實驗。數(shù)據(jù)集包含了原始位姿,即Ground Truth Pose。
圖7展示出利用改進算法和文獻[8]算法構建的位姿結果??梢钥闯觯倪M算法求解出的位姿是較為精確的,有較強的實用性。
圖7 吊具位姿檢測實際效果
如表2所示為改進算法與文獻[8]算法在平移誤差、旋轉誤差以及運行時間上的比較。
表2 兩種算法誤差及耗時情況比較
可以看出本改進算法在平移誤差、旋轉誤差以及運行時間上均優(yōu)于文獻[8]的算法,體現(xiàn)出了較強的適應性和魯棒性。
本研究針對吊具位姿估計,通過對相機的標定和圖像預處理等操作,基于Harris算子和極限約束,改進了SIFT立體匹配算法。在實驗中,采用PnP方法求出的吊具位姿與實際符合較好,證明了研究的可行性。與其他算法相比,改進后的算法提高了匹配的效率和精度,可為后續(xù)吊具位姿匹配研究打下良好基礎。