摘要:針對傳統三維建模的局限性,討論了一種基于圖像建模的技術,提出了利用普通相機和標定物對物體進行三維建模的方法,該方法利用一個在左右圖像都存在的物體,對相機進行標定[1]。然后利用左右相機的相機矩陣,反算空間中的對應點和需要求取的關鍵點。最后利用這些點計算出來的空間位置[2],對物體進行重建,并用OpenGL進行漫游顯示。實驗表明,該算法計算準確,魯棒性很高,能夠滿足于虛擬現實的需要。
關鍵詞:標定;標定物;三維重建;OpenGL
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2008)11-20356-03
1 引言
三維建模的需求越來越多,通過建模軟件如AutoCAD,3Dmax等建模有時難以滿足現實需要。本文討論了一種基于圖像的建模。基于圖像建模,有很多方法,文獻[3-5]提出基于基本矩陣的方法進行分析。通過用普通數碼相機拍照,本文使用基于標定的方法,首先都左右相機進行標定,然后依據標定的相機,基于雙目計算空間點的位置,最后在OpenGL[6,7,8]中進行顯示,試驗表明本方法是切實有效的。
2 計算相機矩陣
若想由圖像像素位置計算出空間點的3D世界坐標,必須要知道攝像機矩陣。求攝像機矩陣的過程就是攝像機的標定過程,也就是建立圖像像素點位置與空間點位置之間的關系。這里,僅對線性模型攝像機標定做介紹。
由一對對應點能得到兩個線性方程,即由一個空間點位置和它相應的圖像像素位置可以建立兩個方程。而攝像機矩陣中包含有11個未知數,為了求出這11個未知數,必須至少有11個方程才能解出。因此,就需要至少6個已知的空間點。這些點叫做標定點,它們的特點是:其相對于世界坐標系的位置在標定時應精確測定;隨后用攝像機獲取這些點的圖像,得到標定點在圖像上的像素位置;最后通過解方程組,計算出攝像機矩陣,也就完成了攝像機的標定。在有些研究中可能需要知道攝像機的內外部參數,那么就可以通過分析攝像機矩陣,進一步得到這些內外部參數。在本文的實驗中,目的是計算空間點的世界坐標,只需要攝像機矩陣就足夠了,因此這里對于進一步分解攝像機矩陣不在做介紹。
設共有n個標定點,每個標定點的世界坐標為(xi,yi,zi),圖像坐標為(ui,vi),i∈[1,n]。由于一個標定點就對應兩個方程,因此最終有2n個線性方程,所得的方程組用矩陣形式表示為:
如果將上式左邊的2n×11矩陣設為K,c為未知的11維向量,U為上式右邊的2n維向量,K和U都是已知向量,那么上式就可以簡化成:
Kc=U
因為在上面已經提到本文實驗應用的是線性模型,所以也是用線性最小二乘法來求解。在標定過程中,標定點的個數越多,使得方程的個數大大超過未知數的個數,從而用最小二乘法求解以降低誤差造成的影響。當2n>11時,用最小二乘法求得的解為:
注:實際中可以在場景中放置一個盒子等物體,利用盒子邊界定點進行標定。如:利用圖像中左邊的煙盒對左右相機進行標定,就可以對場景中的其他物體(如右邊的鼠標盒子)進行計算邊界點的位置。
通過上面的步驟,已經對攝像機進行了標定,并得出了世界坐標系和實際長度之間的縮放比例,
3 計算空間點位置
已知了兩臺攝像機的攝像機矩陣,那么就可以由此光斑的像素點計算出對應的空間點3D世界坐標。設左右攝像機圖像上的像點坐標分別為[r1,c1]和[r2,c2],待求光斑的空間點3D世界坐標為[x,y,z]。由可得:
由上面兩個公式,去掉齊次坐標s和t,就能得到下面的4個線性方程,其中包含有3個未知數x、y和z,也就是所要求的空間點3D世界坐標。顯然這個方程組是可以解出的。從光學的角度來說,就是兩條投影線空間相交,從而找到相交點的三維空間坐標。
通過求解上面的方程求解出世界坐標點[x,y,z]位置。
4 精度比較與分析
這種方法精度較高,適用面比較廣泛。拿盒子程序為例:
左邊是我們在標定相機過程中給出的真實位置點,右邊是利用上面的方法反算出標定物的位置點。
我們可以看出誤差比較大的點如劃線部分標出,誤差為0.568938/45≈1.2%,其他點的誤差基本上都在1.0%以下。由此可以看出此種方法精度還是相當高的。
5 OpenGL中的顯示
我們對首先利用一個箱子標定左右相機,然后跟據標定的相機,計算煙盒以及旁邊鼠標盒的坐標,最后進行的顯示,試驗截圖如下:
6 結論
隨著三維技術的發展,三維模型在各個領域中特別是虛擬現實[9,10]的應用越來越廣泛。通過實驗和精度分析,我們可以看出本文的方法是切實有效的,完全可以用于虛擬現實等的建模要求。
參考文獻:
[1] (美)Linda G. Shapiro,George C. Stockman.計算機視覺[M]. 機械工業出版社,2005.
[2] 馬頌德,張正友.計算機視覺-計算理論與算法基礎 [M].科學出版社,2005.
[3] B.Boufama,R.Mohr. Epipole and fundamental matrix estimation using virtual parallax [C]. ICCV,1995: 1030-1036.
[4] Quan-tuan luong,Olivier D. Faugeras. The Fundamental Matrix: Theory, Algorithms, and Stability Analysis [J]. International Joumal of Computer Vision, 1996,17(1): 43-75.
[5] Richard I. Hartley. Estimation of Relative Camera Positions for Uncalibrated Cameras [A]. In: Second European Conference on Computer Vision [C]. Sandini G ed. , Berlin :Springer-Verlag, 1992:579-587.
[6] (美) K. 霍金, D. 阿斯特. OpenGL游戲程序設計[M]. 科學出版社,2006.
[7] OpenGL體系結構審核委員會. OpenGL編程指南[M].第四版.人民郵電出版社,2005.
[8] (美)Richard S.Wright,Jr.Benjamin Lipchak.OpenGL寶典[M].第三版.人民郵電出版社,2005.
[9] 卞鋒,江漫清,桑永英. 虛擬現實及其應用進展[J].計算機仿真, 2007,06:1-4.
[10] 霍妍妍,李愛軍, 劉瑜. 虛擬現實技術發展綜述[C].第一屆中國圖學大會,2007:243-247.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文