施佳豪,王 慶,馮悠揚
(東南大學 儀器科學與工程學院,江蘇 南京 210096)
隨著計算機視覺的不斷發(fā)展,相機標定成為了一項十分重要的議題。相機標定在三維世界和相機成像平面之間建立了對應關系,以輔助處理視覺計算、三維重建、目標識別等計算機視覺問題。在某些應用領域,相機標定將直接影響視覺測量精度的高低。例如,在視覺即時定位與地圖構建(simultaneous localization and mapping,SLAM)[1~3]中,相機標定的精度直接決定了相機位姿和地圖點的估計的準確度,從而也會對后續(xù)的優(yōu)化迭代算法產生影響。因此選用適當?shù)南鄼C標定方法尤其重要。
常用的相機標定算法有很多[4~6],使用最為廣泛的是張氏標定方法[7]。該方法魯棒性較好,操作簡便,僅利用一塊平面棋盤標定板即可完成相機的完整標定。但方法中由于標定角點均位于同一平面,使得坐標維度信息缺失,進而限制了其的標定精度。
本文在張氏標定方法的基礎上,提出一種基于三維棋盤格的相機標定方法,并通過實驗對比證明此種方法能提升相機標定的穩(wěn)定性和準確性。
相機標定過程中常用的相機模型有針孔相機模型、全向相機模型、雙球相機模型等。張氏標定方法中采用的是針孔相機模型,該模型示意圖如圖1所示?,F(xiàn)實世界的空間點P,經過相機光心O投影后,落在物理成像平面上,成像為P′。針孔相機模型中涉及4個坐標系:世界坐標系、相機坐標系、圖像坐標系、像素坐標系[8]。假設點P在世界坐標系下的齊次坐標Pw為(xw,yw,zw,1),經過旋轉變換和平移變換過后可得點P在相機坐標系下的坐標,再根據光學投影關系可以獲取成像點在圖像坐標系中的坐標,最后經過采樣和量化得到對應的像素坐標系下的齊次坐標為(u,v,1)。完整針孔相機模型可以用式(1)進行表示
圖1 針孔相機模型
(1)
式中s為尺度因子;K為相機的內參矩陣,包含相機的固有屬性參數(shù)[9];T被稱為相機的外參矩陣,包含相機位姿變換的旋轉矩陣R和平移向量t。
張氏相機標定方法選用平面棋盤格作為相機標定板。在標定過程中,假定標定棋盤格所在的平面為世界坐標系中zw=0的平面,將棋盤格上的某一個角點設置為世界坐標系的原點,則理論上只要知道棋盤格每一個格子的尺寸就能得出所有棋盤內角點的世界坐標。同時棋盤格內角點的像素坐標可以通過圖像處理的方法得出,從而借助于平面單應性[10]、旋轉矩陣尺度特性、非線性優(yōu)化等理論求解出相機的內外參數(shù),并對其進行優(yōu)化。
在求解過程中,由于已經假定棋盤格上的所有點的zw=0,所以在使用平面棋盤格進行相機標定時,未使用zw這一維度,導致在求解標定參數(shù)時忽略了部分有用信息。因此,使用該方法進行相機標定時,雖然簡單易操作,但是對于一些高精度的視覺應用領域來說,其精度還有進一步提升的空間。因此,本文在該方法的基礎上,使用三維棋盤格進行標定,并驗證該方法得出的標定結果更符合針孔相機模型的投影規(guī)律。
為了求解相機的內參矩陣,首先將式(1)中的KT矩陣乘積用如下矩陣表示
(2)
將式(1)按行展開可得
(3)
根據分析,H矩陣中有12個未知數(shù),因此至少需要12條方程求解。一對世界坐標和像素坐標的匹配點可以構建式(3)中的兩條方程,所以至少需要6對匹配點可以求解出H矩陣。在實際求解過程中,為了排除測量噪聲對求解結果的影響,往往使用n對匹配點(n>6)來結算H。所以需將式(3)以矩陣相乘的形式改寫為其次方程組,再使用奇異值分解(singular value decomposition,SVD)的方法[11],求解矩陣H。
同時由式(1)可知,H矩陣可以展開如下形式
(4)
為了從中解出相機的內參系數(shù),先假設像素坐標系的原點位于圖像的正中心,即cx=a/2,cy=b/2,其中a,b分別為相機獲取圖像的長和高。借助H矩陣的第三行,消去第一、二行中的cx和cy,得到如下矩陣
(5)
將T矩陣表示為列向量的形式[r1,r2,r3,t],其中前3列為旋轉向量。旋轉向量有兩個約束條件:1)旋轉向量點積為0;2)旋轉向量模相等,均為1。由此根據一張圖像可以列出5條方程
(6)
R11R12+R21R22+R31R32=0
(7)
根據式(5)可將式(7)改寫為
(8)
以此類推,則式(6)可以改寫為如下矩陣形式
(9)
同樣采用SVD的方法對式(9)進行求解,從而算出fx和fy的值。
獲取相機內參后可以將內參系數(shù)代回式(4)求取相機的外參系數(shù),并使用張氏標定文中的方法求解相機畸變模型。由于在上文計算過程中對某些參數(shù)進行了近似估計,所以上述結果并不能作為標定的最終結果。為了獲取更為精確的結果,使用非線性優(yōu)化方法[11]對相機的內、外參進行優(yōu)化。構建優(yōu)化方程
(10)
式中k1,k2為畸變系數(shù),U為棋盤點的像素坐標,U′()為通過相機內外參和畸變系數(shù)計算像素坐標的函數(shù)。使用非線性優(yōu)化中的L-M方法對式(10)進行不斷迭代,直至收斂,以此作為標定參數(shù)的最終結果。
為了驗證上述方法得出的標定參數(shù)更符合針孔相機模型的投影規(guī)律,使用了如圖2(a)所示的三維標定板對相機進行標定實驗。以三塊平面的交點為原點,根據右手系原則建立世界坐標系。為了提升測量精度,使用全站儀測出每一個棋盤格內角點在世界坐標系中的坐標。實驗所用均為7×5的棋盤格標定板,每個棋盤格子大小為3 cm×3 cm。標定相機如圖2(b)所示,型號為MYNTEYE S1030,分辨率為752×480,像素尺寸為6.0 μm×6.0 μm,標定時只使用該雙目相機的左目圖像。
圖2 三維標定板與相機
實驗過程中,以標定板三塊平面的交點為原點,根據右手系原則建立世界坐標系,從而得出所有棋盤內角的世界坐標。固定三維標定板,移動相機獲取不同視角下的標定板圖像,每張圖像需包含3張棋盤格的所有內角點信息。同時為了進行實驗對比,用同樣的方法僅獲取三維標定板中某一平面棋盤格的圖像,用以進行平面標定實驗。為了排除棋盤格點數(shù)對標定結果的影響,在三維標定和平面標定的過程中均只使用12個棋盤內角點進行計算,點的位置由標定程序隨機選取,且三維標定的12個點平均分布在3塊棋盤平面上。標定程序借助于OpenCV框架實現(xiàn)。
為了驗證本文提出的三維標定算法相比于平面標定算法具有更高的穩(wěn)定性,分別用該兩種方法對相機進行20組標定實驗,得到標定參數(shù)的數(shù)值,根據式(11)計算各個參數(shù)的標準差,并繪制成圖3所示的柱狀圖。圖3(a)對比了相機內參系數(shù)fx,fy,cx,cy實驗數(shù)據的標準差大小,從中可以看出,三維標定方法的標準差明顯小于平面標定方法。圖3(b)對比了畸變系數(shù)k1,k2的標準差大小,從圖中數(shù)據可以看出,兩種方法標定結果的標準差相差無幾,都具有很高的穩(wěn)定性,相比而言,三維標定得出的標準差更小。綜上所述,無論是相機內參還是畸變系數(shù),三維標定得出的結果穩(wěn)定性更強
圖3 標準差對比
(11)
由于相機內、外參數(shù)的真值不容易獲取,因此無法簡單地根據標定參數(shù)的數(shù)值大小判定標定結果是否準確,需要額外設計合理的評價指標。本文使用“內符合重投影誤差”和“外符合重投影誤差”對標定參數(shù)進行評價,兩者定義如下:
內符合重投影誤差:利用標定得到的相機模型參數(shù),將標定過程中所使用到的12個點的世界坐標投影到像素坐標系中得到新的像素坐標(u′,v′),計算新的像素坐標與圖像處理提取的原始像素坐標(u,v)之間的平均誤差。
外符合重投影誤差:利用標定得到的相機模型參數(shù),將標定過程中所有未使用到的點的世界坐標投影到像素坐標系中得到新的像素坐標(u′,v′),計算新的像素坐標與圖像處理提取的原始像素坐標(u,v)之間的平均誤差。
雖然在計算兩種誤差時,使用的像素點不同,但是均可以用式(12)進行表示,計算結果單位為像素
(12)
根據上述定義,計算10組標定結果的內、外符合重投影誤差,如表1,并繪制圖4所示柱狀圖。
表1 平面、三維標定的準確性對比 像素
圖4 內、外符合重投影誤差對比
從圖中可以明顯看出,對于任一組實驗數(shù)據,無論是內符合重投影誤差還是外符合重投影誤差,三維標定的結果都要優(yōu)于平面標定,且對于三維標定而言,平均外符合投影誤差比平均內符合重投影誤差更小。表明三維標定方法,不僅能根據實驗所用角點準確計算模型參數(shù),同時能更好地擬合其余角點的投影規(guī)律。因此,相對于平面標定,三維標定獲取的標定參數(shù)更符合針孔相機模型。
本文基于張氏相機標定理論,提出了基于三維標定板的相機標定方法。實驗結果表明:使用三維棋盤格標定相機,不僅能提升標定結果的穩(wěn)定性,同時也能降低相機模型的投影誤差,所得標定結果更符合針孔相機的投影規(guī)律。本文僅驗證了三維標定方法標定單目相機的優(yōu)越性,在下一步工作中,將使用該方法標定雙目相機,并進行雙目圖像的匹配校正,驗證三維標定方法在標定雙目時的實用性與準確性。