周凡
摘? 要:人類對于三維世界的感知,主要是通過雙眼從外界環(huán)境中獲取視覺成像,然后通過視網膜,把視覺信號傳遞到大腦,再由大腦根據固有的經驗和知識,對信號進行識別處理,最終形成三維的感知。而機器視覺就是利用各種軟硬件模擬這一過程,包括攝像機標定、圖像獲取、特征提取、圖像校正、立體匹配、三維重構以及目標定位。文章主要研究內容是基于MyRIO嵌入式平臺的雙目立體視覺開發(fā)問題及應用。具體內容為:對MyRIO嵌入式平臺以及開發(fā)環(huán)境進行了說明,討論了目前國內外立體視覺的主流實現方法、以及對MyRIO嵌入式平臺進行了有效的改進,最后展示了一例關于立體視覺在MyRIO嵌入式平臺的具體應用。
關鍵詞:機器視覺;雙目立體視覺;三維感知;MyRIO嵌入式開發(fā)平臺
中圖分類號:TP391.41? ? 文獻標識碼:A 文章編號:2096-4706(2019)01-0073-03
Development and Application of Binocular Stereo Vision Base on
MyRIO Embedded System
ZHOU Fan
(State Grid Hubei Electric Power Co.,Ltd.,Maintenance Company,Yichang? 443000,China)
Abstract:Human perception of the three-dimensional world mainly through the eyes from the external environment to obtain visual imaging,and then through the retina,the visual signal is transmitted to the brain,and then according to the inherent experience and knowledge,the brain recognizes and processes the signal,and finally forms the three-dimensional perception. Machine vision is to simulate this process with various software and hardware,including camera calibration,image acquisition,feature extraction,image correction,stereo matching,three-dimensional reconstruction and target location.The main content of this paper is the development and application of binocular stereo vision based on MyRIO embedded platform. Specific contents are as follows:MyRIO embedded platform and development environment are described,the mainstream implementation methods of stereo vision at home and abroad are discussed,and effective improvements are made for MyRIO embedded platform. Finally,an example of the application of stereo vision in MyRIO embedded platform is presented.
Keyword:machine vision;binocular stereo vision;3D perception;MyRIO embedded development platform
0? 引? 言
在計算機視覺(Computer Vision)領域,雙目立體視覺(Binocular Stereo Vision)是一個極為重要的研究分支,特別是在“鳥飛派”[1]機器學習專家的眼中。這是因為,人類的視覺原理就是通過雙眼從兩個不同的角度,把從外界環(huán)境中獲取的視覺信號經由視網膜傳遞到大腦,再由大腦根據固有的經驗和知識,對視覺信號進行識別處理,最終形成視覺意識。而在大自然中,幾乎所有生物都擁有兩只眼睛,這一事實也從旁佐證了雙目立體視覺的合理性。
1? MyRIO嵌入式平臺
1.1? MyRIO硬件及功能
MyRIO是National Instruments公司生產的一款用于信號控制、機器人、機電一體化和嵌入式概念教學的便攜式、實時(Real-time)嵌入式設備。其處理器采用雙核ARM Cortex-A9 Processor,擁有512M內存,并且支持IEEE 802.11 b,g,n協議,即2.4 GHz頻率WIFI通信協議。MyRIO擁有包括模擬信號、數字信號在內的20個輸入輸出端口MSP Connector,并擁有34個通用可編程端口的MXP Connector,同時支持3.3V以及5V兩個電壓等級的信號輸出。除此以外,在一些高配型號上,還掛有板載加速度計與板載陀螺儀。
1.2? MyRIO軟件及控制
MyRIO主要通過事先在PC端對其內置的LabVIEW FPGA芯片進行編程,實現用戶所需的功能。用戶需要在PC端使用LabVIEW軟件通過USB或者無線與MyRIO進行連接,然后把程序下載到MyRIO的LabVIEW FPGA芯片中。完成以后,MyRIO會根據用戶在程序中的指令執(zhí)行相應的操作。
2? 雙目立體視覺主流實現方法
2.1? 攝相機的標定
攝像機標定的目的是求解兩個鏡頭的內、外參數。內參數包括鏡頭的幾何特性和光學特性,外參數則包括自身相對于外界坐標系的位置和方向,以及與另一個鏡頭光心的相對距離,也就是基線。雖然有時相機的生產廠家會給出部分內外參數,譬如鏡頭尺寸、廣角度數、焦距等。但是考慮到相機參數的精度將直接影響最后的識別結果。所以主流的雙目立體視覺實現方法往往會對相機進行高精度標定,而非采用生產廠家給出的理論值。
從原理上,可以將相機標定方法分為三類,傳統(tǒng)標定法、相機自標定法和主動視覺標定法。傳統(tǒng)標定法主要是利用制造精度非常高,并且尺寸已知的標定物(如黑白格棋盤),通過多次矯正實驗,來獲取相機的內、外參數。直接線性法(Direct Linear Transformation)[2]、TSAI法[3]和張友正標定法[4]等,都屬于傳統(tǒng)標定法。而相機自標定法則不同,它是基于圖相之間的對應關系來獲取內、外參數,所以不需要標定物輔助。所謂主動視覺標定法則是利用一個可以精確控制的基座,通過定量的移動后,從移動前后圖像變化來獲取相機的內、外參數。
2.2? 圖像校正
圖像校正的目的是消除圖像的垂直視差(Disparity)。兩個相機類似于人的雙眼,應該處于同一水平面。所以在垂直視角上應該是相同的,而在水平視角應該有對應于基線的差異。但兩個相機獲取的圖像在垂直方向上往往會有一定差異,于是就需要利用圖像校正來消除。具體做法是,將基線與圖像的水平掃描線以及水平軸X對齊,然后逐點的與其在水平線上的對應點匹配,從而消除垂直視差。
2.3? 立體匹配算法
立體匹配算法是計算機視覺領域的研究重點,當前的研究方向主要是提高匹配的精度和降低算法的復雜度[5]。當相機把三維的物體投影到二維世界時,所有細節(jié)信息,比如物體表面的材質、光照的高亮以及陰影等信息,都被壓縮成像素,表現為不同的灰度。如何通過不同的灰度值,還原三維世界的場景,這就是計算機視覺領域的難點。目前主要有基于局部的立體匹配算法和基于全局的立體匹配算法兩大類?;诰植康牧Ⅲw匹配算法將像素點作為最小匹配單元進行匹配,雖然這種方法計算復雜度較低,但是紋理和噪聲對其影響較大。而基于全局的立體匹配算法則側重于在整個圖像中搜尋全局的最優(yōu)解,雖然精度比局部立體匹配算法要高,但是其計算復雜度也比局部立體匹配算法高。
3? 對MyRIO嵌入式平臺的改進
3.1? OpenCV與Visual Studio開發(fā)套件的替代
在絕大多數雙目立體視覺的開發(fā)項目中,都會用到OpenCV計算機視覺庫以及微軟公司的Visual Studio開發(fā)工具。其中OpenCV是一款包含了一系列C函數和少量C++類的開源圖像處理算法庫,在圖像處理領域,用戶可以通過調用其中的函數,來實現用戶所需的具體功能。而Visual Studio開發(fā)工具則提供了一個集成的開發(fā)環(huán)境,在這個開發(fā)環(huán)境中,用戶能夠自上而下地對整個開發(fā)過程進行管理與測試。
目前主流的雙目立體視覺實現結構都是在Visual Studio的開發(fā)環(huán)境中調用OpenCV算法庫的內容,從而達到雙目立體視覺的效果。但是MyRIO嵌入式平臺,既不兼容Visual Studio開發(fā)環(huán)境,又無法調用OpenCV算法庫(目前最新的OpenCV版本僅支持Linux、Windows、Android和Mac OS[6])。所以要想在MyRIO嵌入式平臺上開發(fā)雙目立體視覺,必須對這個結構加以改進。
經過大量的研究和測試,本文提出一種可行的改進方法。首先利用LabVIEW開發(fā)環(huán)境代替Visual Studio開發(fā)環(huán)境,由于兩者都支持C語言的代碼,所以在代碼兼容性上問題并不大。對于集成了300多個中、高層API函數的OpenCV算法庫而言,雙目立體視覺的實現并不需要如此數量的函數集。殺雞焉用牛刀,一種思路是將所需的函數提取出來,然后寫入到LabVIEW開發(fā)環(huán)境中。而Ben Ward與筆者則發(fā)現了另一種可行的解決方案,首先還是在LabVIEW中移植Visual Studio的代碼,然后利用MATLAB中的Application下拉列表里的Stereo Camera Calibrator對相機進行標定。但是筆者的實驗結果表明,Stereo Camera Calibrator的標定結果并不是特別理想。同時,蘇麗穎等人[7]的研究結果也指出,Stereo Camera Calibrator的平均誤差大于OpenCV。所以在有條件的情況下,應盡量采用OpenCV與 Visual Studio開發(fā)套件進行標定,獲取內、外參數后,再將相機接入MyRIO嵌入式平臺進行后續(xù)工作。這一步完成后,需要將內、外參數利用mat文件的形式載入到MATLAB中。
然后創(chuàng)建一個系統(tǒng)對象(System Objects),以USB或無線的方式分別讀入兩個相機的視頻流(Video Stream)。為了計算視差和3D重構,必須事先進行對視頻幀數的校正,可以使用MATLAB自有的rectifyStereoImages函數。接下來就可以利用左右的灰度進行視差計算了,在MATLAB中disparity函數可以實現這一步驟,并且輸出視差圖。有了視差圖以后,利用點云(Point Cloud)就可以很方便地進行3D重構。(事實上,這一函數名就叫pointCloud)。當有了點相對于三維世界的坐標,那么無論是對物體的識別,還是對距離的感知,都可以通過相應的代碼輕易地實現。最后需要做的就是對視頻流的每一幀圖像,都進行上述操作,這樣就可以動態(tài)地實現所需功能。
3.2? 雙目立體視覺的物理實現
計算機視覺的飛速發(fā)展,催生了一系列雙目立體視覺硬件。其中最具代表性的硬件就是雙目攝像頭,這是一種將兩個鏡頭集成在一個電路板上的硬件,僅通過一個USB接口與PC連接。雖然這種雙目攝像頭的價格并不昂貴,但是卻有兩個問題。一是市面上大多數雙目攝像頭都是集成兩個廣角鏡頭(成本較低),這會導致在相機標定環(huán)節(jié),圖形或多或少會有一定的畸變。二是絕大多數雙目攝像頭需要安裝相應的驅動,或者需要啟動一個Windows操作系統(tǒng)中的.exe文件來讀取視頻流。這對于MyRIO嵌入式平臺來說非常不友好。所以針對MyRIO嵌入式開發(fā)平臺,一種改進的方法是利用兩個完全一樣的非廣角鏡頭自制雙目攝像頭,雖然對制作的精度要求很高,但這是一種可行性較高的方案。其重點是,在水平方向對兩個鏡頭的固定、基線距離的精確把握、焦距和感光度等可調節(jié)、參數保持一致。
4? 應用實例與結論
4.1? 一個基于MyRIO的雙目立體視覺案例
2003年6月2日,歐洲航天局的首次火星探測任務——“火星快車號”發(fā)射升空。同年的年12月19日,“火星快車號”抵達預定軌道,其搭載的火星登陸器“小獵犬二號”(小獵犬號正是兩次跟隨英國生物學家達爾文探索地球生命的帆船。)成功分離,開始登陸火星。然而,僅僅六天之后,“小獵犬二號”與此次任務的登錄操作中心失去聯系。次年2月6日,英國萊斯特大學“小獵犬二號”管理委員會宣布,任務失敗。
但是“小獵犬二號”管理委員會并沒有氣餒,他們在萊斯特大學成立了宇宙研究中心(Space Research Centre),繼續(xù)登陸火星,進行地外生命的項目研究。在這個項目中,有一個子項目名叫SPLIT(Small Planetary Linear Impulse Tool),這個子項目致力于開發(fā)一套能夠對火星上的巖石進行切割,并能夠采樣分析其內部成分的工具。在這個子項目的測試階段,開展了一個更小的子項目PPR(Prototype Planetary Rover),這個項目被要求設計一個模擬火星登陸器,作為SPLIT的測試平臺。而在PPR項目中,針對模擬識別火星巖石以及其距離的項目要求,采用了本文所述的開發(fā)方法。
模擬火星登錄器采用MyRIO嵌入式開發(fā)平臺作為其核心控制設備,通過無線與控制端連接。這樣的通信模式決定了PPR項目無法采用主流的OpenCV與Visual Studio開發(fā)套件,來實現雙目立體視覺。該項目主要從物理硬件和開發(fā)平臺兩個方面改進了雙目立體視覺的主流開發(fā)方式,使其能夠因地制宜,適應在MyRIO嵌入式環(huán)境下工作。如第三章所述,利用兩個參數相同的非廣角鏡頭,水平排列,制作雙目攝像機;用LabVIEW開發(fā)環(huán)境取代Visual Studio,并根據OpenCV算法庫中所需函數,在MATLAB中進行圖像校正、立體匹配、三維重構以及目標定位。但攝像機標定環(huán)節(jié),即雙目鏡頭內、外參數的獲取,依然使用平均誤差較小[7]的OpenCV與 Visual Studio開發(fā)套件進行標定。
4.2? 結論
隨著人工智能的飛速發(fā)展,計算機視覺逐漸成為不可或缺的一環(huán)。對于雙目立體視覺的研究,也越來越深入。但是由于其算法的獨特性,雙目立體視覺的開發(fā)環(huán)境受限。本文主要討論了在MyRIO嵌入式平臺下的雙目立體視覺開發(fā)問題,文章從硬件和軟件兩個層面給出了具體改進方法,文章末尾的應用實例也證明了這種改進方法是可行的,穩(wěn)定的。本文旨在啟發(fā),在計算機視覺領域,除了加強縱向的深入,比如標定方法、匹配算法的研究;還應該進行橫向的延伸,比如加強對雙目立體視覺開發(fā)平臺兼容性與魯棒性等研究。
參考文獻:
[1] Wu Jun.Age of Intelligence [M].Beijing:Citic Press,2016.
[2] Abdel-Aziz Y I,Karara H M,Hauck M.Direct Linear Transformation from Comparator Coordinates into Object Space Coordinates in Close-Range Photogrammetry * [J].Photogrammetric Engineering & Remote Sensing,2015,81(2):103-107.
[3] Lenz R K.A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration [J].IEEE Transactions on Robotics & Automation,1989,5(3):345-358.
[4] 張友正,馬頌德.計算機視覺-計算理論與算法基礎 [M].北京:科學出版社,1998.
[5] 韓慧妍.基于雙目立體視覺的三維模型重建方法研究 [D].太原:中北大學,2014.
[6] OpenCV Dev Team.OpenCV 2.4.13.7 documentation. OpenCV dev team [EB/OL].https://docs.opencv.org/2.4/index.html.2011-2014/2018-10.
[7] 蘇麗穎,李小鵬,么立雙.雙目攝像機快速標定新算法 [J].中南大學學報(自然科學版),2013,44(S2):364-367.