郭哲
(陜西中醫(yī)藥大學基礎醫(yī)學院,陜西 咸陽 712046)
近年來,機器人在智能生產領域發(fā)揮了重要作用,但目前而言,機器人智能化水平不高,尤其在復雜環(huán)境下機器人的適應力差、靈活度低。機器人執(zhí)行任務首要面對的是近景物體,近景物體往往是阻礙其執(zhí)行任務的障礙物或是機器人操作的目標物體,因此,獲取機器人近景物體的位置信息對機器人智能操控至關重要。
工業(yè)領域通常采用雷達測距、超聲波測距、激光測距、紅外測距等方式獲取目標物體位置[1-4],該類測量方式也統(tǒng)稱為被動式測量法,其在實際測量中受外界信號的干擾較大,然而視覺測量是一種主動式測量方式,其測量時不需要向目標物體發(fā)送任何信號,信號測量范圍寬、成本低[5-6]。
據統(tǒng)計,人類感知世界獲取的信息約80%是通過人眼獲得[7],對于機器人而言,通過視覺傳感器測量可獲取機器人周圍目標的三維信息。由于視覺測量涉及圖像預處理、投影變換等大量復雜的數據信息計算,使得目前大多數視覺測距系統(tǒng)均基于PC 架構實現,便攜性、機動性受到很大的限制。為了提高視覺測量的靈活性和實用性,目前經常使用的視覺測距系統(tǒng)由前端采集系統(tǒng)和后端處理系統(tǒng)構成,但視頻數據傳輸中受限于網絡穩(wěn)定性和帶寬的影響,使得這種工作模式下系統(tǒng)的使用受到很大影響,且效率低下?;谝苿悠脚_的近景目標視覺測距系統(tǒng)模擬人眼感知三維世界原理,分析出近景目標物體相對位置,可提高機器人智能性。
通過機器人信息采集端的攝像頭采集視頻圖像,分析處理左右攝像頭同一視角范圍內的圖像,利用幾何學原理建立特征點間聯(lián)系,重投影得出圖像特征點的三維點云,分析三維點云信息,自主測得近景物體的深度。
該近景目標物體視覺測距系統(tǒng)的系統(tǒng)結構圖如圖1 所示,系統(tǒng)結構由硬件和軟件兩部分構成,驅動程序驅動左右攝像頭采集視頻圖像,經Tiny6410 開發(fā)板分析處理,得出視角區(qū)域三維點云,圖像應用程序利用生成的三維點云,分析得出近景目標物體深度信息。

圖1 系統(tǒng)結構圖
攝像頭采集圖像原理和人類眼睛獲取景物原理類似,其成像模型可簡化為小孔成像模型,光線通過透鏡照射到感光芯片,感光芯片捕獲光信號并將其轉化為數字圖像信號[8-10]。相機成像模型如圖2所示,P(x,y,z)為空間中目標點,經透鏡投影到成像儀上的圖像坐標為p(xc,yc)。相機的成像過程可理解為成像點在像素坐標系、圖像坐標系、相機坐標系、世界坐標系四個坐標系間相互變換,像素坐標系坐標原點在圖像平面左上角,u、v軸分別與圖像坐標系U、V軸平行;以圖像中心o作為圖像坐標系坐標原點,U、V軸分別與X、Y軸平行;以攝像頭光心O作為相機坐標系的坐標原點,與光軸重合的射線作為Z軸,XOZ平面與成像平面垂直;以Ow為世界坐標系坐標原點,取方向與光軸方向相反且與光軸平行的射線為Zw軸;這四個坐標系兩兩依次建立聯(lián)系,便可建立世界坐標系與相機坐標系中同一特征點間的聯(lián)系。

圖2 相機成像模型
依據相機模型,可以經平移、旋轉等變換建立世界坐標系和像素坐標系的關系為:
其中,R為目標點繞X、Y、Z軸三個方向上旋轉矩陣的乘積,T為目標點在X、Y、Z軸上平移向量,表示為T=[t1t2t3]T,R、T統(tǒng)稱為相機的外參數;M為內參數矩陣,由相機焦距f及相機感光芯片的中心相對于光軸的偏移校正參數組成。把已知大小的棋盤作為標定靶,提取特征點標定相機,通過已知特征點的坐標利用高斯消元法,便可得到相機內外參數。
視覺測量的基本原理為可以簡化理解為三角測量法[11-14],三角測量法的原理圖如圖3 所示。相機的光軸平行且像素行對準,O1和Or分別為左右投影中心,左右兩個相機的焦距f1和fr相同,左右圖像中主點c1和cr的坐標值一致,特征點X在兩個圖像平面上的投影點為x1和xr,x1和xr在各自像素坐標系中水平位移分別為x1和xr,該特征點左右圖像中視差為d=x1-xr。設f為相機的焦距,利用相似三角形原理,可推出物體離攝像頭鏡頭的距離Z的值如式(2)所示:

