1. 程式人生 > >機器人視覺系統組成及定位演算法

機器人視覺系統組成及定位演算法

1. 機器人視覺

機器人視覺研究的核心內容是:視覺定位與導航、路徑規劃、避障、多感測器融合。視覺定位技術有多種,包括單目視覺、雙目視覺、多目視覺、RGB-D等,後三種方法可以使影象具有深度資訊,這些視覺“眼睛”亦可以稱為VO--視覺里程計。VO在機器人乃至計算機視覺問題中,是一個通過分析處理相關影象序列來確定機器人的位置和姿態的解決方案。

現今,隨著計算機影象處理技術的不斷進步以及感測器電子科學的飛速發展,使得越來越多的研究者採用攝像機作為全自主移動機器人的感知元器件,這主要是因為常見的超聲或紅外感測器感知資訊能力有限,魯棒性差,而視覺系統則可以彌補這些缺點。但是,現實世界是立體的、三維的,而投影在攝像頭感光器件(CCD/CMOS)上的影象是二維的、平面的,因此,基於攝像機的視覺處理目標就是從感知到的二維影象中提取有關的三維世界資訊,用於機器人的定位與導航。

2. 視覺系統組成

機器人視覺系統主要由軟體和硬體兩部分組成,硬體方面主要有:視覺感測器(組)、影象採集卡、計算機(主處理機)、機器人及其附屬的通訊和控制模組等;軟體方面主要包括:影象處理軟體和機器人控制軟體等。機器人視覺系統組成如圖1所示。

視覺系統組成
Fig.1 機器人視覺系統組成部分

2.1 CCD/CMOS

CCD/CMOS感測器原理:

一行矽成像元素,在一個襯底上配置光敏元件和電荷轉移器件,通過電荷的依次轉移,將多個象素的視訊訊號分時、順序地取出來,如面陣CCD感測器採集的影象的解析度可以從32×32到1024×1024畫素等。


2.2視訊數字訊號處理器

影象訊號一般是離散的二維訊號,一幅影象通常由512×512個畫素組成(當然有時也有256×256,或者1024×1024個畫素),每個畫素有256級灰度,或者是3×8bits,RGB_16M種顏色,一幅影象就有256KB或者768KB(對於彩色)個數據。為了完成視覺處理的訊號取樣量化、編碼壓縮、預處理、分割、描述、識別和解釋,上述前幾項主要完成的數學運算可歸納為:


(1)點處理:

常用於對比度增強、密度非線性較正、閾值處理、偽彩色處理等。每個畫素的輸入資料經過一定關係對映成畫素的輸出資料,例如對數變換可實現暗區對比度擴張。 

  
(2)空間域處理:

二維卷積的運算常用於影象平滑、銳化、輪廓增強、空間濾波、標準模板匹配計算等。若用M×M卷積核矩陣對整幅影象進行卷積時,要得到每個畫素的輸出結果就需要作M2次乘法和(M2-1)次加法,由於影象畫素一般很多,即使用較小的卷積和,也需要進行大量的乘加運算和訪問儲存器。


(3)二維正交變換:

常用二維正交變換有DFT、FFT、Walsh、Haar、DWT、DCT和K-L變換等,常用於影象增強、復原、二維濾波、資料壓縮等。


(4)座標變換:

常用於影象的放大縮小、旋轉、移動、配準、幾何校正和由攝影值重建影象等。


(5)統計量計算:

如計算密度直方圖分佈、平均值和協方差矩陣等。在進行直方圖均衡器化、面積計算、分類和K-L變換時,常常要進行這些統計量計算。


3.視覺導航定位系統的工作原理

 

簡單說來就是對機器人周邊的環境進行光學處理,先用攝像頭進行影象資訊採集,將採集的資訊進行壓縮,然後將它反饋到一個由神經網路和統計學方法構成的學習子系統,再由學習子系統將採集到的影象資訊和機器人的實際位置聯絡起來,完成機器人的自主導航定位功能。

Fig.2 視覺處理流程

 

(1)攝像頭標定演算法:2D-3D對映求參

傳統攝像機標定主要有 Faugeras 標定法、Tscai 兩步法、直接線性變換方法、張正友平面標定法和 Weng迭代法。自標定包括基於 Kruppa 方程自標定法、分層逐步自標定法、基於絕對二次曲面的自標定法和 Pollefeys 的模約束法。視覺標定有馬頌德的三正交平移法、李華的平面正交標定法和 Hartley 旋轉求內參數標定法。


(2)機器視覺與影象處理:


a.預處理:灰化、降噪、增強、濾波、二值化、邊緣檢測....
b.特徵提取:特徵空間到引數空間對映。演算法有HOUGH、SIFT、SURF。
c.影象分割:RGB-HIS。
d.影象描述識別


(3)定位演算法:

基於濾波器的定位演算法主要有KF、SEIF、PF、EKF、UKF等。也可以使用單目視覺和里程計融合的方法。以里程計讀數作為輔助資訊,利用三角法計算特徵點在當前機器人座標系中的座標位置,這裡的三維座標計算需要在延遲一個時間步的基礎上進行。根據特徵點在當前攝像頭座標系中的三維座標以及它在地圖中的世界座標,來估計攝像頭在世界座標系中的位姿。這種降低了感測器成本,消除了里程計的累積誤差,使得定位的結果更加精確。此外,相對於立體視覺中攝像機間的標定,這種方法只需對攝像機內參數進行標定,提高了系統的效率。


4.定位演算法基本實現過程:


簡單的演算法過程,可基於OpenCV進行簡單實現。


輸入
通過攝像頭獲取的視訊流(主要為灰度影象,stereo  VO中影象既可以是彩色的,也可以是灰度的 ),記錄攝像頭在t和t+1時刻獲得的影象為It和It+1,相機的內參,通過相機標定獲得,可以通過matlab或者opencv計算為固定量


輸出
計算每一幀相機的位置+姿態

 

基本過程


1. 獲得影象It,It+1
2. 對獲得影象進行畸變處理
3. 通過FAST演算法對影象It進行特徵檢測,通過KLT演算法跟蹤這些特徵到影象It+1中,如果跟蹤特徵有所丟失,特徵數小於某個閾值,則重新進行特徵檢測
4. 通過帶RANSAC的5點演算法來估計兩幅影象的本質矩陣
5. 通過計算的本質矩陣進行估計R,t
6. 對尺度資訊進行估計,最終確定旋轉矩陣和平移向量

 

在深度學習和人工智慧大行其道的今天,數字影象處理技術也搭上了順風車。主流的人工智慧架構TensorFlow等,結合OpenCV強大的影象處理工具,可以衍生出非常多優異的演算法,在提升處理效果的同時,處理速度和效率也大大提高。

基於TensorFlow和OpenCV的計算機視覺演算法和實現將在OpenCV專題詳述。