魏建平,張景偉,趙紅強,張 磊
(空軍工程大學信息與導航學院,陜西 西安 710077)
責任編輯:任健男
增強現實是一種利用計算機產生的虛擬信息對使用者所看到的真實世界景象進行增強或擴張的技術,實際上就是將計算機生成的虛擬物體或場景疊加到真實場景中,從而實現對現實的“增強”[1]。筆者研發的魔法書增強現實系統就是一個典型案例,使用者用攝像機拍攝一張印有二維圖像的紙張,在成像設備上就能出現與真實圖像相匹配的三維虛擬模型,而且模型能夠跟隨圖像在屏幕中的運動而運動。增強現實與虛擬現實不同,其最主要區別在于增強現實中要實現虛擬場景與真實場景的準確匹配,匹配的精度和實時性直接影響著一個增強現實系統的優劣。因此,這種匹配的技術,即三維注冊技術,是增強現實的關鍵技術之一。
當前三維注冊技術主要有基于跟蹤器的注冊技術、基于認知的注冊技術、基于計算機視覺的注冊技術[2],其中基于計算機視覺的注冊技術憑借具有成本低廉、實現方便的特點逐漸受到重視成為增強現實應用系統中一種非常具有發展潛力的跟蹤注冊技術,其注冊精度高,可達到像素級。筆者從基于計算機視覺的注冊技術出發,將增強現實系統框架設計如下,如圖1所示。

圖1 注冊算法應用實例
筆者在開發魔法書增強現實系統的過程中遇到了一個矛盾,即張正友的標定算法[3-4]可以較精確地獲得攝像機內外參數,但需要獲得多幅圖像;魔法書增強現實系統為了滿足與使用者之間良好的互動性與實時性,需要一幅圖像完成標定??紤]到魔法書增強現實系統所使用的攝像機具有照射范圍小、拍攝視角小的特點,攝像機移動對內部參數幾乎不造成影響,因此筆者針對其特殊應用環境,在傳統的線性模型攝像機標定方法的基礎上,提出了一種基于特征點識別的線性三維注冊算法,將張正友經典算法與改進型線性算法綜合使用,解決了上述矛盾。本算法只需要在第一次使用系統時拍攝2幅以上圖像初始化攝像機內部參數,之后實時捕捉1幅圖像就能完成注冊。
本算法運算過程為線性,運算量小,而且只需要檢測1幅圖像中的4個特征點就能完成標定。與孟曉橋、胡占義的橢圓模板攝像機標定方法[5]相比,不需要使用者所用模板中帶有橢圓等規范化圖案,大大降低了對標定模板的要求,一定意義上實現了對任意模板的三維注冊。
用針孔模型描述三維空間點到成像平面的映射關系,如圖2所示。

圖2 攝像機針孔模型
若記某點在圖像像素坐標系上的二維坐標為m=(u,v),其在世界坐標系上的三維坐標為 M=(Xw,Yw,Zw)。根據世界坐標、攝像機坐標、圖像坐標之間的轉換關系,可用齊次坐標表示空間點與圖像點之間的映射關系

式中:dx和dy為每個像素在圖像物理坐標系的兩個軸方向上的物理尺寸;(u0,v0)為圖像物理坐標系的原點在圖像像素坐標系上的坐標,f為攝像機焦距。將矩陣合并得到M1和M2。矩陣M1只與攝像機內部參數有關,故將其稱為內部參數矩陣。矩陣M2完全由攝像機相對于世界坐標系的方位決定,稱其為外部參數矩陣。求解出內外部參數即可完成標定任務。
將式(1)寫成

其中下角標i代表第i點位置信息,式(2)包含3個信息

將式(3)做消參處理,一項除以三項,二項除以三項分別消去Zci后,可得2個關于Mij的線性方程

若標定模板有n個特征點,并已知其空間坐標(Xw,Yw,Zw),則可得到2n個關于M矩陣元素的線性方程,用矩陣形式表示方程組

式中:m34為比例因子,并不影響計算結果,可令m34=1。這樣方程的未知數為11個,將其記為11維向量m,式(5)可以寫成

式中:K為式(5)左邊2n×11維矩陣;m為11維向量;U為右邊11維向量。可以看到方程組有11個未知數,但方程個數有12個或者更多的超定方程,利用最小二乘法可得到結果。當2n大于11時,上述方程的最小二乘解為

由此可見由空間6個以上的點與它們的圖像坐標可得到M矩陣的解,在筆者所開發的增強現實系統中,通過Direct3D可直接利用M矩陣的運算結果來控制虛擬物體的位置,實現三維注冊。實際應用中若增加特征點個數,使方程個數遠遠超過未知數個數,可增加算法穩定性與精確性,降低特征點被遮擋等原因而造成標定失敗的概率。
由上可見,傳統的線性模型攝像機標定方法至少需要6個特征點才能完成標定任務,而在實際應用中,特征點數目的增加勢必會對使用者的視覺效果造成影響。對筆者開發的魔法書增強現實系統而言,若能通過識別紙張的4個頂點,就能完成標定工作,而不需設置其他特征點,這將大大提高使用者的體驗感。由此思路出發,本文將傳統線性算法進行改進,與張正友的標定方法相結合,提出一種基于4個特征點識別的兩步攝像機標定算法。
為方便算法說明,這里將成像映射關系分步重新推導,世界坐標與攝像機坐標之間的關系為

