馬朝陽 華云松
摘 ?要: 在雙目立體測量原理的基礎(chǔ)上,結(jié)合Matlab和OpenCV,設(shè)計(jì)一個(gè)基于雙目視覺的平面測距系統(tǒng)。該系統(tǒng)根據(jù)張正友標(biāo)定方法,通過Matlab工具箱對雙目相機(jī)進(jìn)行標(biāo)定,然后根據(jù)相機(jī)成像原理建立世界坐標(biāo)與像素坐標(biāo)之間的關(guān)系方程,在VS2015+Opencv3.3.0環(huán)境下通過最小二乘法解出目標(biāo)點(diǎn)的三維空間坐標(biāo)。最后能夠?qū)崿F(xiàn)通過鼠標(biāo)選定同一平面內(nèi)的兩個(gè)目標(biāo)點(diǎn)獲取其空間坐標(biāo),然后計(jì)算出兩點(diǎn)之間的距離。該系統(tǒng)結(jié)構(gòu)簡單,易于實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果顯示,該系統(tǒng)測量精度高,且目標(biāo)距離大于40 cm時(shí)精度會(huì)更高。
關(guān)鍵詞: 雙目視覺;測距;相機(jī)標(biāo)定;最小二乘法
中圖分類號: TP317.4 ???文獻(xiàn)標(biāo)識碼: A ???DOI:10.3969/j.issn.1003-6970.2020.09.051
【Abstract】: Based on the principle of binocular stereo measurement, combined with Matlab and OpenCV, a planar distance measurement system based on binocular vision is designed. According to the calibration method of Zhang Zhengyou, the system calibrates the binocular camera through the Matlab toolbox, and then establishes the relationship equation between world coordinates and pixel coordinates according to the camera imaging principle, and solves the target by least square method in the environment of VS2015 + Opencv3.3.0 The three-dimensional space coordinates of the point. Finally, it is possible to select two target points in the same plane by the mouse to obtain their spatial coordinates, and then calculate the distance between the two points. The system has a simple structure and is easy to implement. Experimental results show that the system has high measurement accuracy, and the accuracy will be higher when the target distance is greater than 40 cm.
【Key words】: Binocular vision; Ranging; Camera calibration; Least square method
0 ?引言
機(jī)器視覺作為一種人工智能識別系統(tǒng),廣泛應(yīng) 用于醫(yī)學(xué)、工業(yè)、軍事、農(nóng)業(yè)等方向[1-3]。相較于單目視覺,雙目視覺能夠很容易的獲取目標(biāo)物的深度信息,便于三維信息的提取,所以雙目視覺已經(jīng)廣泛應(yīng)用于生活、生產(chǎn)等方面。
雙目視覺測量技術(shù)能夠在非接觸的環(huán)境下獲取目標(biāo)之間的三維信息,并且可以達(dá)到很高的精度。因此雙目測量技術(shù)能夠在工業(yè)生產(chǎn)、農(nóng)業(yè)采摘甚至航空航天領(lǐng)域大放異彩。
平面測距系統(tǒng)通過左右相機(jī)獲取標(biāo)定板不同角度的多幅圖像,利用matlab工具箱實(shí)現(xiàn)雙目標(biāo)定,再根據(jù)成像原理構(gòu)建像素坐標(biāo)和世界坐標(biāo)的轉(zhuǎn)換關(guān)系,根據(jù)最小二乘法在VS2015+OpenCV3.3.0環(huán)境下計(jì)算出左右像素點(diǎn)對應(yīng)的空間坐標(biāo)。
1 ?相機(jī)標(biāo)定
1.1 ?相機(jī)標(biāo)定原理
雙目立體視覺測量被測物體的三維信息,會(huì)涉及到各個(gè)坐標(biāo)系的轉(zhuǎn)換[4],該系統(tǒng)需要用到的坐標(biāo)系包括:世界坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系和相 機(jī)坐標(biāo)系[5-7]。
像素坐標(biāo)系以像素為基本單位,像素坐標(biāo)系上任意一點(diǎn)可以表示為。圖像坐標(biāo)系平行于像素坐標(biāo)系,原點(diǎn)是攝像機(jī)光軸與成像平面的交點(diǎn),圖像坐標(biāo)系的任意一點(diǎn)可以表示為。像素坐標(biāo)與圖像坐標(biāo)之間的關(guān)系如下:
(1)
相機(jī)坐標(biāo)系的原點(diǎn)與光心重合,坐標(biāo)軸平行于圖像坐標(biāo)系的坐標(biāo)軸,軸與相機(jī)的光軸重合。相機(jī)坐標(biāo)系中的任意一點(diǎn)可以表示為。世界坐標(biāo)系即絕對坐標(biāo)系,用來描述真實(shí)場景中的位置,其任意一點(diǎn)描述為。相機(jī)坐標(biāo)系與其他坐標(biāo)系的關(guān)系如圖1所示。
1.2 ?相機(jī)參數(shù)標(biāo)定
相機(jī)標(biāo)定利用Matlab的toolbox工具箱來獲得內(nèi)外參數(shù)。采集14對不同位置和交點(diǎn)的標(biāo)定板圖片,先進(jìn)行單目標(biāo)定,在進(jìn)行雙目標(biāo)定,圖片分辨率為800*800。標(biāo)定過程如下:
(1)在Matlab命令行運(yùn)行calib_gui指令,選擇standard模式,讀取圖片,如圖2所示。
(2)讀取圖片后,點(diǎn)擊Extract grid corners來提取角點(diǎn),如圖3所示。
(3)角點(diǎn)提取完成后,點(diǎn)擊Calibration進(jìn)行相機(jī)標(biāo)定,可以獲取單個(gè)相機(jī)的內(nèi)參數(shù);
(4)兩個(gè)相機(jī)都單獨(dú)標(biāo)定完之后,在命令行輸入stereo_gui指令,然后讀入左右兩個(gè)相機(jī)的內(nèi)參標(biāo)定文件;
(5)點(diǎn)擊Run stereo calibration按鍵,即可進(jìn)行雙目標(biāo)定,計(jì)算出旋轉(zhuǎn)矩陣和平移矩陣,然后保存即可。
2 ?雙目視覺測量原理
雙目立體視覺技術(shù),就是依靠兩個(gè)相機(jī)從不一樣的角度來捕獲相同場景的圖片,而后得到兩張圖片中對應(yīng)的像素點(diǎn)之間的視差,最終可以將視差圖通過三角測量的方法轉(zhuǎn)成距離[11]。如圖4所示,要求點(diǎn)的空間坐標(biāo),只需要解出的交點(diǎn)即可。
假設(shè)空間中一點(diǎn)在左右相機(jī)投影平面下的坐標(biāo)分別為,左右相機(jī)的投影矩陣分別為,則有:
3 ?立體校正
理想情況下的雙目相機(jī)系統(tǒng)是兩攝像機(jī)圖像平面平行,光軸和圖像平面垂直,極點(diǎn)處于無線遠(yuǎn)處。但事實(shí)上相機(jī)的安裝的位置看似共面,實(shí)際卻并非如此。
立體校正就是的作用就是要把消除畸變后的兩幅圖像嚴(yán)格地行對應(yīng),使得兩幅圖像的對極線恰好在同一水平線上。通過OpenCV中cvStereoRectify 函數(shù)立體校正,輸入相機(jī)內(nèi)參數(shù),畸變參數(shù),旋轉(zhuǎn)矩陣和平移向量,就能得到行對準(zhǔn)校正后的旋轉(zhuǎn)矩陣,左右相機(jī)投影矩陣以及重投影矩陣。然后左右圖像分別調(diào)用cvInitUndistortRectifyMap函數(shù),最后調(diào)用函數(shù) cvRemap,得到非畸變圖像。
4 ?實(shí)驗(yàn)結(jié)果
根據(jù)上述理論,利用Matlab對相機(jī)標(biāo)定,標(biāo)定結(jié)果見表1。
5 ?結(jié)論
根據(jù)成像原理和雙目測量原理對同一平面內(nèi)的兩目標(biāo)點(diǎn)之間的距離進(jìn)行研究。并通過Matlab和OpenCV編寫代碼進(jìn)行實(shí)驗(yàn)驗(yàn)證。研究結(jié)果表明該方法實(shí)際可行,并且精度很高,尤其在目標(biāo)距離大于40cm時(shí),效果更好。
參考文獻(xiàn)
[1]張國福, 沈洪艷. 機(jī)器視覺技術(shù)在工業(yè)檢測中的應(yīng)用綜述 [J]. 電子技術(shù)與軟件工程, 2013(22): 111-111.
[2]師紅宇, 任小玲. 基于機(jī)器視覺的棉花異性纖維識別方法 [J]. 軟件, 2018, 39(2): 32-34.
[3]李沫. 視覺檢測系統(tǒng)在汽車儀表自動(dòng)化測試方面的應(yīng)用[J]. 軟件, 2018, 39(5): 126-128.
[4]張鋮偉, 王彪, 徐貴力. 攝像機(jī)標(biāo)定方法研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2010, 20(11): 174-179.
[5]馬頌德, 張正友. 計(jì)算機(jī)視覺: 計(jì)算機(jī)理論與算法基礎(chǔ) [M]. 北京: 科學(xué)出版社, 1998: 72-75.
[6]曲學(xué)軍, 張璐, 張凌云. 基于新的成像模型的攝像機(jī)標(biāo)定與三維重建[J]. 儀器儀表學(xué)報(bào), 2011, 32(8): 1830-1836.
[7]夏茂盛, 孟祥磊, 宋占偉, 等. 基于雙目視覺的嵌入式三 維坐標(biāo)提取系統(tǒng)[J]. 吉林大學(xué)學(xué)報(bào): 信息科學(xué)版, 2011, 29(1): 61-66.
[8]張曙. 基于機(jī)器視覺的機(jī)械手抓取控制研究[D]. 上海: 上海理工大學(xué), 2018.
[9]Lu-qiao FAN, Wen-qiong ZHOU, Ban-xiang DUAN, etc. Obtain 3D coordinate of EOD robots based on computer vision[J]. MachineTool & Hydraulics, 2019, 47(12): 143-150.
[10]韓博. 基于雙目立體視覺的工件識別與定位關(guān)鍵技術(shù)研究[D]. 哈爾濱工業(yè)大學(xué), 2018.
[11]張廣軍. 視覺測量[M].北京:科學(xué)出版社, 2008: 49-53.
[12]曲學(xué)軍, 張璐. 基于雙目視覺的三維測量方法[J]. 計(jì)算機(jī)仿真, 2011, 28(2): 373-377.
[13]Y Yabuta, H Mizumoto, S Arii. Binocular robot vision with active viewpoint for sphere measurement[J]. Key Engineering Materials, 2012, 516: 343-348.