郭攀 杜鴻



摘要:機器人的研究是當今人工智能領域的熱點之一,而雙目視覺又是機器人研究領域的熱點之.。文章對機器人雙目視覺測距避障的實現過程和原理進行介紹。其中特征的提取與匹配是實現雙目測距的核心和難點,匹配算法的選擇和實現將決定匹配后測距的精確與否。文章提出一種基于特征點的立體匹配算法的融合實現方案,最終證明了該算法的有效性和可行性。
關鍵詞:雙目視覺;特征提取;雙目標定;立體匹配
隨著人工智能的熱潮再次襲來,人們對于許多行業再次進行了深入的探索。比如汽車的自動駕駛技術、機器人的擬人化研究、智能語音交互等。而機器人的研究是其中的熱點之一,怎樣實現機器人的擬人化行為如行走避障、負重搬運等成為研究的熱點。
本文針對機器人雙目視覺的測距算法進行了相應的研究,提出了一種融合性的立體匹配測距算法。
1 雙目攝像頭的測距原理
用人的雙眼兩眼球間距稱為眼基線去觀察客觀的三維世界的景物,由于幾何光學投影,離觀察者不同距離的點在左右兩眼視網膜上的構像能產生生理視差,稱為雙目視差。它反映了客觀景物的深度。人能有深度感知,就是因為有了這個視差,再經過大腦的加工形成的。基于視差理論的雙目立體視覺,就是運用在基線兩端的兩個攝像機對同一景物成像,獲得景物的立體圖像對,通過各種算法匹配出同名像點,從而計算出視差,然后采用基于三角測量的方法恢復深度信息[1]。
雙目攝像頭的測距原理如圖1所示。
其中:Ol和Or分別為左右攝像頭的光心,f為攝像頭的焦距,T為光心間的距離,P為空間中的一點,Xl和Xr分別為P點在左右成像平面上的點;d=Xl-Xr則為視差,最終Z即為所求的距離,從而實現點的三維信息恢復。
通過三角形相似原理可得距離公式(1)如下:
Z=
Tf
(1)
T-d
其中:T的距離是自己兩個攝像頭之間的距離,可以通過物理測量得到;f是攝像頭的焦距,其值可以通過后續的攝像頭的標定得到;故最重要的是要測出視差d,下面將給出具體的實現方法。
2 攝像頭的標定
在攝像瞬間,物點、攝像機透鏡中心和像點應處在一條直線上,但因攝像機物鏡畸變的影響,物點在像片中的像點位置發生了位移,偏離了三點共線條件。所以,利用像片對目標進行識別前應進行預處理以消除物鏡畸變的影響。這里利用棋盤進行矯正,這是因為棋盤的角點(即特征點)明顯,矯正簡單易行。矯正過程和得出數據如圖2所示(上下攝像頭一樣)。
這樣的圖片共14張(不同角度),通過OpenCV和MATLAB處理后得到數據,處理時注意棋盤的內點數,本圖片為6×6共36個內角點。左右攝像頭相同,最終一起測量,得到的結果如圖3所示。
其中內部參數:Focal Length為焦距、Principal point為主點、Skew為扭曲因子、Distortion為畸變系數。
外部參數:Rotation vector為平移向量、Translationvector為轉移向量[2]。
到這一步就測出了公式(1)中的焦距f了,而T可以物理測量,相當于已知,接下來得出視差d就可以測出距離。
3 特征提取與匹配
特征提取一般分為輪廓和點兩個方面,這里要進行點的匹配與距離測算,故選用特征點的提取方式。特征提取的主流算法一般有3種:SIFT,SURF,ORB等特征點提取算法。由于SURF是SIFT的改進版,故這里只研究SURF和ORB算法[3]。
3.1 SURF算法
SURF算法在積分圖像上使用了盒子濾波器對二階微分模板進行了簡化,從而構建了Hessian矩陣元素值,進而縮短了特征提取的時間,提高了效率。其中SURF算法在每個尺度上對每個像素點進行檢測,其近似構建的Hessian矩陣及其行列式的值分別為:
\(H_{approx)=\begin{bmatrix}D_{xx)(\sigma) &D;_{xy)(\sigma)\\D_{xy) (\sigma)&D;_{yy) (\sigma)\end{bmatrix)\)
\(c(X,y,\sigma)=D一{xx)D一{yy)-(0.9D一{xy))^2\)
其中\fD一{xx),D一{xy)\)和\(D一{yy)\)為利用盒子濾波器獲得的近似卷積值。如果\(c(X,y,\sigma)\)大于設置的門限值,則判定該像素點為關鍵字。然后與SIFT算法近似,在以關鍵點為中心的\(3\times3\times3\)像素鄰域內進行非極大值抑制,最后通過對斑點特征進行差值運算,完成了SURF特征點的精確定位。
而SURF特征點的描述,則也是充分利用了積分圖,用兩個方向上的Harr小波模板來計算梯度,然后用一個扇形對鄰域內點的梯度方向進行統計,求得特征點的主方向。
3.2 0RB算法
ORB特征是將FAST特征點的檢測方法與BRIEF特征描述子結合起來,并在它們原來的基礎上做了改進與優化。首先,它利用FAST特征點檢測的方法來檢測特征點,然后利用Harris角點的度量方法,從FAST特征點中挑選出Hams角點響應值最大的NN個特征點。其原理如下:
(1)構造金字塔,在每層金字塔上采用Fast算法提取特征點,采用Harris角點響應函數,按角點響應值排序,選取前N個特征點。
(2) oFast:計算每個特征點的主方向,灰度質心法,計算特征點半徑為r的圓形鄰域范圍內的灰度質心位置。從中心位置到質心位置的向量,定義為該特征點的主方向。
定義矩的計算公式,x,y∈[-r,r]:
rBrief:為了解決旋轉不變性,把特征點的Patch旋轉到主方向上(steered Brief)。通過實驗得到,描述子在各個維度上的均值比較離散(偏離0.5),同時維度間相關性很強,說明特征點描述子區分性不好,影響匹配的效果。論文中提出采取學習的方法,采用300 k個訓練樣本點。每一個特征點,選取Patch大小為wp=31,Patch內每對點都采用wt=5大小的子窗口灰度均值做比較,子窗口的個數即為N=(wp-wt)×(wp -wt),從Ⅳ個窗口中隨機選兩個做比較即構成描述子的一個bit,論文中采用M-205 590種可能的情況:
(1)對所有樣本點,做M種測試,構成M維的描述子,每個維度上非1即0。
(2)按均值對M個維度排序(以0.5為中心),組成向量T。
(3)貪婪搜索:把向量T中第一個元素移動到R中,然后繼續取T的第二個元素,與R中的所有元素做相關性比較,如果相關性大于指定的閾值Threshold,拋棄T的這個元素,否則加入到R中。
(4)重復第3個步驟,直到R中有256個元素,若檢測完畢,少于256個元素,則降低閾值,重復上述步驟。
綜上所述:(1)尺度、旋轉不變性(ORB算法在尺度方面效果較差)。(2) ORB較快,SURF運行速度大約為SIFT的3倍,ORB是sift的100倍,是surf的10倍。(3) SURF的魯棒性較好;由于測量的實時性較強,故對于計算速度要求較高。因此,比較后最終選擇基于ORB的特征點提取與匹配算法。
4 實驗結果
實驗環境:在實驗室條件下實驗桌上進行。
實驗設備:攝像頭兩個、計算機一臺、儀表。
實驗平臺:visual studi02013,OpenCV, MATLAB。
如圖3所示,在基于ORB算法前提下,進行提取匹配后如上圖,特征點匹配雜亂不準確;在用Ransac算法和ORB算法融合優化后為下圖,此時匹配準確,且誤差小。最終能相應的測出視差d,最后根據匹配的特征點測出相應的數據如表l所示。
通過表1可知,特征點的匹配測距實現誤差允許范圍內的準確測量,只有少數點會出現較大誤差,證實了ORB和Ransac融合算法的可行性。
5 結語
本文對于雙目視覺測距的流程進行了較為詳細的描述,通過對幾種不同算法的性能和特點的對比和融合,實現了對于特征點的較為準確的匹配,從而計算出視差,最終計算出實際距離。后續研究將對匹配算法進行進一步融合測試以提高測試的準確率,減小測量誤差。
[參考文獻]
[l]于仕琪,劉瑞禎.學習Open CV(中文版)[M]北京:清華出版社,2009.
[2]馬頌德,張正友計算機視覺:計算理論與算法基礎[M].北京:科學出版社,1998.
[3]PAPADAKIS N, CASELLES V.Multi-label depth estimation for graph cuts stereo problems[J].Journal of Mathematical Imaging&Vision;, 2010 (1): 70-82.