圖3 三角測量法原理圖
通過已知大小的棋盤,利用圖像特征點和像素特征點間關系我們求得相機焦距f,以及左右相機相對于世界坐標系的平移矩陣(Tl、Tr)和旋轉矩陣(Rl、Rr),利用求得參數建立同一特征點與左右相機間的關系:
通過相同特征點與左右相機中的目標特征點的關系,可以得出左右相機相同特征點間關系為:
因此可以得出相同特征點在左右相機間轉換的平移矩陣T和旋轉矩陣R為:
根據相機成像原理,利用矩陣變換建立標定靶特征點和二維圖像點關系,通過已知的標定靶特征點坐標(xw,yw,zw)和圖像特征點(xs,ys)可推出相機的固有參數矩陣;獲得相機參數后,利用二維圖像特征點坐標(xs,ys)和同一特征點不同視角視差d可反推獲得特征點的世界坐標系中坐標(xw,yw,zw)。依據特征點世界坐標系中的坐標,利用勾股定理便可得出特征點的距離為:
當求得特征點距離后,依次遍歷比較兩個特征點的距離大小,取最小值為Dmin,用Dmin依次與其他特征點距離相比較,將值小者賦給Dmin,依次遍歷完所有特征點后便可得近目標物體的距離及坐標。
鑒于Tiny6410 處理平臺具有高性能、易攜帶等優(yōu)勢[15-16],以Tiny6410 為處理器搭建一套視覺測量系統(tǒng),通過QT 圖像庫為前端提供交互控制界面,利用Linux 系統(tǒng)下的v4l2 接口為系統(tǒng)采集視頻圖像,同時基于OpenCV 視覺庫分析處理采集的圖像信息。
測量工作主要分為以下三個階段:
1)相機標定:通過給定大小的棋盤求解相機的內外參數。
2)生成三維點云:匹配左右圖像特征點,將相同特征點的圖像坐標通過重投影的方式轉化為三維坐標點云。
3)近景物體測量定位:分析已生成的三維點云,依次遍歷視角區(qū)域內所有特征點,測得近景物體的距離。
采用等大的交叉黑白格棋盤標定攝像頭,傳統(tǒng)標定方式多采用捕捉多張不同視角棋盤圖像標定攝像頭,未對棋盤采集面積的屏占比做要求,該類標定方式部分畸變區(qū)域缺少有效的校正特征點,導致存在校正盲區(qū),影響相機畸變的校正準確度[17]。該算法標定時采用投影屏占比極大化原則,具有如下優(yōu)點:使得棋盤圖像在視角區(qū)域的屏占比最大,同時單位面積采集圖像中存在分布較為均勻的校正特征點,可保證視角區(qū)域特征點均勻分布,提高標定精度,進而獲得準確度更高的畸變系數。這種相機標定方式能提高攝像頭標定精度,改善圖像畸變,進一步校正畸變圖像,提升左右圖像匹配率。
采集一幀棋盤圖像后,通過直方圖均衡化、灰度化等預處理方式增強圖像的對比度,進而增強圖像的視覺效果,提高捕捉特征點效率[18]。每采集一幀圖像后,捕捉圖像角點,并統(tǒng)計角點數量,若角點數量達到閾值,使用連線連接每行角點,同時將角點像素坐標依次寫入像素坐標矩陣,相機標定采集的角點圖如圖4 所示。為了提高標定精度,調整棋盤的角度,依次采集不同視角的棋盤圖像,直至采集到閾值數量的棋盤圖像。

圖4 相機標定效果圖
當采集指定閾值數量的圖像后,利用二維圖像特征點與三維世界特征點的關系建立方程組,通過高斯消元法依次求得攝像頭固有參數,同時將獲得的參數存于XML 數據庫文件。
兩個相機標定結果如表1 所示。

表1 相機標定參數
表1 數據顯示兩個攝像頭具有相同的焦距、不同的主點,主點坐標分別為(168,106)、(165,107),大小為320×240 圖片的圖像中心坐標為(160,120),表明主點和成像儀的中心有一定誤差,為校正畸變,坐標轉換時需添加這一部分偏移量。
利用相機模型,使用矩陣變換建立棋盤特征點世界坐標和二維圖像特征點像素坐標聯(lián)系,求解方程組獲得攝像頭固有參數矩陣,當獲得攝像頭參數矩陣后,使用參數矩陣組成的投影矩陣和同一特征點不同視角的視差反推重投影,即可獲得特征點的三維坐標。相同視角范圍內的特征點三維坐標點云如圖5 所示。

圖5 三維點云
圖像經過重投影,可得到其特征點世界坐標系中x、y、z值,大小為320×240 的圖像可得到一個320×240 大小的三通道矩陣,每個通道分別存放特征點的x、y、z值,生成的三維信息按特征點坐標順序依次存入坐標矩陣生成三維點云,該矩陣為物體的深度、大小等信息的分析測量提供依據。
近景物體往往是機器人的目標物體或者是阻礙其執(zhí)行操作的障礙物,機器人自主執(zhí)行操作時必須首先捕獲近景物體的位置,獲取近景物體的位置大小信息是機器人執(zhí)行操作的首要步驟。依據視覺測量生成三維點云信息,依次遍歷所有特征點的坐標信息,最終測得近景物體的距離。利用該視覺系統(tǒng)測量目標物體,同時通過軟尺進行測量對比驗證,通過對不同遠近的目標物體進行多次實驗測量,兩種測量方式的實驗對比結果如表2 所示。

表2 近景物體測量
由于在實際操作過程中,軟尺存在一定的使用誤差,攝像頭光學畸變、標定誤差等因素也會影響視覺測量的精度,但通過實驗分析顯示軟尺測量和視覺測量測量結果相對誤差較小,近景物體視覺測量具有較高的準確率。
提出一種基于Tiny6410 嵌入式平臺的近景物體視覺測距技術,該技術以黑白交叉的棋盤為標定物標定相機,利用標定得出的相機參數重投影圖像得出特征點三維點云,依據特征點三維點云得出距離,遍歷每個特征點的距離,測得近景物體的距離,該方法操作性強、精度高,同時系統(tǒng)具有很好的適應性,可廣泛應用于基于移動開發(fā)的自主機器人、汽車導航等領域,具有一定應用價值。