蔡青青,傅 彬,胡瑋芳,顧春霞
(1.紹興職業技術學院 信息工程學院,浙江 紹興 312000;2.中國電信集團有限公司紹興分公司,浙江 紹興 312000)
虛擬現實場景的構建常用到三維重建技術。相機是獲取物體空間信息的重要部件,相機標定是三維重建的關鍵步驟[1],因此標定結果是三維重建的精度值的關鍵影響因素[2-3]。張正友提出的基于OpenCV 的棋盤格標定法[4]使用一個已知尺寸的棋盤格并將其放置在不同位置,拍攝多張棋盤格圖片,通過對這些圖片進行處理,得到相機的內部參數和外部參數。OpenCV 庫提供了相應的應用程序編程接口(Application Programming Interface,API),只需簡單調用即可完成標定,易于實現,精度較高,但是需要使用特制的棋盤格,并且拍攝角度、光照等條件需要滿足一定要求,否則標定結果會受到影響。張正友[5]提出一種基于單幅標定圖的相機標定方法,利用已知標定圖像上特征點距離構造約束條件獲得相機參數,減少了標定相機需要的圖像,但該方法適用于對相機成像區域較小、畸變程度較小的場景進行標定。鑒于此,JIAO 等人提出了一種基于卷積神經網絡的相機標定方法[6],不需要使用特殊的標定物體,只需要使用單幅圖像即可完成標定過程。YU 等人提出了一種基于圖神經網絡的相機標定方法[7],可以利用大量數據進行訓練,并在真實場景中獲得更高的精度。基于深度學習模型需要從大量數據中學習相機的內部參數和外部參數,因此需要收集大量的數據進行訓練,且對數據質量很敏感。三參數模型[8]只需要3 個參數,可以大大減少計算量,降低存儲空間需求。張正友平面模板法[9]避免了傳統方法設備要求高、操作煩瑣等缺點,利用已知標定圖像上特征點距離構造約束條件獲得相機參數,減少了標定相機需要的圖像,且有較高的精度。目前,張正友平面模板法和改進的三參數模型由于標定精度高等突出優勢,得到了廣泛的應用和研究,但需要精確提取直線上點的坐標,且在切向畸變較明顯的環境下標定參數存在明顯誤差。
利用光柵投影進行三維重構時,大量利用標準量塊評估系統測量精度,發現標準量塊有較好的幾何特性。由此,本文提出一種基于量塊垂直邊線的相機標定方法。該方法將世界坐標系和相機坐標系重合,使相機的參數矩陣只含內參,減少標定參數;采用量塊作為標定物,利用量塊邊線固有的垂直約束關系對相機進行標定,在修正徑向畸變的同時對切身畸變進行修正。最后實驗驗證了本文方法的有效性和可操作性。
為充分理解相機標定原理,需要確立相機的成像模型來建立標定過程中各個坐標系的關系,最終得到相機標定所需的內外參數。目前常用的模型有針孔模型、擬透視投影模型以及正交投影模型。針孔模型是這3 種模型中最簡單也最常用的模型,是一種比較理想的模型,簡單且有較好的準確性。為不失一般性,本文采用針孔模型為相機的成像模型。相機的針孔模型如圖1 所示。在此模型中,空間場景中一點的光線通過相機的光學中心投射到成像平面上時,主光軸線從光學中心出發,與成像平面垂直。若將光心作為原點,則可以建立坐標系O-XCYCZC,其中XC、YC、ZC為3 條互相垂直的直線,ZC與光軸重合。

圖1 相機成像模型圖
為方便理解相機成像原理,定義不同的坐標系來描述相機成像過程,主要定義計算機圖像坐標系、像平面坐標系、相機坐標系及世界坐標系共4 個坐標系。
(1)計算機圖像坐標系,為圖像上的平面直角坐標系。該坐標系表示的圖像在計算機內存儲的形式是以像素為單位的直角坐標系(μ,ν)。每個像素坐標代表該像素在數組里面的行數和列數,便于計算機處理圖像。
(2)像平面坐標系。從圖像坐標系無法得到像素的物理單位,故須用物理單位表示的像平面坐標(x,y)來表示該像素在圖像里的物理位置。
(3)相機坐標系,用于分析相機成像的幾何關系,以相機平面和光心的交點為中心,建立坐標系(XC,YC,ZC),ZC軸為相機光軸。
(4)世界坐標系,即現實空間坐標系,可以任意定義該坐標系,用來描述相機在現實世界的位置和環境中物體的位置。相機坐標系可以通過旋轉和平移轉化為世界坐標系,整個參考系的坐標如圖2 所示。

