藍福明 楊宜民
(廣東工業(yè)大學(xué)自動化學(xué)院)
雙目立體視覺[1]作為計算機視覺領(lǐng)域中的一個重要分支,近年來取得了較快的發(fā)展。雙目立體視覺的主要任務(wù)之一就是從兩個攝像機分別捕獲的兩幅二維圖像信息出發(fā),計算出三維空間中物體的相關(guān)幾何信息,并由此三維重建和識別物體。雙目立體視覺涉及的知識比較多,其中包括圖像采集和預(yù)處理、攝像機標定、立體匹配和三維重建等。而攝像機標定是雙目立體視覺中最關(guān)鍵、最復(fù)雜的部分。攝像機是雙目立體視覺系統(tǒng)獲取圖像信息的主要工具。通過實驗計算獲取攝像機內(nèi)部和外部參數(shù)的過程稱為攝像機標定[2]。其中攝像機的幾何和光學(xué)參數(shù),即為攝像機內(nèi)部參數(shù);攝像機相對于世界坐標系的方位,即為攝像機外部參數(shù)。
在現(xiàn)有的攝像機標定算法中,根據(jù)標定過程對標定物的要求不同,可將攝像機的標定分為傳統(tǒng)標定方法[3]、自標定方法[4]和基于主動視覺的標定方法[5]。傳統(tǒng)標定方法標定精度高,但對實驗環(huán)境要求較高,不易實現(xiàn);自標定法靈活性強,對實驗環(huán)境要求低,容易實現(xiàn),但其算法魯棒性差,精度水平無法與傳統(tǒng)的標定方法相比;基于主動視覺的標定法其算法簡單,魯棒性高,但是系統(tǒng)的成本高且實驗條件要求高,不適合運動參數(shù)未知或無法控制的場合。
在雙目立體視覺系統(tǒng)中,左右兩個攝像機均符合針孔成像模型[6]。雙目視覺的模型如圖1所示,左右攝像機的圖像點lp、rp與點P對應(yīng)。
圖1 雙目視覺模型
從三維空間物體表面上點的幾何位置到該點在圖像上所對應(yīng)點的位置之間的轉(zhuǎn)換關(guān)系如圖2所示。它是由攝像機成像幾何模型決定的,通過四個坐標系之間的相互轉(zhuǎn)化來實現(xiàn),即
其中, dx和 dy表示像素點的大??; (u0, v0)為點 O1在圖像像素坐標系中的位置(即基準點);f為攝像機焦距,和v0只與攝像機的內(nèi)部結(jié)構(gòu)有關(guān)(即為內(nèi)部參數(shù));R為3×3階的正交單位矩陣,t為三維平移向量,R3×3和 t3×1完全由攝像機坐標系相對于世界坐標系的方位決定(即為外部參數(shù))。其中可記內(nèi)部參數(shù)矩陣A為:
圖2 坐標系間的相互轉(zhuǎn)化流程
根據(jù)文獻[7]中有關(guān)對式(3)的化簡求解,可得到一個與 sl和 sr無關(guān)的和的關(guān)系式,這就是極線約束。故由標定點在左右攝像機坐標系的坐標和,可得到雙目立體視覺攝像機外部參數(shù)的旋轉(zhuǎn)矩陣和平移向量
采用本文的方法標定雙目視覺攝像機分兩步:
1) 結(jié)合 OpenCV[8]編程實現(xiàn)對攝像機的內(nèi)部參數(shù)在線標定;
2) 利用本質(zhì)矩陣反解得到雙目立體視覺系統(tǒng)攝像機的外部參數(shù)。
用C語言并結(jié)合OpenCV函數(shù)編程分別對左右兩個攝像機的內(nèi)部參數(shù)進行在線標定,以棋盤格作為標定模板,棋盤每小格的大小為20 mm×20 mm,格數(shù)為8×8格,角點(標定點)數(shù)為49個,見圖3。
圖3 標定模板
攝像機內(nèi)部參數(shù)的標定過程可分為如下步驟:
1) 讀取一組用于標定實驗的圖像數(shù)據(jù)。使用采集函數(shù)QueryFrame()獲取視頻中的一幀圖片,反復(fù)調(diào)用此函數(shù),共采取20幅光軸互不平行的圖像;
2) 找到標定點并初步得到標定點坐標值。將步驟 1)中采集到的每幅圖片數(shù)據(jù)分別代入到cvFindChessboardCorner()函數(shù),找到棋盤格角點的位置,即為標定點;
3) 進一步精確得到標定點的亞像素級坐標值并保存。對步驟 2)中找到的角點坐標值再代入cvFindCornerSubPix()函數(shù),進一步精確得到角點的亞像素級坐標值并保存;
4) 得到兩個攝像機內(nèi)部參數(shù)矩陣。將步驟 3)中得到的亞像素角點坐標值代入cvCalibrateCamera2()函數(shù),對兩個攝像頭分別進行內(nèi)部參數(shù)標定,可得到左右兩個攝像機的內(nèi)部參數(shù)矩陣分別為Al和Ar。
文獻[9]介紹了基礎(chǔ)矩陣F和本質(zhì)矩陣E的基本推導(dǎo)。引入基礎(chǔ)矩陣F對式(3)進行簡化得:
當(dāng)攝像機的內(nèi)部參數(shù) Ar和 Al已知時,由式(4)可得=0,其中E=RS,即為本質(zhì)矩陣,E只與雙目立體視覺攝像機的外部參數(shù)有關(guān)。
由上述可知,兩臺攝像機的相對位置關(guān)系與本質(zhì)矩陣幾乎是等價的。也就是說,給出了雙目視覺系統(tǒng)攝像機的外部參數(shù)R和t就等于給出了本質(zhì)矩陣E;反之,若給出了本質(zhì)矩陣E,則攝像機外部參數(shù)R和t也就確定了。由本質(zhì)矩陣E的性質(zhì)可知,它具有5個自由度且秩為2,根據(jù)矩陣分析知識可知其可以分解成一個滿秩的旋轉(zhuǎn)矩陣 R和一個平移反對稱矩陣T(由t中的元素構(gòu)成),且分解為唯一的,最多相差一個常數(shù)比例因子λ。其中向量 t =(tx, ty, tz)T,矩陣T定義為
故可將攝像機外部參數(shù)的求解步驟分為如下:
1) 特解E0的求解
其中 a11,a21,…,a33為本質(zhì)矩陣E的9個要求解的未知數(shù)元素。式(5)為齊次線性方程組,故需要9個不同的匹配點的坐標即可求解出9個未知數(shù)元素。依據(jù)線性代數(shù)理論可知,|E| =0,則方程組有無窮解,故若找到該方程組的一個特解E0,那么其通解的形式是,其中λ為一待定常數(shù)。令 a33= 1 ,代入式(5)化簡可得:
則方程組變?yōu)榉驱R次的,故存在唯一的解,可用最小二乘法求得方程組的解。
將標定模板上的N(8≤N≤49)個標定點對應(yīng)的左右圖像像素坐標點(即由2.1的步驟3)中角點的亞像素級坐標值)的齊次坐標(i=1,…,N)代入式(6)得: AX= -b,其中A是一個N×8的系數(shù)矩陣,是一個8×1的解向量,b是元素全為1的N×1的向量,則方程組的解為,即可求特解E0。
2) 求解常數(shù)λ
λ值為世界坐標系中兩標定點之間的距離與攝像機坐標系下對應(yīng)兩點之間的距離的比值。其中世界坐標系中兩標定點之間的距離,可由標定模板中兩角點之間的距離求得,而攝像機坐標系下對應(yīng)兩點之間的距離,可由2.1的步驟3)得到的亞像素級坐標值角點中對應(yīng)兩點之間的距離求得。
3) 攝像機外部參數(shù)R和t的求解
實驗采用Logitech C160型攝像頭2個,圖像分辨率為640×480像素。根據(jù)上述標定原理和步驟,在Windows XP平臺下利用Visual Studio 2008開發(fā)一個基于OpenCV 2.2的攝像頭內(nèi)部參數(shù)標定和外部參數(shù)矩陣求解標定程序。實驗時將攝像頭固定好,保證在標定過程中兩攝像頭之間無相對位移,測得兩攝像頭之間的基線b=18.3 cm。
按照2.1中的步驟標定出兩個攝像頭的內(nèi)部參數(shù)矩陣分別為:
按照2.2中的步驟,通過編程實現(xiàn)對矩陣的運算求解得到雙目視覺中攝像頭的外部參數(shù)為:
由以上的數(shù)據(jù)可以看出,左右攝像頭的焦距基本相同,且每個攝像頭的 fx和 fy也相近;攝像頭拍攝的圖像分辨率為640×480,同時內(nèi)部參數(shù)矩陣所反映的光心點坐標也基本在點(320,240)附近;另外在實驗時兩攝像頭要盡量平行對齊,從攝像頭外部參數(shù)的旋轉(zhuǎn)矩陣R可知該矩陣比較接近三階單位矩陣;這些都基本符合預(yù)期的標定結(jié)果。但為了更加合理準確地衡量標定誤差,還需要利用標定結(jié)果進行重投影誤差計算。假設(shè) (u1i, v1i)為角點檢測得到的亞像素級圖像坐標,( u2i, v2i)為實際三維坐標重投影計算得到的圖像坐標。利用式(7)計算重投影誤差(其中n為成功找到角點的總個數(shù)),通過計算得到的左攝像頭的重投影誤差為0.407486,右攝像頭的重投影誤差為0.397516,誤差級別均小于一個像素級。
利用OpenCV及矩陣求解運算開發(fā)的攝像機標定程序具有標定結(jié)果精確、運行效率高等特性,此外利用C語言編程的跨平臺移植性也較好。而在實際應(yīng)用場合,標定結(jié)果的精確與否將直接影響系統(tǒng)后續(xù)工作的相關(guān)測量精度,故還應(yīng)結(jié)合實際要求,在標定精度和算法魯棒性方面做進一步的研究,未來的重點應(yīng)放在有關(guān)標定方法各個步驟的優(yōu)化方面。
[1] 黨樂.基于雙目立體視覺的三維重建方法研究[D].西安:長安大學(xué),2009.
[2] 邱茂林,馬頌德,李毅.計算機視覺中攝像機定標綜述[J].自動化學(xué)報,2000,26(1):43-55.
[3] 于泓.攝像機標定算法研究[D].濟南:山東大學(xué),2006.
[4] 孟曉橋,胡占義.攝像機自標定方法的研究與進展[J].自動化學(xué)報,2003(1):110-122.
[5] 胡占義,吳福朝.基于主動視覺攝像機標定方法[J],計算機學(xué)報,2002,25(11):1149-1156.
[6] 王興昌.基于雙目立體視覺的三維重建技術(shù)研究[D].合肥:安徽大學(xué),2012.
[7] 張廣軍.機器視覺[M].北京:科學(xué)出版社,2005:110-112.
[8] Bradski G , Kaehler A .學(xué)習(xí)OpenCV(中文版)[M].于仕琪,劉瑞禎,譯.北京:清華大學(xué)出版社,2009.
[9] Sonka M, Hlavac V, Boyle R. Image Processing, Analysis and Machine Vision (2nd Edition) [M]. New York: Thomson Press,2002:460-469.