吳震宇,黃佳
(1.上海電氣自動化設(shè)計研究所有限公司,上海 200023;2.華東理工大學(xué),上海 200237)
伴隨著機器人技術(shù)相關(guān)理論、設(shè)計、制造和應(yīng)用的逐漸成形,移動機器人技術(shù)在軍事、工業(yè)和家庭服務(wù)業(yè)中得以廣泛應(yīng)用,并愈發(fā)引起人們的關(guān)注。其中移動機器人目標(biāo)動態(tài)跟蹤和3D空間場景重構(gòu)成為了目前一個研究熱門方向[1-3],[4]1。本文在綜合國內(nèi)外移動機器人的研究現(xiàn)狀的基礎(chǔ)上,針對中國服務(wù)機器人大賽競賽規(guī)則和特點,設(shè)計了一種基于雙目視覺的機器人視覺系統(tǒng),其中采用OpenCV、OpenNI、OpenGL等主流計算機視覺平臺,提出了將2D平面圖像重構(gòu)3D立體空間圖像的算法策略,并將其作為移動機器人的物體跟蹤的手段,取得了良好效果。
OpenCV的特點是在復(fù)雜的背景環(huán)境中,可以將檢測視頻流中目標(biāo)移動物體的輪廓、形狀、顏色等參數(shù),從背景中進行分離[5],[6]。這對于運行中的移動機器人目標(biāo)判斷非常有益。
其主要流程是:視頻的獲取→視頻格式轉(zhuǎn)換→獲取圖形的預(yù)先處理→將目標(biāo)物從背景中提取→縮小周邊背景對于圖像處理的誤影響→運動物體特征的判別→運動物體的精確跟蹤。
從上述流程可以看出,其核心是被檢測物體從復(fù)雜環(huán)境中剝離。算法提取和剝離的過程就是將視頻流每一幀畫面的差異鑒別出來。
就移動機器人目標(biāo)動態(tài)跟蹤而言,檢測速度是運動物體跟蹤效果的關(guān)鍵,因此對其監(jiān)測流程算法必須進行優(yōu)化,縮短檢測時間,對此,本文在原有算法的基礎(chǔ)上以下二方面進行簡化:
在動態(tài)圖像獲取方面,采用了實時截取視頻圖像的方法。
在圖像的預(yù)處理方面,則采用了對捕獲到視頻流圖像的噪點進行預(yù)處理濾除的方式,以達到平滑圖像,對背景圖像進行初始化和更新的目的,以利于在圖像檢測時,物體和背景和前景的分割。
在以上簡化的基礎(chǔ)上,通過閾值化,可以以得到的運動物體的二值化圖像,將前景物體從背景分離出來。
優(yōu)化調(diào)試程序也是提高監(jiān)測速度的重要手段,經(jīng)過不斷改變閾值大小并反復(fù)對比測試,可以提高對目標(biāo)物體捕捉的準(zhǔn)確性。同時根據(jù)環(huán)境條件(諸如光照強度、光照角度等)的變化,預(yù)設(shè)優(yōu)選的閾值條件,使檢測和跟蹤的性能可以滿足移動機器人的判讀需要,兼顧了圖像的質(zhì)量和速度。
如圖1所示,視頻頭的視場由近及遠呈現(xiàn)出三角型,即離鏡頭越遠的對象較之較近的對象有較大的視場,這反映出影像的寬度與高度,與視頻頭所處的物理位置之間并非完全對應(yīng)。
為了簡化視頻分析,提高解析速度,本文利用截取圖像中特定位置的深度值,并將深度圖與RGB像素圖結(jié)合,找出目標(biāo)物體與攝像頭的距離,從而進行實時分析判斷。對深度圖中像素進行分析是,像素點信息通過16位的數(shù)據(jù)來定義。根據(jù)BytesPerPixel原理,一個像素占用二字節(jié),因此每一個像素的深度值只占用了13個位字節(jié)。如圖2所示
視頻頭坐標(biāo)的標(biāo)定是基于透視幾何原理,其本質(zhì)就是坐標(biāo)變換:對視頻頭本身的坐標(biāo)系,現(xiàn)實物體的自然坐標(biāo)系,2D圖像的平面坐標(biāo)系進行轉(zhuǎn)換,即可實現(xiàn)對于3D的重構(gòu)。
圖1 Kinect視野范圍示意圖
圖2 深度值圖
1)視頻頭坐標(biāo)到2D坐標(biāo)的轉(zhuǎn)換
首先必須對視頻頭自身坐標(biāo)進行定義。如圖3所示,將其原點設(shè)定為光O,以此為準(zhǔn)建立標(biāo)準(zhǔn)的X、Y、Z的三維坐標(biāo)系,此坐標(biāo)系中各個點在坐標(biāo)中定為:(XC,YC,ZC)T。
在此基礎(chǔ)上,為解決模型透視的問題,需建立圖像平面的坐標(biāo)體系,其原點同樣選擇O點,在此稱為主點。但不同之處在于垂直平面X-Y坐標(biāo)系與視頻頭方向相反。
圖3 視頻頭坐標(biāo)、圖像平面坐標(biāo)對應(yīng)圖
若定義其空間點在視頻頭坐標(biāo)系中坐標(biāo)位置為Object( XC,YC,ZC),平面坐標(biāo)中的某點位置為Object(x,y);如果 d是圖像平面點到光心O的距離,則投影模型如下:
其投影矩陣為:
由于物體距離光心的距離d不會正好是焦距f點上,且其距離通常大于焦距點,為此需引入“虛擬平面”的概念:即在光軸Z上設(shè)置虛擬圖像平面,對于平面圖像呈光心對稱,在此“虛擬平面”上設(shè)定兩位坐標(biāo)系,并且規(guī)定遠點和光軸一致,攝像頭的垂直平面與“虛擬平面”的垂直平面方向一致。
實際圖像的點投射到視頻頭坐標(biāo)上,再投射到“虛擬平面”上。
由于軸線的對稱性,“虛擬平面”中的點坐標(biāo)也同時滿足之前描述的投影模型。
圖4表示了物體在三不同坐標(biāo)之間的關(guān)系。
圖4 視頻頭坐標(biāo)系、圖像坐標(biāo)系、“虛擬坐標(biāo)”關(guān)系圖
2)自然坐標(biāo)系與視頻頭坐標(biāo)系的轉(zhuǎn)換
由于移動機器人位置是移動的,因此需要一個能表達視頻頭相對于空間物體位置的基準(zhǔn)坐標(biāo)系,即可以確定環(huán)境中的物體幾何尺寸、位置等各種空間物理參數(shù),為此坐標(biāo)系XW,YW,ZW的世界坐標(biāo)系,利用向量平移和矩陣旋轉(zhuǎn),可以完成標(biāo)定以上參數(shù)的功能,其影射關(guān)系如圖5所示。
世界坐標(biāo)系與視頻頭坐標(biāo)系解析關(guān)系為:
圖5 視頻頭坐標(biāo)系與世界坐標(biāo)系之間的解析關(guān)系
其中TX,TY,TZ為坐標(biāo)各方向上的平移量。
3)圖像平面中的坐標(biāo)轉(zhuǎn)換
3D圖像重構(gòu)中,圖像平面坐標(biāo)變換是關(guān)鍵一步。在實際情況中,光軸上的圖像坐標(biāo)系、像素坐標(biāo)系所設(shè)定的坐標(biāo)原點是不一致性;同時采集設(shè)備采集速度存在著不一致性,型號、功能參數(shù)相同的采集裝置了采集速度也存在差異,其結(jié)果就是在變換過程中產(chǎn)生誤差;在對圖像中像素坐標(biāo)點進行兩軸分析時,也不能完全依照標(biāo)準(zhǔn)直角坐標(biāo)軸進行矢量分析,這些問題增加了計算數(shù)據(jù)以及重構(gòu)運算復(fù)雜性。
因此,建立像素點的坐標(biāo)系和圖像的坐標(biāo)系的轉(zhuǎn)換是很有必要的[4]3,[5]3,如圖 3.4 所示。通過進行模數(shù)轉(zhuǎn)換,即一系列的像素點(pixel)矩陣排列形成數(shù)組形式A×B(A行B列),其像素點的數(shù)表示的是圖像點的亮度值,并依此來定義出像素坐標(biāo)系。
如圖6所示,圖像坐標(biāo)系是以(o)為坐標(biāo)原點的直角坐標(biāo)系,而像素坐標(biāo)系則是以(o1)為坐標(biāo)原點,其標(biāo)定非均勻分布,因此二坐標(biāo)系角度非直角,呈現(xiàn)出為一個隨機角度[7]。兩坐標(biāo)軸間位置關(guān)系如圖3.4所示。為分析圖像和像素的變換關(guān)系,設(shè)θ表示u,v兩軸之間的夾角,像素點在x軸和y軸上的物理尺寸為Δx,Δy,其中(uo,vo)為光心O在像素坐標(biāo)系中的位置,其矩陣關(guān)系為:
圖6 圖像坐標(biāo)系、像素坐標(biāo)系相互關(guān)系圖
其中(x,y)是圖像坐標(biāo)系中以毫米為單位的位置。(u,v)是以個像素個數(shù)為單位的圖像坐標(biāo)系中的位置,得:
通過以上變換,實現(xiàn)了雙目視覺的重構(gòu),能顯示出環(huán)境的三維效果。在結(jié)合攝像頭標(biāo)定和雙目矯正后,算法可以精確的重構(gòu)出周邊環(huán)境的三維重構(gòu)數(shù)據(jù)。該數(shù)據(jù)可使用cvStereoRectify進行修正,利用cvReprojectImageTo3D函數(shù)來計算三維坐標(biāo);以O(shè)pen-GL庫中的FreeGlut函數(shù)將重構(gòu)數(shù)據(jù)實時顯示出來。
以上述推導(dǎo)為依據(jù),在平面圖像至三維圖像的轉(zhuǎn)換中,可利用三維實景中豐富的深度數(shù)據(jù),進行目標(biāo)辨識,實現(xiàn)動態(tài)目標(biāo)的實時檢測與跟蹤[8-9]。
圖像深度數(shù)據(jù)分析流程如圖7所示。
1)實驗參數(shù)的選定:
cvThreshold(depthIndexImage,pFrImg,64,255.0,CV_THRESH_BINARY);
設(shè)定閾值參數(shù)為64:
rect.height+rect.width)>=150&& (rect.height+rect.width)<=200
圖7 運動物體的分析流程圖
不同環(huán)境中的目標(biāo)物體有所不同,可根據(jù)試驗,獲取描述該物體的最合適的參數(shù),從而可以更精確的檢測出目標(biāo)物體的形狀和運動狀態(tài)。
2)實驗檢驗
如圖8(a)所示,在驗證實驗中,三維景深圖中鏡頭前為一根手指移動時機器視覺的檢測效果,攝像頭跟蹤了手指的運動軌跡。圖8(b)圖中一手臂在遠處揮動,系統(tǒng)也識別出其為運動的物體,實現(xiàn)了跟蹤。實驗效果證明:以Kinect采集大量模擬數(shù)據(jù)為基礎(chǔ),結(jié)合OpenNI、OpenGL,能夠較好地檢測出運動物體的外形,并在3D環(huán)境中,捕捉到運動中的物體。經(jīng)過改進簡化的算法,圖像的采集和檢測速度,能滿足移動機器人物體抓取的要求。
圖8 3D圖中物體的檢測與跟蹤
本文運用了點云算法和深度景深圖原理,并根據(jù)應(yīng)用對象特點,改進相應(yīng)算法,構(gòu)建了軟硬件的平臺,提高了檢測速度,利用視頻頭替代人眼,將2D場景的數(shù)據(jù)重構(gòu)成3D場景。實現(xiàn)了移動機器人雙目系統(tǒng)的對象分割、物體識別與跟蹤、判別決策等功能。目前這一平臺已經(jīng)在相關(guān)移動機器人中得以應(yīng)用,取得了良好成績。
[1]曹其新,張雷.輪式自主移動機器人[M].上海:上海交通大學(xué)出版社,2012.
[2]蔡葉菁.計算機視覺[J].中國包裝工業(yè),2002,11(5):143-145.
[3]張梅,文靜華.淺談計算機視覺與數(shù)字?jǐn)z影測量[J].地理空間信息,2010,8(2):17-20.
[4]馮文剛.圖像分析與理解的模型方法研究[D].合肥:合肥工業(yè)大學(xué),2011.
[5]GREGORY ROGEZ,CARLOS ORRITE-URUNUELA,JESUS MARTINEZ-DEL-RINCON.A spatio-temporal 2D-models framework for human pose recovery in monocular sequences[J].Pattern Recognition,2008,41:2926-2944.
[6]張益貞,劉滔.Visual C++實現(xiàn)MPEG/JPEG編解碼技術(shù)[M].北京:人民郵電出版社,2002.
[7]吳國斌,李斌,閻驥洲.Kinect人機交互開發(fā)實踐[M].北京:人民郵電出版社,2012.
[8]C ANDERSON,PETERBURT,G VAN DER WAL.Change detection and tracking using Pyramid transformation techniques[J].In Proceedings of SPIE-Intelligent Robots and Computer Vision,1985,(579):72-78.
[9]OTSU N.A threshold selection method from gray-level histograms[J].IEEE.Transactions on Systrems,1979,9(1):62-66