圖2 參考坐標系圖
記像素點m在計算機圖像坐標為(μ,ν),齊次坐標為(μ,ν,1),在像平面坐標系下的坐標為(x,y),齊次坐標為(x,y,1)。對應的空間點M,其世界坐標為(XW,YW,ZW),齊次坐標為(XW,YW,ZW,1),在相機坐標系中對應點坐標為MC,記坐標為(XC,YC,ZC),齊次坐標為(XC,YC,ZC,1)。根據針孔模型原理可得,計算機圖像像素點和像平面坐標之間的關系為
式中:(μ,ν0)為圖像主點的坐標,μx和νy為每一個像素在μ軸和ν軸上的物理尺寸,s為像平面坐標和光軸與完全垂直所差的傾斜度。
根據針孔模型,相機和像平面坐標系之間的關系為
M點的世界坐標和相機坐標齊次轉換關系為
式中:R和t為外部參數,分別為空間點的世界坐標到相機坐標的旋轉和平移變換參數。
根據式(1)、式(2)和式(3),可得到圖像像素點坐標和對應的空間點世界坐標的齊次變換為
式中:sc為任意比例因子,A為相機內參矩陣。
根據相機的成像模型,可將式(4)空間點M和像素點m寫為
張正友平面模板法將標定板上點的ZW設置為0,故式(4)可以改寫為
式中:ri表示旋轉矩陣R的第i列,為不失一般性,m=(μ,v)和=(μ,v,1)表示空間點的圖像坐標及其齊次坐標,M=(XW,YW)和=(XW,YW,1)表示空間點的坐標系和齊次坐標系,則圖像平面上的點和平面模板上的點可以用單應性矩陣來聯系,表示為
H可以表示成H=[h1,h2,h3],則式(7)可以改寫為
因為r1和r2正交,可以得到以下約束條件為
式(9)為單應性矩陣內參的兩個基本約束條件。單應性矩陣的自由度為8,外參數為6 個(3 個屬于旋轉,3 個屬于平移)。對于內參,只能獲得有且僅有兩個向量。令:
則可得到相機的內部參數[10]為
根據得到的內參,可以求得圖像的外部參數為
由于鏡頭制造工藝的問題,鏡頭存在透視畸變。畸變對于用于非精密測量的鏡頭影響很大。畸變主要有徑向畸變、切向畸變及偏心畸變等。理想圖像點與實際圖像點的位置關系如圖3 所示。圖3 中,dr為徑向畸變,dt為切向畸變。

圖3 理想圖像點和實際圖像點
張正友平面模板法主要考慮相機鏡頭的徑向畸變。畸變x矯正模型為
式中:k1和k2為徑向畸變系數,結合Levenberg-Marquardt 算法來完成非線性優化校正。
光柵投影測量系統中常常需要應用標準量塊評判光柵投影測量精度。標準量塊有較好的幾何特性,故本文采用標準量塊為標定物。ZHANG[11]提出將世界坐標系與相機坐標系重合,減少相機標定參數。該方法利用一條長度已知的直線,繞固定點做運動,利用直線運動的約束關系對相機進行標定。但該方法需要精確提取直線上點的坐標,有一點難度。本文在ZHANG 的基礎上提出一種基于量塊垂直邊線的相機標定方法,減少相機標定參數,再利用量塊邊線固有的垂直關系對相機進行標定。
本文提出一種基于量塊垂直邊線的相機標定方法對相機進行標定,利用量塊邊線間的垂直關系得到相機內部參數的約束條件。量塊邊線的垂直關系如圖4 所示。