將式(8)展開,物體世界坐標與攝像機坐標之間的關系可寫成

再根據攝像機成像原理,利用三角形相似的關系,得到圖像像素坐標與世界坐標之間的關系為

式中:f為攝像機的焦距(假設攝像機內部參數已知,即焦距已知),聯立兩式可知,每一特征點可以確定兩個獨立的約束方程

顯然,由6個特征點可產生12個方程,從而解算出變換矩陣的12個參數。但實際上,如果使用旋轉矩陣的規范化正交約束,只需要4個特征點就能解出變換矩陣的12個參數。
將特征點設置在同一平面內,4個特征點的世界坐標設定為 (Xwi,Ywi,0)(i=1,2,3,4),那么式(11)可以簡寫為

式中:t3是各參數的比例因子,令其為1,至此式(12)中的參數變為8個,4個特征點可得到8個方程,即可求解出下列8個參數,r31,r32,r11,r12,r21,r22以及t1,t2。
因為旋轉矩陣R是正交規范化矩陣,所以存在關系RTR=I,利用此特性可解出如下參數

這樣,得到了變換矩陣參數,完成了三維注冊任務。
注意到上述算法是在攝像機內部參數已知的假設下完成的,攝像機內部參數的測定方法較多[3,6-9],本文采用張正友的經典算法初始化內部參數,這里不再贅述。
綜上所述,將改進的三維注冊的方法總結如下:
1)設計1張具有4個可識別特征點的模板紙(筆者采用紙張的4個邊緣點);
2)從不同方位拍攝至少2幅圖像;
3)初始化攝像機內部參數,采用張正友標定算法計算攝像機內部參數;
4)已知內部參數利用本文算法得到外部參數,完成三維注冊任務。
本文在理論分析之后通過VC平臺對所提出的注冊方法進行了實驗驗證。實驗采用簡易型CCD攝像機,焦距為25 mm,圖像分辨率為640×480,視頻采集處理模塊采用DirectShow完成,特征點設定為紅色半橢圓形,特征點的識別采用中心點擬合的方法。分別采用六特征點與四特征點模板紙張進行傳統標定算法與改進后算法的仿真,圖3為六特征點模板,圖4為2個不同方位拍攝的四特征點模板。

圖3 六特征點標定模板

圖4 四特征點標定模板
采用傳統算法所得到攝像機內外部參數矩陣為

利用張正友標定算法所得攝像機內部參數如表1所示。

表1 攝像機內部參數
將攝像機調整至與使用傳統算法測量時相同的位置上,采用改進后線性標定方法所得旋轉和平移矩陣為


為方便與傳統標定算法進行比較,將改進后算法計算結果化解,m34作歸一化處理,得到內外部參數矩陣為

結果表明,改進算法在已知攝像機內部參數的情況下利用4個特征點完成了攝像機的標定過程,所得結果與傳統方式標定結果幾乎一致,標定方式簡單易行、結果準確可靠,可以應用于增強現實系統的三維注冊模塊中。
在筆者研發魔法書增強現實系統的過程中,提出的三維注冊方法只需要在第一次使用時利用張正友標定算法從不同方位拍攝兩幅以上圖像初始化內部參數,之后的使用中即可通過一幅圖像完成對攝像機外部參數的計算,從而得到攝像機方位角,完成三維注冊功能。該方法能夠實時地實現虛擬場景與真實場景的無縫匹配,對于增強現實系統的開發有較高的應用價值。
[1]馬松德,張正友.計算機視覺——計算理論與算法基礎[M].北京:科技出版社,1998.
[2]施琦,王涌天,陳靖.一種基于視覺的增強現實三維注冊算法[J].中國圖象圖形學報,2002,7(7):679-683.
[3]ZHANG Z Y.Flexible camera calibration by viewing a plane from unknown orientations[C]//Proc.7th International Conference on Computer Vision.Kerkyra,Greece:[s.n.],1999:666-673.
[4]ZHANG Z Y.Camera calibration with one-dimensional objects[J].IEEE Trans.Pattern Anal.Mach.Intel.,2004,26(7):892-899.
[5]孟曉橋,胡占義.一種新的基于圓環點的攝像機自標定方法[J].軟件學報,2002,13(5):957-965.
[6]朱淼良,姚遠,蔣云良.增強現實綜述[J].中國圖象圖形學報,2004,9(7):767-774.
[7]劉杰才,彭真明,雍楊.基于菱形模板的攝像機標定方法[J].指揮控制與仿真,2012(4):132-136.
[8]賈云得.機器視覺[M].北京:科學出版社,2000.
[9]吳福朝,李華,胡占義.基于主動視覺的攝像機自標定方法研究[J].自動化學報,2002,27(6):726-746.