華舒悅 楊龍
(1. 華南理工大學(xué) 軟件學(xué)院,廣州 510006;2. 華南理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣州 510006)
立體視覺是機(jī)器人技術(shù)研究中最為活躍的一個(gè)分支,也是機(jī)器人智能化的重要標(biāo)志。雙目立體視覺的基本原理是模仿人類的立體視覺,從兩個(gè)視點(diǎn)觀察同一景物,獲取不同視角下的感知圖像,從而得到像素間的位置偏差圖像即視差圖,再結(jié)合三角測(cè)量原理即可得到景物的三維信息[1]。為獲得景物的三維信息,首先需要對(duì)兩個(gè)攝像機(jī)進(jìn)行立體標(biāo)定得到兩個(gè)攝像機(jī)的內(nèi)外參數(shù)和畸變參數(shù)。得到此參數(shù)后即可對(duì)圖像進(jìn)行立體校正(stereo rectify),經(jīng)過立體校正的圖像在像素層面上是行對(duì)齊的,這樣處理可以為后面的立體匹配大大減少計(jì)算量,從二維的搜索縮小到一維的搜索[2]。立體匹配過后即可得到視差圖而得到三維信息??梢姅z像機(jī)標(biāo)定是整個(gè)雙目立體視覺的基礎(chǔ)。
攝像機(jī)的模型是經(jīng)典的針孔模型[3]。在此模型中,想象著光線是從場(chǎng)景或很遠(yuǎn)的物體發(fā)射過來的,但僅僅只是一條光線。如圖1 所示,f 是攝像機(jī)焦距,Z 是攝像機(jī)到物體的距離,X 是物體的長(zhǎng)度,x 是圖像平面上物體圖像。光軸與圖像平面的交點(diǎn)被稱為主點(diǎn)。其數(shù)值可以通過相似三角形-x/f =X/Z 得到,或
通過數(shù)學(xué)抽象將針孔攝像機(jī)模型整理為一種等價(jià)形式,使其形式更為簡(jiǎn)單。在圖2 中,交換針孔和圖像平面,這樣就形成了更加容易理解的三角形相似關(guān)系x/f=X/Z。負(fù)號(hào)去掉了,因?yàn)槲矬w不再是倒立的。
圖1 針孔模型
圖2 針孔模型的數(shù)學(xué)等價(jià)形式
實(shí)際中主點(diǎn)和成像儀并不重合,為此我們引入兩個(gè)心的參數(shù)cx和cy。對(duì)可能的偏移建模。這樣,物理世界中的點(diǎn)Q(X,Y,Z)以某些偏移方式投影到成像儀平面上點(diǎn)(xscreen,yscreen),如下所示:
在此引入了兩個(gè)焦距,主要是由于單個(gè)像素點(diǎn)在成像儀上是矩形而不是正方形。
那么將物理世界中的點(diǎn)投影到攝像機(jī)上,可以用下式表示:
上面的M 矩陣即為攝像機(jī)的內(nèi)參數(shù)矩陣。
采用理想的針孔,有了一個(gè)最原始的視覺模型。但是,由于只有少量的光線通過針孔,這導(dǎo)致因曝光不足使得圖像生成很慢。對(duì)于實(shí)際的攝像機(jī)而已,必須利用大面積且彎曲的透鏡,讓足夠多的光線能夠收斂聚焦在投影平面上。透鏡的引入使得我們可以很快的曝光并得到圖像,但是由于實(shí)際制作工藝透鏡都會(huì)有畸變。
圖3 徑向畸變
圖4 切向畸變
透鏡的畸變主要有徑向畸變和切向畸變。分別如圖3 和圖4 所示。徑向畸變?cè)诔上駜x的中心的畸變?yōu)?,隨著向邊緣移動(dòng),畸變變得越來越大,這可以用r=0 位置周圍的泰勒級(jí)數(shù)展開的前幾項(xiàng)來定量描述。對(duì)于成像儀上的畸變點(diǎn)(x,y),可以將其校正為(xcorrect,ycorrect),其中:
對(duì)于徑向畸變可以用額外的兩個(gè)參數(shù)p1和p2來描述,如下:
從上面可以看出,對(duì)于一個(gè)攝像機(jī)有4 個(gè)內(nèi)參數(shù)和5 個(gè)畸變參數(shù),對(duì)攝像機(jī)標(biāo)定就是求解這9 個(gè)參數(shù),以此來建立零失真和零畸變攝像機(jī)模型。
圖5 立體視覺模型
假設(shè)有一套無畸變、對(duì)準(zhǔn)、已測(cè)量好的完美標(biāo)準(zhǔn)試驗(yàn)臺(tái),如圖5 所示,兩臺(tái)攝像機(jī)的像平面精確位于同一平面上,光軸嚴(yán)格平行(光軸是從投影中心O 朝像主點(diǎn)c 方向引出的一條射線,也稱為主光線),距離一定,焦距相同fl=fr。物理世界中的點(diǎn)P 在左右圖像上的成像點(diǎn)為pl和pr,相應(yīng)的橫坐標(biāo)分別為xl和xr。視差即定義為d=xl-xr。利用相似三角形可以很容易的推導(dǎo)出Z。
在上式里,T 為左右攝像機(jī)的成像儀中心的距離,叫做基線長(zhǎng)。分母為視差??梢钥闯錾疃萙 和視差d是成反比。圖6 是立體視覺在OpenCV 中使用到的二維和三維坐標(biāo)系統(tǒng)。左右成像儀的像素原點(diǎn)都在圖像的左上角,像素坐標(biāo)分別記為(xl,yl)和(xr,yr)。投影中心為Ol和Or,主光線與圖像平面相交于(cx,cy)。經(jīng)過數(shù)學(xué)校正,攝像機(jī)就是行對(duì)準(zhǔn)(也即像素層面的對(duì)準(zhǔn)),且相距T,相同的焦距為f[4]。
通過上面對(duì)攝像機(jī)模型和立體視覺模型的討論,可以得出如下公式:
其中Q 為重投影矩陣,其定義如下:
Q 中的參數(shù),通過對(duì)攝像頭進(jìn)行單個(gè)標(biāo)定和立體標(biāo)定就能得到。因此,給定一個(gè)二維齊次點(diǎn)和其關(guān)聯(lián)的視差d,可以將此點(diǎn)投影到三維中:
三維坐標(biāo)就是(X/W,Y/W,Z/W)。
攝像機(jī)標(biāo)定分為單個(gè)攝像機(jī)標(biāo)定和雙目立體標(biāo)定,單個(gè)攝像機(jī)標(biāo)定就是為了求解第1 節(jié)末尾提到的9 個(gè)參數(shù)。而立體標(biāo)定是建立場(chǎng)景中某點(diǎn)的三維幾何位置與其在攝像機(jī)圖像中對(duì)應(yīng)像素點(diǎn)位置之間的關(guān)系,包括右攝像頭相對(duì)于坐攝像頭的坐標(biāo)和旋轉(zhuǎn)矩陣[5]。其途徑是依據(jù)攝像機(jī)的幾何模型,由已知特征點(diǎn)的世界坐標(biāo)和圖像坐標(biāo)來計(jì)算攝像機(jī)的模型參數(shù)。標(biāo)定板和攝像機(jī)分別如圖6 和圖7 所示。
圖6 標(biāo)定板
圖7 雙目攝像機(jī)
本文中攝像機(jī)標(biāo)定采用的是MATLAB 的標(biāo)定工具箱,這個(gè)工具箱界面友好,最重要的是它的標(biāo)定結(jié)果比OpenCV 穩(wěn)定和精準(zhǔn)。在標(biāo)定的過程中,對(duì)兩個(gè)攝像機(jī)采集的每一幅標(biāo)定板圖像手動(dòng)采集4 個(gè)最邊上的角點(diǎn)。MATLAB 會(huì)找出整幅圖像中的所有角點(diǎn),并用紅色的十字形標(biāo)出來[6]。
對(duì)兩個(gè)攝像機(jī)分別標(biāo)定完畢后,會(huì)生成一個(gè)Calib_ results. mat 的矩陣,將其改名后保存著兩個(gè)矩陣在同一個(gè)目錄下面,并運(yùn)行立體標(biāo)定,即可完成所有的標(biāo)定過程。最終的標(biāo)定結(jié)果如圖所示。
圖8 所有標(biāo)定圖片
圖9 提取角點(diǎn)
圖10 標(biāo)定結(jié)果
從上圖的標(biāo)定結(jié)果中,其實(shí)就已經(jīng)求出了左右攝像機(jī)的內(nèi)參數(shù)矩陣,已經(jīng)立體標(biāo)定生成的旋轉(zhuǎn)矩陣和平移矩陣,分別如下所示。
在上面,M1和Mr分別為左右攝像機(jī)的內(nèi)參數(shù)矩陣,D1和D2分別為左右攝像機(jī)的畸變參數(shù),OM為旋轉(zhuǎn)矩陣,經(jīng)過Rodrigues 變換后可以變成3 ×3 的旋轉(zhuǎn)矩陣,T 為平移矩陣。至此,攝像機(jī)的各種參數(shù)已經(jīng)獲得。它們是后續(xù)的三維重建等高層應(yīng)用必不可少的參數(shù)。
分析了攝像機(jī)的模型和立體視覺模型,得出要實(shí)現(xiàn)三維重建必須知道攝像機(jī)的各種參數(shù)的結(jié)論。在MATLAB 工具箱基礎(chǔ)上對(duì)雙攝像機(jī)進(jìn)行標(biāo)定,得出了各種攝像機(jī)參數(shù)。實(shí)驗(yàn)結(jié)果表明此方法可靠,有效。
[1]Gary Bradski.學(xué)習(xí)OpenCV[M].于仕琪,譯.北京:清華大學(xué)出版社,2009.
[2]岡薩雷斯.數(shù)字圖像處理[M]. MATLAB 版.阮秋琦,譯.北京:電子工業(yè)出版社,2005.
[3]張廣軍.機(jī)器視覺[M].北京:科學(xué)出版社,2005.
[4]黃侃.計(jì)算機(jī)立體視覺中的攝像機(jī)標(biāo)定算法的研究與應(yīng)用[D].沈陽:沈陽工業(yè)大學(xué),2007
[5]康晶.基于立體視覺攝像機(jī)標(biāo)定方法的三維重建技術(shù)研究[D].長(zhǎng)沙:湖南大學(xué),21-39.
[6]尹力.基于OpenCV 的計(jì)算機(jī)視覺三維重建方法研究[D].合肥:安徽大學(xué),19-32.