羅 丹 廖志賢
(1.桂林電子科技大學信息與通信學院,廣西 桂林 541004;2.廣西師范大學電子工程學院,廣西 桂林 541002)
基于OpenCV的雙目立體視覺測距
羅 丹1廖志賢2
(1.桂林電子科技大學信息與通信學院,廣西 桂林 541004;2.廣西師范大學電子工程學院,廣西 桂林 541002)
雙目立體視覺測距原理就是利用兩臺攝像機從兩個視點獲取目標點在不同視角下形成的圖像坐標,利用成像幾何模型計算同名像點圖像坐標偏差,來獲取目標點的三維坐標,從而實現距離測量,它在高速公路安全車距測量上有著極大的應用前景。當前的測距技術有主動測距法和被動測距法,論文采用的是基于OpenCV的被動測距法,得到攝像機標定的參數和立體匹配的對應特征點后,該測距算法較容易實現。經過實驗驗證,該算法在一定測量范圍內達到精度要求。
雙目立體視覺;攝像機標定;立體匹配;測距
基于計算機視覺理論的視覺測距技術是今后發展的一個重要方向,它在機器人壁障系統、汽車導航防撞系統等領域有著廣泛的應用前景。目前的測距方法主要有主動測距和被動測距兩種方法。論文采用的是被動測距法。被動測距法是在自然光照條件下,根據被測物體本身發出的信號(如光信號)來測量距離,主要包括立體視覺測距法、單目測距法、測角被動測距法等。立體視覺測距法是仿照人類利用雙目感知距離信息的一種測距方法,直接模擬人的雙眼處理景物,簡便可靠,但該方法的難點是選擇合理的匹配特征和匹配準則。
雙目立體視覺系統采用兩臺攝像機同時從兩個不同視點獲取同一景物的多幅圖像,即立體圖像對,通過測量景物在立體圖像對中的視差,再利用雙目視覺成像原理就可以計算出目標到攝像機的距離。立體匹配采用OpenCV庫中的塊匹配立體算法,在得到攝像機參數和匹配點后再利用最小二乘法即可算出三維信息。
首先介紹雙目視覺所涉及到三個坐標系:世界坐標系、攝像機坐標系和圖像坐標系。世界坐標系中的點坐標記為攝像機坐標系用表示。圖像坐標為攝像機所拍攝到的圖像的二維坐標,一般有兩種表示方法:是以像素為單位的圖像坐標,是以毫米為單位的圖像坐標。建立以毫米為單位的圖像坐標是因為坐標只表示了像素在數字圖像中的行數和列數,并沒有表示出該像素在數字圖像中的物理位置。
圖1為平行雙目視覺模型,即參數相同的兩個攝像機平行放置,兩光軸互相平行且都平行于z 軸,x 軸共線,兩攝像機光心的距離為B(即基線距)。圖中O1、O2為左右兩攝像機的焦點,I1 、I2為左右攝像機的像平面,P1 、P2 分別是空間點P(X,Y,Z)在左右像平面上的成像點,f是攝像機的焦距。若視差d 定義為│P 1- P2│,則點P到立體視覺系統的距離為:


圖1 平行雙目視覺模型
攝像機標定是為了建立三維世界坐標與二維圖像坐標之間的一種對應關系。系統采用兩個攝像機進行圖像采集,設定好兩個攝像機之間的距離(即基線距),用攝像機同時采集放在攝像機前的標定物。攝像機標定采用的是張正友的標定方法,棋盤格大小為 30mm 30mm,角點數為 11 7。標定板的規格如圖2所示。

圖2 平面標定板規格
張正友的標定方法需要攝像機從不同角度拍攝標定板的多幅圖像。由于兩個攝像機是向前平行放置的,且基線距固定,所以只需擺放標定板的位置變化即可。攝像機為針孔成像模型,則空間點與圖像點之間的映射關系為:

為方便計算,使標定板所在平面的Z坐標均為0,即Zw=0的平面,則上式可變為:

其中,A為攝像機的內參矩陣,(R, t)為攝像機外參矩陣,s為尺度因子。令則上式可寫為:

