楊晨曦 華云松
摘 ?要: 為了獲取目標物體在空間中的三維信息,本文在雙目立體測量原理的基礎(chǔ)上,采取OpenCV和Matlab相結(jié)合的方法,設(shè)計了一個基于雙目立體視覺的目標物體測距系統(tǒng)。該系統(tǒng)采取張定友棋盤標定法,使用Matlab內(nèi)置的工具箱完成雙目相機標定,采用SGBM(Semi-Global Block Matching)立體匹配算法在VS2017環(huán)境下結(jié)合 Opencv3.4.1庫,對左右相機獲得的圖像進行立體匹配,生成視差圖,將二維空間點重投影到三維空間中,實現(xiàn)二維坐標到三維坐標的轉(zhuǎn)換,即可得到物體的三維點坐標。最終實現(xiàn)通過鼠標點選被測物體視差圖后輸出選定的空間三維坐標。實驗結(jié)果顯示,該系統(tǒng)的測量精度較高,并且在140 cm距離的測量精度最高。
關(guān)鍵詞: 雙目視覺;目標測距;三維測量;相機標定;立體匹配;重投影
中圖分類號: TP317.4 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.01.028
本文著錄格式:楊晨曦,華云松. 基于雙目立體視覺的目標物測距研究[J]. 軟件,2020,41(01):128132
【Abstract】: To get the spatial three-dimensional information of the target object in space, this paper takes the approach of stereo vision measuring principle and designs a target object ranging system based on binocular stereo system. This system is accomplished by the combination of Opencv and Matlab. The binocular camera calibration was accomplished by using the built-in toolbox of Matlab based on the Zhang Dingyou chessboard calibration method. By conducting SGBM (Semi-global Block Matching) stereo matching algorithm adopted in VS2017 environment and Opencv3.4.1, images obtained by left and right cameras are matched in stereo, then parallax map is generated, 2d space points are re-projected into 3d space, 2d coordinates are converted into 3d coordinates, and 3d point coordinates of objects can be obtained. Finally, select the parallax map of the measured object through the mouse and output the selected three-dimensional coordinates. Experimental results show that the measurement accuracy of the system is high, and the measurement accuracy is the highest at the distance of 140 cm.
【Key words】: Binocular vision; Target ranging; Three-dimensional measurement; Camera calibration; Stereo matching; Reprojection
0 ?引言
機器視覺作為一種人工智能識別系統(tǒng),廣泛應用于醫(yī)學、工業(yè)、軍事、農(nóng)業(yè)等方向[1-3]。雙目立體視覺測量系統(tǒng)在工業(yè)制造、科學研究等領(lǐng)域中已成為了一種不可或缺的基礎(chǔ)工具[4],其可以在不接觸目標物的前提下獲取目標物體的立體信息。雙目立體視覺測量方法具有高效率、高精度、簡單結(jié)構(gòu)、低成本等優(yōu)點,相機標定、立體校正、立體匹配和三維重建是該技術(shù)的核心工作。
雙目視覺系統(tǒng)采用張定友提出的棋盤標定法,通過雙目相機拍攝獲取左右目圖像,利用MATLAB完成雙目相機的標定,通過相機標定得到相關(guān)參數(shù),在VS2017環(huán)境下結(jié)合Opencv3.4.1,利用SGBM[5](Semi-Global Block Matching)算法實現(xiàn)左右圖像對的匹配,再進行視差計算生成視差圖,最后再將二維坐標點重投影至三維空間內(nèi)獲得圖像點的三維坐標[6]。
1 ?雙目立體視覺測距離原理
雙目視覺測量原理:利用位于不同位置的兩個平行放置的相機獲取被測物體的二維圖像,通過三角幾何原理計算圖像像素之間的位置偏差(即視差),獲取被測物體的三維信息,即P點的三維坐標。相機放置如圖1所示。
P為空間中的一個目標點, , 是兩個相機,相機焦距f,b為基線。要想得到P點的三維坐標,只需要求得P點在相機 中的成像點 及在相機 中的成像點 的坐標。當雙目相機同時觀察P點時,P點在左右相機內(nèi)的成像點坐標分別為 , ,則根據(jù)圖1可利用三角形相似定律可得。
即若在左相機平面中任選一點對應右相機平面上有且只有一點與之對應,則可以確定該點在相機坐標系的坐標,進而確定該點在空間中的坐標值。
2 ?相機標定
2.1 ?相機標定原理
雙目立體視覺測量被測物體的三維信息,會涉及到各個坐標系的轉(zhuǎn)換,該系統(tǒng)需要用到的坐標系包括:世界坐標系、圖像坐標系、像素坐標系和相機坐標系[7-9]。基本方案是通過選定的相機模型,通過事先檢測獲得的點的圖像坐標和世界坐標,計算相機的模型參數(shù),從而得到相機的投影矩陣[10-11]。
圖像坐標系分為圖像平面坐標系和平面像素坐標系。圖像平面坐標系的單位是物理單位,通常以毫米為單位,圖像像素坐標系是以像素為單位,它們的轉(zhuǎn)換關(guān)系如下。
世界坐標系是將空間中任意一點定義為坐標原點的坐標系,相機坐標系是以鏡頭光心為原點建立的直角坐標系,其中圖像坐標系的 軸與 軸分別平行于 軸與 軸, 軸與圖像平面垂直。如圖2所示。
2.2 ?攝像機標定
本文通過Matlab工具箱得到相機內(nèi)外參數(shù)和畸變參數(shù)。為了獲得較為準確的標定信息,采取先單目標定再雙目標定的方法,并且通過改變標定板的位置、擺放角度以及標定板和相機之間距離的方式,拍攝了17對共34張標定圖,雙目相機標定所用的標定板的棋盤格大小為24×24 mm,角點數(shù)為9×6,圖像大小為1280×960。其實現(xiàn)過程如下。
(1)在matlab里輸入calib_gui分別讀入左右相機拍攝的17對棋盤格照片,分別對左右相機進行標定。如圖3所示。
(2)成功讀入所選照片后,點擊Matlab工具箱中Extract grid comers鍵,選取標定圖片的角點,如圖4所示。
(3)選取角點之后,點擊工具箱中的Calibration鍵,對單個相機進行標定,并依次對左右相機按上述步驟進行操作,得出對應相機的內(nèi)參數(shù)。
(4)單目相機標定后,輸入指令stereo_gui可以出現(xiàn)雙目標定工具箱,依次讀入左右相機的參數(shù)后對雙目相機進行標定,最終得到平移向量 和旋轉(zhuǎn)向量R,即可求得兩相機之間的位置關(guān)系。
3 ?立體校正
當左右兩相機的圖像平面完全共面時,此時進行行對準,立體匹配就會只在行間進行搜索,這樣就可以過濾掉無法匹配的點。但是實際情況下中,由于擺放誤差的存在,兩個相機幾乎很難完整的共面以及行對準,所以,對左右圖像進行校正[12]就是不可避免的一個環(huán)節(jié)。OpenCV中的cvStereoRectify函數(shù)可以達到對圖像進行立體校正的效果,將相機標定后的相機內(nèi)參數(shù),畸變參數(shù),旋轉(zhuǎn)矩陣和平移向量輸入到此函數(shù)中,得到行對準校正后的旋轉(zhuǎn)矩陣,左右相機投影矩陣P以及重投影矩陣Q。然后分別對左右圖像調(diào)用函數(shù)cvInitUndistortRectifyMap,該函數(shù)返回映射矩陣,再對圖像進行校正,最后調(diào)用函數(shù)cvRemap,得到非畸變圖像。圖6所示為經(jīng)過立體校正后的左右圖像,這樣只需在同一行上搜索匹配的點即可。
4 ?立體匹配
在雙目立體視覺系統(tǒng)中,立體匹配[13]是一個關(guān)鍵技術(shù),它是通過兩個相機同時獲取同一場景的立體圖像,尋求左右圖像之間一一對應的關(guān)系,匹配兩個圖像上對應的點,從而得到視差圖。立體匹配有多種方式,根據(jù)立體匹配的幾何約束和場景約束,匹配算法可以分為基于局部、全局、半全局的匹配算法,局部匹配算法快速簡單,但是得到的視差圖粗糙,易造成誤匹配且對噪聲敏感;全局匹配算法[14]精度高,計算相比于局部匹配復雜。半全局的匹配算法結(jié)合了兩者的優(yōu)勢,使算法性能在視差精度和計算復雜度上達到一個中和的、較好的效果[15]。
本文選用的SGBM算法是基于互信息計算匹配代價,根據(jù)相鄰像素點之間的視差梯度[16-17]信息,為初始匹配代價施加不同的懲罰項,采用平滑約束[18],引用動態(tài)規(guī)劃算法[19]搜索最優(yōu)路徑,求解視差。
式(8)中,和分別是掃描線上的像素點,為左掃描線上的點處的灰度,為右掃描線上的采樣點線性內(nèi)插得到的;②匹配代價的聚合:通過沿8個方向掃描線上分別計算匹配代價,每個路徑的間隔為45°,然后將所有掃描線路徑的匹配代價進行聚合;③視差的計算:通過迭代得到計算視差,用隨機的視差影像來校正右圖像,然后再進行匹配,獲得新的視差圖;④視差的優(yōu)化處理:左右圖像匹配后,利用右圖像的點去匹配左圖像中對應的點,如果兩次匹配的視差不相同,則將該誤匹配[20-21]的點剔除。
5 ?實驗結(jié)果
通過選取左右相機拍攝的各17張棋盤格圖 片進行相機標定實驗,所得到的內(nèi)外參數(shù)如表1所示。
在進行了相機標定之后,即可求得目標的坐標值。該系統(tǒng)是通過點擊鼠標來確定選定的點,點的位置可能會存在不同,但由于取的點在一個平面內(nèi),所以只求Z坐標即可,即通過測量目標點距離光心的距離來驗證實驗結(jié)果的準確度。通過5組試驗的結(jié)果可知,在物體距離相機光心的距離在140 cm時誤差是最小的。隨著距離的增大或減小,測量的精度都在降低。測量結(jié)果如表2所示。
6 ?結(jié)論
本文基于雙目立體視覺的測量原理,主要研究了如何用雙目視覺測量物體的深度信息。對攝像機標定,立體校正,立體匹配等技術(shù)進行了研究,在Matlab中實現(xiàn)了雙目相機的標定,并在VS2017環(huán)境下結(jié)合Opencv3.4.1實現(xiàn)了該系統(tǒng)。該系統(tǒng)可以生成待測物體的視差圖,通過點擊視差圖上對應的點得到空間中對應的三維坐標。通過多次實驗可知,該方法在測量距離相機140 cm時測量精度較高,待測物接近相機或者遠離相機時測量精度降低。
參考文獻
[1] 張國福, 沈洪艷. 機器視覺技術(shù)在工業(yè)檢測中的應用綜述[J]. 電子技術(shù)與軟件工程, 2013(22): 111-111.
[2] 師紅宇, 任小玲. 基于機器視覺的棉花異性纖維識別方法[J]. 軟件, 2018, 39(2): 32-34.
[3] 李沫. 視覺檢測系統(tǒng)在汽車儀表自動化測試方面的應用[J]. 軟件, 2018, 39(5): 126-128.
[4] 彭俊善. 基于數(shù)字圖像處理技術(shù)建筑工地鋼筋計數(shù)的方法[D]. 深圳大學, 2017.
[5] Hirschmüller H. Stereo Processing by Semiglobal Matching and Mutual Information[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2007, 30(2): 328-341.
[6] 董默, 趙若晗, 周志尊, 等. 醫(yī)學圖像三維重建系統(tǒng)設(shè)計與應用[J]. 軟件, 2018, 39(1): 87-90.
[7] 馬頌德, 張正友. 計算機視覺: 計算機理論與算法基礎(chǔ)[M]. 北京: 科學出版社, 1998: 72-75.
[8] 曲學軍, 張璐, 張凌云. 基于新的成像模型的攝像機標定與三維重建[J]. 儀器儀表學報, 2011, 32(8): 1830-1836.
[9] 夏茂盛, 孟祥磊, 宋占偉, 等. 基于雙目視覺的嵌入式三維坐標提取系統(tǒng)[J]. 吉林大學學報: 信息科學版, 2011, 29(1): 61-66.
[10] 于勇, 張暉, 林茂松. 基于雙目立體視覺三維重建系統(tǒng)的研究與設(shè)計[J]. 計算機技術(shù)與發(fā)展, 2009, 19(6): 127-131.
[11] 匡斌, 何超明. 磁共振成像虛擬掃描技術(shù)的發(fā)展及趨勢淺談[J]. 磁共振成像, 2011, 2(3): 218-223.
[12] 張曙, 華云松. 基于雙目立體視覺的目標物定位研究[J]. 軟件導刊, 2018.
[13] 張力, 黃影平. 實時雙目立體視覺系統(tǒng)的實現(xiàn)[J]. 電子科技, 2016(3).
[14] 郭龍源, 羅百通, 歐先鋒, 等. 自適應窗口和半全局立體匹配算法研究[J]. 成都工業(yè)學院學報, 2017(1).
[15] 孫道輝, 孫麗君, 陳天飛. 基于OpenCV的雙目立體匹配方法[J]. 軟件導刊, 2018, 17(09): 92-94+100.
[16] 解則曉, 陸文娟. 基于圖像相似幾何特征的雙目匹配算法[J]. 中國激光, 2014, 41(5).
[17] 洪奔奔, 管聲啟, 任浪, 等. 基于特征提取與匹配的帶鋼缺陷檢測[J]. 軟件, 2018, 39(9): 31-34.
[18] 徐歡歡. 基于能量函數(shù)的圖像分割方法的研究[D]. 中國科學技術(shù)大學, 2009.
[19] 黃松梅, 畢遠偉, 許曉. 雙目立體匹配算法的研究與實現(xiàn)[J]. 魯東大學學報: 自然科學版, 2018(1): 25-30.
[20] 林森, 殷新勇, 唐延東. 雙目視覺立體匹配技術(shù)研究現(xiàn)狀和展望[J]. 科學技術(shù)與工程, 2017(30): 140-152.
[21] 胡雨豪,劉波. 基于機器視覺的四軸飛行器自主巡航算法改進[J]. 軟件, 2018, 39(2): 52-56.