圖4 量塊垂直連線關系
若BP和BO為量塊的兩條垂直邊線,相交于B點,P和O點為兩條邊線的端點。對應的圖像點分別為o、b、p。將世界坐標系與相機坐標系重合,故式(5)可以簡化為
所以空間點和對應圖像像素點的關系可以化為
因為O點、P點、B點在同一個平面上,故可認為SO=SP=SB。
由向量性質可得
將式(16)代入式(17),可得
式中:B=A-TA-1。由于SO=SP=SB,則式(18)可以化為
根據式(10)可知,B是個對稱矩陣,故可以將B表示為B=[B11,B12,B22,B13,B23,B33]T,則
記v=[h1H1,h2H1+h1H2,h2H2B22,h3H1+h1H3,h3H3,h3H2+h2H3],x=SP2b=[x1,x2,x3,x4,x5,x6]T,V=[v1,v2,v3,…,vN]T,則Vx=0。
若拍攝N幅量塊標定圖,就可以得到N個類似于Vx=0 的方程,就可解出x。最終可以得到
式中:γ=-x2α2β/s。
張正友平面模板法中雖然對畸變進行了校正,但是只校正了徑向畸變而忽略了切向畸變。由于有些場合切向畸變是不能被忽略的,本文提出的相機標定方法采用同時糾正切向畸變和徑向畸變的畸變校正模型。若(x,y)是理想無失真歸一化的像平面坐標,是真實的歸一化的像平面坐標,則徑向畸變矯正模型為
切向畸變模型為
式中:k1和k2為徑向畸變系數,p1和p2是切向畸變系數。最后采用最大似然準則的非線性優化方法對所有參數進行優化。非線性優化時,最小化的方程式為
本文方法將相機坐標系和世界坐標系重合,采用同時校正徑向畸變和切向畸變的畸變校正模型,利用最大似然準則的非線性優化方法對所有參數進行優化,具體的實現步驟如下:
(1)將量塊放置在標定平面上,固定相機,翻轉量塊不同面,拍攝6 幅圖像;
(2)利用Sobel 算子檢測量塊邊線邊緣,再利用最小二乘擬合得到直線,檢測標定圖像中垂直邊線的交點,獲取這些交點的世界坐標和圖像坐標;
(3)用2.2 節中的閉式解計算出相機的5 個內部參數{α,β,s,μ0,v0};
(4)采用2.3 節中的畸變校正模型,求得畸變系數k1、k2、p1和p2,k1和k2為徑向畸變系數,p1和p2是切向畸變系數;
(5)根據最大似然準則,用算法通過最小化式(25)優化所有的相機參數。
本節以Matlab 為軟件平臺進行相機標定實驗,采用本文提出的相機標定法畸變校正模型,將本文提出的相機標定方法分別與張正友的平面模板標定法及改進的三參數模型法進行對比,驗證本文方法的有效性。三參數模型中,令s=0,α=β=f,則相機內參矩陣可以轉化為
張正友法和三參數模型法都采用標準的棋盤格標定圖像。將棋盤格標定圖放置在標定平面上,用MVC5001-S00 相機拍攝6 幅不同圖片,如圖5所示。相機拍攝的圖片分辨率為800 px×400 px。對6 幅圖片分別采用張正友平面模板法和三參數法進行相機標定實驗。

圖5 不同角度的平面模板圖片
對相機采用本文提出的標定方法時,將量塊放在標定平面上,用相機拍攝不同面的量塊位姿,如圖6 所示。相機拍攝的圖片分辨率為800 px×400 px。對6 幅圖片采用本文提出的相機標定方法計算相機的內部參數以及畸變系數。

圖6 不同位置的量塊標定圖
對圖6 進行邊緣提取及邊緣線之間的交點得到結果如圖7 所示。

圖7 不同位置量塊邊緣檢測示意圖
本文方法與張正友以及改進的三參數模型方法的實驗結果如表1 所示。

表1 3 種方法的結果比較
為了評估相機標定的精度,本文采用目前常用的圖像坐標相對誤差精度評估準則來計算標定誤差。設世界坐標系里的某空間點的圖像坐標為(μ,ν),根據獲得的相機的內部參數和外部參數計算出的圖像坐標為(μ c,νc),則圖像坐標的相對誤差[12]為
每次選取5 張,根據式(27)計算出張正友法、三參數法和本文方法的圖像坐標相對誤差,結果如表2 所示。

表2 圖像坐標相對誤差
從表1 和表2 的數據結果可以發現,本文提出的改進的標定方法有效地標定出了相機的內部參數和外部參數,且糾正了相機的切向畸變,適用于切向畸變較明顯的環境。
本文針對光柵投影測量系統特點提出一種基于量塊垂直邊線的相機標定方法,首先利用世界坐標系的特點,將相機坐標系和世界坐標系重合在一起,減少相機標定參數,其次利用量塊邊線垂直線段的約束關系對相機進行標定,最后利用最大似然準則的非線性優化方法對相機參數進行了優化。該方法減少相機標定參數,原理簡單。實驗證明本文提出的方法有效標定了相機,且有較好的精度,適合光柵投影測量系統使用。