立體匹配是通過尋找同一空間景物在不同視點下投影圖像中像素間的一一對應關系。
立體匹配是匹配兩個不同的攝像機拍攝得到圖像的三維點。立體匹配采用的是 OpenCV提供的塊匹配立體算法cvFindStereoCorrespondenceBM,該算法使用了一個叫“絕對誤差累計”的小窗口(SAD)來查找立體校正后左右兩幅圖像之間的匹配點。這個算法只查找兩幅圖像之間的強匹配點(即強紋理)。
塊匹配立體算法有以下三個步驟:
(1)預過濾,使圖像亮度歸一化并加強圖像紋理。
(2)沿著水平極線用SAD窗口進行匹配搜索。
(3)再過濾,去除壞的匹配點。
匹配過程通過在整幅圖像滑動 SAD窗口來完成。對左圖像上的每個特征而言,搜索右圖像中的對應行以找到最佳匹配。校正之后,每一行就是一條極線,因此右圖上的匹配位置就一定會在左圖像的相同行上(即具有相同的y坐標)。如果特征有足夠多的可檢測的紋理,并位于右攝像機的視圖內,就可以找出對應的匹配位置。
視差圖是經過左右圖像的對應點匹配后得到的,從視差圖可以看出匹配的效果。若圖像中的匹配點比較稠密(即匹配點多),則得到的視差圖和原圖相似度就大;若圖像中的匹配點比較稀疏,則得到的視差圖和原圖相似度就小。論文采用的匹配方法得到的視差圖如圖3所示,圖4為原圖。

圖3 視差圖

圖4 原圖
在已知攝像機的內外參數的情況下,計算得到透視投影矩陣,根據圖像坐標系與世界坐標系的關系,則可以求出距離信息。在雙目視覺中,攝像機同時拍攝到同一個物體不同角度的兩張圖像,由同一點在兩幅圖像中位置信息可計算出它在世界坐標中的三維坐標。

根據(4)式和(5)式,消去比例系數k1和k2,可得到如下四個方程組:

論文采用一個攝像機進行實驗,按照圖一的方法,現在左位置點拍攝一幅圖像,此時標定板位置保持不變,然后讓攝像機只在X軸方向移動基線的距離,在Y和Z軸方向都沒有移動,再在右位置點拍攝一幅圖像,在左右拍攝點都拍攝圖像后,再換標定板的擺放方式,繼續在左右拍攝點拍攝得到左右圖像,依此類推。實驗采用左右各 9幅圖像來標定,圖像大小為2304*1728,得到的標定結果如下:

而實際設置兩攝像機之間的距離為200mm,可見標定得到的 T的 X方向上的坐標為 199.4809mm,與實際設置的距離200mm很接近,旋轉矩陣R基本接近單位陣,說明兩攝像機之間基本沒有旋轉,符合論文所要求的雙目視覺模型。
標定好之后,再進行立體標定,然后進行立體匹配,立體匹配后取某些對應的匹配點,采用前文介紹的測距算法,得到如下實驗數據:

表1 測距結果
本文主要研究基于Opencv的雙目立體視覺的距離測量,它在車載攝像機、安全車距、機器人壁障等場景中得到應用廣泛,是目前及將來研究的熱點之一。由實驗數據可知,在攝像機標定和立體匹配后,根據OpenCV的測距算法,在2米的距離內,誤差都是小于1.5%,可見該算法還是能達到一定的精度。由于標定誤差、人為誤差及其他因素的影響,如立體匹配時只查找兩幅圖像之間的強匹配點(即強紋理),這些因素的影響導致了在距離攝像機越遠的地方測量得到的距離信息精度越差。
[1]趙勛杰,高稚允.光電被動測距技術[J].光學技術,2003,29(6):652-656.
[2]Okutomi M,Kanade T. A multiple-baseline stereo [J]. IEEE transactions on Pattern Anal & Mch Intell, 1993,15(4):353-363.
[3]馬林.基于雙目視覺的圖像三維重建[D].山東:山東大學,2008.
[4]陳勝勇,劉盛.基于 OpenCV的計算機視覺技術實現[M].北京:科學出版社,2008.
[5]Zhengyou Zhang. A Flexible New Technique for Camera Calibration[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on.2000,22(11):1330-1334.
TN911.73
A
1008-1151(2011)04-0052-02
2011-01-09
羅丹(1985-),女(壯族),廣西河池人,桂林電子科技大學信息與通信學院碩士研究生,研究方向為圖像信號處理;廖志賢(1986-),男(壯族),廣西百色人,廣西師范大學電子工程學院碩士研究生,研究方向為信號處理與自動控制。