張曙+華云松
摘 要:為了實現視覺獲取目標物立體信息,以立體測量原理為基礎,采用Matlab和Opencv相結合的方法,設計了基于雙目立體視覺的目標物定位系統。該系統采用棋盤標定法,利用Matlab完成雙目相機標定,采用BM(Block Matching)立體匹配算法在VS2010環境下配合Opencv3.0.0庫,完成左右圖像對的匹配,生成視差圖。通過將二維空間點重投影至三維空間,便可求得目標點的空間三維坐標,最終實現通過鼠標點選后輸出選定點的空間坐標。實驗表明,該系統擁有較高的測量精度,尤其在150cm距離下可獲得最佳的測量精度。
關鍵詞:立體視覺;目標定位;相機標定;立體匹配;重投影
DOIDOI:10.11907/rjdk.172304
中圖分類號:TP317.4
文獻標識碼:A 文章編號:1672-7800(2018)002-0198-04
0 引言
計算機視覺技術發展迅速,其中立體視覺技術成果豐碩,雙目立體視覺技術正越來越多地應用在工業檢測和機器人導航等領域,其可以在不接觸目標物的基礎上獲取立體信息。該技術的核心工作是攝像機標定、立體匹配和三維重建[1]。
雙目視覺系統采用Zhang提出的棋盤標定法,利用Matlab完成雙目相機的標定。在VS2010環境下結合Opencv3.0.0,利用BM(Block Matching)算法實現左右圖像對的匹配,最后通過將二維坐標點重投影至三維空間的方式獲得目標的三維空間坐標。
1 雙目立體視覺測量原理
雙目視覺測量原理:從兩個不同的觀察角度獲取同一物,獲取在不同視角下的感知圖像,通過三角幾何原理計算圖像像素間的位置偏差(即視差),獲取景物的三維信息[2]。
本文采用平行雙目立體視覺模型,即兩相機平行放置,如圖1所示。
P為空間中任意一點,當使用雙目相機同時觀察P點時,P點在左右相機的圖像坐標是Pl=(xl,yl),Pr=(xr,yr),并有yi=yr=y,由三角幾何關系可得:
視差D=xl-xr,故可求出在攝像機坐標系下P點的坐標為:
所以,如果左相機平面上的點在右相機平面上有且只有一個點與其對應匹配,則該點在攝像機坐標系下的坐標便可確定,從而進一步得到該點在空間中的坐標信息。
2 攝像機標定
2.1 攝像機標定原理
為獲取目標物的立體信息,必然涉及到不同坐標系之間的轉換,雙目視覺系統需用到的坐標系有:世界坐標系、圖像坐標系和攝像機坐標系[3-5]。攝像機標定即指構建攝像機圖像像素位置與空間場景點位置之間的關系[6],基本思路是:由已選定的攝像機模型,通過事先檢測獲得的點的圖像坐標和世界坐標,計算攝像機的模型參數,從而得到攝像機的投影矩陣M[7-8]。
近些年攝像機標定技術發展很快,各具特點的標定方法層出不窮,在對比各種方法的優劣之后,本文選擇棋盤格標定法對攝像機進行標定,該方法采用的是針孔模型。
圖像坐標系分為圖像平面坐標系和平面像素坐標系。圖像平面坐標系的單位是物理單位,通常以mm為單位,圖像像素坐標系是以像素為單位,它們的轉換關系如下:
其中,(u,v)為圖像像素坐標,(x,y)為圖像平面坐標。
世界坐標系是原點可定義為空間任意一點的直角坐標系,攝像機坐標系是以鏡頭光心為原點的直角坐標系,其Xc軸和Yc軸分別平行于圖像坐標系的x軸與y軸,Zc軸垂直于圖像平面。世界坐標系與攝像機坐標系關系如下:
其中M為3×4矩陣,為投影矩陣。M1為攝像機內參數矩陣,M2為攝像機外參數矩陣。
2.2 攝像機標定
攝像機的標定有多種手段實現,本系統采用Matlab工具箱實現相機標定。相比其它方法,該方法更易于實現且精度更高,其實現過程如下:
(1)讀入多張用于標定的棋盤格圖片,對于左右相機分別進行標定,本文選擇分別讀入14張6×9的棋盤格圖片,如圖2所示。
(2)讀入圖片成功后,可在Matlab工具箱中選取提取角點按鈕,完成標定圖片的角點選取,如圖3所示。
(3)完成角點提取后,通過Matlab工具箱的Calibration選項,對單目相機進行標定,分別對左右相機按以上步驟完成單目標標定,最終得到對應相機的內參數。
(4)完成單目標標定后,輸入命令stereo_gui則可啟用雙目標定工具箱,首先讀入左右相機各自的內參數,之后再對雙目相機進行標定,最終得到旋轉向量R和平移向量T,即可知道雙目相機之間的位置關系。
3 立體校正
當兩個像平面完全行對準時,計算立體視差最簡單[9]。然而由于兩臺攝像機幾乎不可能有準確的共面和行對準成像平面,完美的對準結構在真實的立體系統中幾乎不存在。因此,要對兩臺攝像機的圖像重投影,使其精確落在同一個平面上,而且圖像的行要完全對準到前向平行的結構上。
空間的三維點通過投影矩陣P可以轉換為二維點。
其中,屏幕坐標為(x/w,y/w)。如果屏幕坐標和攝像機內參數矩陣已知,二維點便可重投影到三維空間之中,重投影矩陣如下:
4 立體匹配
立體匹配是尋求兩幅圖像之間的對應關系,即匹配左右圖像上相對應的點,并由此生成視差圖。立體匹配算法分為區域匹配、特征匹配和相位匹配[10]。常用的是區域匹配和特征匹配。基于區域的匹配方法對景物表面結構和光照反射較為敏感,當相關窗口內的像素點視差變化較大時,出現誤匹配的可能性也很大。基于特征的匹配方法可通過特征點進行匹配,因此對環境照明的變化不太敏感。但是通常特征點并不是連續的點,所以匹配后無法得到密集的視差圖[11]。endprint
本系統采用SAD(Sum of absolute differences)匹配算法完成左右圖像對的匹配。SAD是一種塊匹配算法,這種算法在運算速度方面具有絕對優勢。它的基本思想是對窗口內的灰度值求和,并與另一張圖片窗口內的灰度值和作比較,根據灰度值的和是否接近來判斷圖像是否匹配。
實現步驟如下:①設定一個窗口W覆蓋住左圖像,然后求得領域內灰度值的和;②設定一個同樣大小的窗口D覆蓋右圖像,求得領域內灰度值的和;③將兩窗口灰度值的和相減,并求絕對值;④移動右圖像的窗口重復步驟②和步驟③;⑤相減之后,求得絕對值最小的窗口,該窗口即為左邊窗口內圖像在右圖像中的匹配像素塊。
完成匹配后即可生成視差圖,如圖4所示。
在式(10)中,(X/W,Y/W,Z/W)即空間三維坐標,在得到了視差圖之后自然可以求得圖像中點對應的空間三維坐標點。
5 實驗結果
標定實驗采用左右相機拍攝的各14張棋盤格圖片進行,得到的相機內外參數如表1所示。
在進行了相機標定之后,將得到的參數代入到公式(10)即可求得目標的坐標值。由于該系統是通過鼠標點選來確定所要選定的點,所以每次的點選難免會有不同,但其總是位于同一平面,所以選擇求Z坐標,即目標點距離光心的距離來驗證試驗結果的誤差。通過7組試驗得出的結果可知,在目標距相機光心的距離在150cm時精度是最高的,之后隨著距離的變遠和變近,測量的精度都呈下降趨勢。測量結果如表2所示。
6 結語
本文基于雙目立體視覺測量原理,對立體標定技術以及立體匹配技術進行了研究,在Matlab中實現了雙目相機的標定,并在VS2010環境下結合Opencv3.0.0實現了該系統。該系統可生成目標物的視差圖,通過鼠標點擊視差圖即可輸出該點在空間中所對應的三維坐標。通過多次試驗得到數據可知,該系統對于150cm距離的目標物精度較高,隨著距離的變遠或變近,測量精度都呈下降趨勢。
參考文獻:
[1] 尚倩.基于雙目立體視覺的目標識別與定位[D].北京:北京交通大學,2011.
[2] 馬頌德,張正友.計算機視覺-計算機理論與算法基礎[M].北京:科學出版社,1998:72-75.
[3] 曲學軍,張璐,張凌云.基于新的成像模型的攝像機標定與三維重建[J].儀器儀表學報,2011,32(8):1830-1836.
[4] 夏茂盛,孟祥磊,宋占偉,等.基于雙目視覺的嵌入式三維坐標提取系統[J].吉林大學學報:信息科學版,2011,29(1):61-66.
[5] 于勇,張暉,林茂松.基于雙目立體視覺三維重建系統的研究與設計[J].計算機技術與發展,2009,19(6):127-131.
[6] LUO HONGGEN,ZHU LIMIN,DING HAN.Camera calibration with coplanar calibration board heal parallel to the imaging plane[J].Sensors and actuators a: Physical,2006,132(2):480-486.
[7] 李鵬,王軍寧.攝像機標定方法綜述[J].山西電子技術,2007(4):77-79.
[8] 于起峰,尚洋.攝像機測量學原理與應用研究[M].北京:科學出版社,2009:50-126.
[9] GARY BRADSKI,ADRIAN KAEBLER.學習OpenCV[M].于世琪,劉瑞禎,譯.北京:清華大學出版社,2009:467-468.
[10] 夏永泉,劉正東,楊靜宇.不變矩方法在區域匹配中的應用[J].計算機輔助設計與圖形學學報,2005,17(10):2152-2156.
[11] 劉盼,王金海.基于平行雙目立體視覺的測距系統[J].計算機應用,2012,32(S2):162-164.endprint