蔡青青,傅 彬,胡瑋芳,顧春霞
(1.紹興職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,浙江 紹興 312000;2.中國(guó)電信集團(tuán)有限公司紹興分公司,浙江 紹興 312000)
虛擬現(xiàn)實(shí)場(chǎng)景的構(gòu)建常用到三維重建技術(shù)。相機(jī)是獲取物體空間信息的重要部件,相機(jī)標(biāo)定是三維重建的關(guān)鍵步驟[1],因此標(biāo)定結(jié)果是三維重建的精度值的關(guān)鍵影響因素[2-3]。張正友提出的基于OpenCV 的棋盤格標(biāo)定法[4]使用一個(gè)已知尺寸的棋盤格并將其放置在不同位置,拍攝多張棋盤格圖片,通過對(duì)這些圖片進(jìn)行處理,得到相機(jī)的內(nèi)部參數(shù)和外部參數(shù)。OpenCV 庫提供了相應(yīng)的應(yīng)用程序編程接口(Application Programming Interface,API),只需簡(jiǎn)單調(diào)用即可完成標(biāo)定,易于實(shí)現(xiàn),精度較高,但是需要使用特制的棋盤格,并且拍攝角度、光照等條件需要滿足一定要求,否則標(biāo)定結(jié)果會(huì)受到影響。張正友[5]提出一種基于單幅標(biāo)定圖的相機(jī)標(biāo)定方法,利用已知標(biāo)定圖像上特征點(diǎn)距離構(gòu)造約束條件獲得相機(jī)參數(shù),減少了標(biāo)定相機(jī)需要的圖像,但該方法適用于對(duì)相機(jī)成像區(qū)域較小、畸變程度較小的場(chǎng)景進(jìn)行標(biāo)定。鑒于此,JIAO 等人提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定方法[6],不需要使用特殊的標(biāo)定物體,只需要使用單幅圖像即可完成標(biāo)定過程。YU 等人提出了一種基于圖神經(jīng)網(wǎng)絡(luò)的相機(jī)標(biāo)定方法[7],可以利用大量數(shù)據(jù)進(jìn)行訓(xùn)練,并在真實(shí)場(chǎng)景中獲得更高的精度。基于深度學(xué)習(xí)模型需要從大量數(shù)據(jù)中學(xué)習(xí)相機(jī)的內(nèi)部參數(shù)和外部參數(shù),因此需要收集大量的數(shù)據(jù)進(jìn)行訓(xùn)練,且對(duì)數(shù)據(jù)質(zhì)量很敏感。三參數(shù)模型[8]只需要3 個(gè)參數(shù),可以大大減少計(jì)算量,降低存儲(chǔ)空間需求。張正友平面模板法[9]避免了傳統(tǒng)方法設(shè)備要求高、操作煩瑣等缺點(diǎn),利用已知標(biāo)定圖像上特征點(diǎn)距離構(gòu)造約束條件獲得相機(jī)參數(shù),減少了標(biāo)定相機(jī)需要的圖像,且有較高的精度。目前,張正友平面模板法和改進(jìn)的三參數(shù)模型由于標(biāo)定精度高等突出優(yōu)勢(shì),得到了廣泛的應(yīng)用和研究,但需要精確提取直線上點(diǎn)的坐標(biāo),且在切向畸變較明顯的環(huán)境下標(biāo)定參數(shù)存在明顯誤差。
利用光柵投影進(jìn)行三維重構(gòu)時(shí),大量利用標(biāo)準(zhǔn)量塊評(píng)估系統(tǒng)測(cè)量精度,發(fā)現(xiàn)標(biāo)準(zhǔn)量塊有較好的幾何特性。由此,本文提出一種基于量塊垂直邊線的相機(jī)標(biāo)定方法。該方法將世界坐標(biāo)系和相機(jī)坐標(biāo)系重合,使相機(jī)的參數(shù)矩陣只含內(nèi)參,減少標(biāo)定參數(shù);采用量塊作為標(biāo)定物,利用量塊邊線固有的垂直約束關(guān)系對(duì)相機(jī)進(jìn)行標(biāo)定,在修正徑向畸變的同時(shí)對(duì)切身畸變進(jìn)行修正。最后實(shí)驗(yàn)驗(yàn)證了本文方法的有效性和可操作性。
為充分理解相機(jī)標(biāo)定原理,需要確立相機(jī)的成像模型來建立標(biāo)定過程中各個(gè)坐標(biāo)系的關(guān)系,最終得到相機(jī)標(biāo)定所需的內(nèi)外參數(shù)。目前常用的模型有針孔模型、擬透視投影模型以及正交投影模型。針孔模型是這3 種模型中最簡(jiǎn)單也最常用的模型,是一種比較理想的模型,簡(jiǎn)單且有較好的準(zhǔn)確性。為不失一般性,本文采用針孔模型為相機(jī)的成像模型。相機(jī)的針孔模型如圖1 所示。在此模型中,空間場(chǎng)景中一點(diǎn)的光線通過相機(jī)的光學(xué)中心投射到成像平面上時(shí),主光軸線從光學(xué)中心出發(fā),與成像平面垂直。若將光心作為原點(diǎn),則可以建立坐標(biāo)系O-XCYCZC,其中XC、YC、ZC為3 條互相垂直的直線,ZC與光軸重合。
圖1 相機(jī)成像模型圖
為方便理解相機(jī)成像原理,定義不同的坐標(biāo)系來描述相機(jī)成像過程,主要定義計(jì)算機(jī)圖像坐標(biāo)系、像平面坐標(biāo)系、相機(jī)坐標(biāo)系及世界坐標(biāo)系共4 個(gè)坐標(biāo)系。
(1)計(jì)算機(jī)圖像坐標(biāo)系,為圖像上的平面直角坐標(biāo)系。該坐標(biāo)系表示的圖像在計(jì)算機(jī)內(nèi)存儲(chǔ)的形式是以像素為單位的直角坐標(biāo)系(μ,ν)。每個(gè)像素坐標(biāo)代表該像素在數(shù)組里面的行數(shù)和列數(shù),便于計(jì)算機(jī)處理圖像。
(2)像平面坐標(biāo)系。從圖像坐標(biāo)系無法得到像素的物理單位,故須用物理單位表示的像平面坐標(biāo)(x,y)來表示該像素在圖像里的物理位置。
(3)相機(jī)坐標(biāo)系,用于分析相機(jī)成像的幾何關(guān)系,以相機(jī)平面和光心的交點(diǎn)為中心,建立坐標(biāo)系(XC,YC,ZC),ZC軸為相機(jī)光軸。
(4)世界坐標(biāo)系,即現(xiàn)實(shí)空間坐標(biāo)系,可以任意定義該坐標(biāo)系,用來描述相機(jī)在現(xiàn)實(shí)世界的位置和環(huán)境中物體的位置。相機(jī)坐標(biāo)系可以通過旋轉(zhuǎn)和平移轉(zhuǎn)化為世界坐標(biāo)系,整個(gè)參考系的坐標(biāo)如圖2 所示。
圖2 參考坐標(biāo)系圖
記像素點(diǎn)m在計(jì)算機(jī)圖像坐標(biāo)為(μ,ν),齊次坐標(biāo)為(μ,ν,1),在像平面坐標(biāo)系下的坐標(biāo)為(x,y),齊次坐標(biāo)為(x,y,1)。對(duì)應(yīng)的空間點(diǎn)M,其世界坐標(biāo)為(XW,YW,ZW),齊次坐標(biāo)為(XW,YW,ZW,1),在相機(jī)坐標(biāo)系中對(duì)應(yīng)點(diǎn)坐標(biāo)為MC,記坐標(biāo)為(XC,YC,ZC),齊次坐標(biāo)為(XC,YC,ZC,1)。根據(jù)針孔模型原理可得,計(jì)算機(jī)圖像像素點(diǎn)和像平面坐標(biāo)之間的關(guān)系為
式中:(μ,ν0)為圖像主點(diǎn)的坐標(biāo),μx和νy為每一個(gè)像素在μ軸和ν軸上的物理尺寸,s為像平面坐標(biāo)和光軸與完全垂直所差的傾斜度。
根據(jù)針孔模型,相機(jī)和像平面坐標(biāo)系之間的關(guān)系為
M點(diǎn)的世界坐標(biāo)和相機(jī)坐標(biāo)齊次轉(zhuǎn)換關(guān)系為
式中:R和t為外部參數(shù),分別為空間點(diǎn)的世界坐標(biāo)到相機(jī)坐標(biāo)的旋轉(zhuǎn)和平移變換參數(shù)。
根據(jù)式(1)、式(2)和式(3),可得到圖像像素點(diǎn)坐標(biāo)和對(duì)應(yīng)的空間點(diǎn)世界坐標(biāo)的齊次變換為
式中:sc為任意比例因子,A為相機(jī)內(nèi)參矩陣。
根據(jù)相機(jī)的成像模型,可將式(4)空間點(diǎn)M和像素點(diǎn)m寫為
張正友平面模板法將標(biāo)定板上點(diǎn)的ZW設(shè)置為0,故式(4)可以改寫為
式中:ri表示旋轉(zhuǎn)矩陣R的第i列,為不失一般性,m=(μ,v)和=(μ,v,1)表示空間點(diǎn)的圖像坐標(biāo)及其齊次坐標(biāo),M=(XW,YW)和=(XW,YW,1)表示空間點(diǎn)的坐標(biāo)系和齊次坐標(biāo)系,則圖像平面上的點(diǎn)和平面模板上的點(diǎn)可以用單應(yīng)性矩陣來聯(lián)系,表示為
H可以表示成H=[h1,h2,h3],則式(7)可以改寫為
因?yàn)閞1和r2正交,可以得到以下約束條件為
式(9)為單應(yīng)性矩陣內(nèi)參的兩個(gè)基本約束條件。單應(yīng)性矩陣的自由度為8,外參數(shù)為6 個(gè)(3 個(gè)屬于旋轉(zhuǎn),3 個(gè)屬于平移)。對(duì)于內(nèi)參,只能獲得有且僅有兩個(gè)向量。令:
則可得到相機(jī)的內(nèi)部參數(shù)[10]為
根據(jù)得到的內(nèi)參,可以求得圖像的外部參數(shù)為
由于鏡頭制造工藝的問題,鏡頭存在透視畸變?;儗?duì)于用于非精密測(cè)量的鏡頭影響很大。畸變主要有徑向畸變、切向畸變及偏心畸變等。理想圖像點(diǎn)與實(shí)際圖像點(diǎn)的位置關(guān)系如圖3 所示。圖3 中,dr為徑向畸變,dt為切向畸變。
圖3 理想圖像點(diǎn)和實(shí)際圖像點(diǎn)
張正友平面模板法主要考慮相機(jī)鏡頭的徑向畸變?;儀矯正模型為
式中:k1和k2為徑向畸變系數(shù),結(jié)合Levenberg-Marquardt 算法來完成非線性優(yōu)化校正。
光柵投影測(cè)量系統(tǒng)中常常需要應(yīng)用標(biāo)準(zhǔn)量塊評(píng)判光柵投影測(cè)量精度。標(biāo)準(zhǔn)量塊有較好的幾何特性,故本文采用標(biāo)準(zhǔn)量塊為標(biāo)定物。ZHANG[11]提出將世界坐標(biāo)系與相機(jī)坐標(biāo)系重合,減少相機(jī)標(biāo)定參數(shù)。該方法利用一條長(zhǎng)度已知的直線,繞固定點(diǎn)做運(yùn)動(dòng),利用直線運(yùn)動(dòng)的約束關(guān)系對(duì)相機(jī)進(jìn)行標(biāo)定。但該方法需要精確提取直線上點(diǎn)的坐標(biāo),有一點(diǎn)難度。本文在ZHANG 的基礎(chǔ)上提出一種基于量塊垂直邊線的相機(jī)標(biāo)定方法,減少相機(jī)標(biāo)定參數(shù),再利用量塊邊線固有的垂直關(guān)系對(duì)相機(jī)進(jìn)行標(biāo)定。
本文提出一種基于量塊垂直邊線的相機(jī)標(biāo)定方法對(duì)相機(jī)進(jìn)行標(biāo)定,利用量塊邊線間的垂直關(guān)系得到相機(jī)內(nèi)部參數(shù)的約束條件。量塊邊線的垂直關(guān)系如圖4 所示。
圖4 量塊垂直連線關(guān)系
若BP和BO為量塊的兩條垂直邊線,相交于B點(diǎn),P和O點(diǎn)為兩條邊線的端點(diǎn)。對(duì)應(yīng)的圖像點(diǎn)分別為o、b、p。將世界坐標(biāo)系與相機(jī)坐標(biāo)系重合,故式(5)可以簡(jiǎn)化為
所以空間點(diǎn)和對(duì)應(yīng)圖像像素點(diǎn)的關(guān)系可以化為
因?yàn)镺點(diǎn)、P點(diǎn)、B點(diǎn)在同一個(gè)平面上,故可認(rèn)為SO=SP=SB。
由向量性質(zhì)可得
將式(16)代入式(17),可得
式中:B=A-TA-1。由于SO=SP=SB,則式(18)可以化為
根據(jù)式(10)可知,B是個(gè)對(duì)稱矩陣,故可以將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幅量塊標(biāo)定圖,就可以得到N個(gè)類似于Vx=0 的方程,就可解出x。最終可以得到
式中:γ=-x2α2β/s。
張正友平面模板法中雖然對(duì)畸變進(jìn)行了校正,但是只校正了徑向畸變而忽略了切向畸變。由于有些場(chǎng)合切向畸變是不能被忽略的,本文提出的相機(jī)標(biāo)定方法采用同時(shí)糾正切向畸變和徑向畸變的畸變校正模型。若(x,y)是理想無失真歸一化的像平面坐標(biāo),是真實(shí)的歸一化的像平面坐標(biāo),則徑向畸變矯正模型為
切向畸變模型為
式中:k1和k2為徑向畸變系數(shù),p1和p2是切向畸變系數(shù)。最后采用最大似然準(zhǔn)則的非線性優(yōu)化方法對(duì)所有參數(shù)進(jìn)行優(yōu)化。非線性優(yōu)化時(shí),最小化的方程式為
本文方法將相機(jī)坐標(biāo)系和世界坐標(biāo)系重合,采用同時(shí)校正徑向畸變和切向畸變的畸變校正模型,利用最大似然準(zhǔn)則的非線性優(yōu)化方法對(duì)所有參數(shù)進(jìn)行優(yōu)化,具體的實(shí)現(xiàn)步驟如下:
(1)將量塊放置在標(biāo)定平面上,固定相機(jī),翻轉(zhuǎn)量塊不同面,拍攝6 幅圖像;
(2)利用Sobel 算子檢測(cè)量塊邊線邊緣,再利用最小二乘擬合得到直線,檢測(cè)標(biāo)定圖像中垂直邊線的交點(diǎn),獲取這些交點(diǎn)的世界坐標(biāo)和圖像坐標(biāo);
(3)用2.2 節(jié)中的閉式解計(jì)算出相機(jī)的5 個(gè)內(nèi)部參數(shù){α,β,s,μ0,v0};
(4)采用2.3 節(jié)中的畸變校正模型,求得畸變系數(shù)k1、k2、p1和p2,k1和k2為徑向畸變系數(shù),p1和p2是切向畸變系數(shù);
(5)根據(jù)最大似然準(zhǔn)則,用算法通過最小化式(25)優(yōu)化所有的相機(jī)參數(shù)。
本節(jié)以Matlab 為軟件平臺(tái)進(jìn)行相機(jī)標(biāo)定實(shí)驗(yàn),采用本文提出的相機(jī)標(biāo)定法畸變校正模型,將本文提出的相機(jī)標(biāo)定方法分別與張正友的平面模板標(biāo)定法及改進(jìn)的三參數(shù)模型法進(jìn)行對(duì)比,驗(yàn)證本文方法的有效性。三參數(shù)模型中,令s=0,α=β=f,則相機(jī)內(nèi)參矩陣可以轉(zhuǎn)化為
張正友法和三參數(shù)模型法都采用標(biāo)準(zhǔn)的棋盤格標(biāo)定圖像。將棋盤格標(biāo)定圖放置在標(biāo)定平面上,用MVC5001-S00 相機(jī)拍攝6 幅不同圖片,如圖5所示。相機(jī)拍攝的圖片分辨率為800 px×400 px。對(duì)6 幅圖片分別采用張正友平面模板法和三參數(shù)法進(jìn)行相機(jī)標(biāo)定實(shí)驗(yàn)。
圖5 不同角度的平面模板圖片
對(duì)相機(jī)采用本文提出的標(biāo)定方法時(shí),將量塊放在標(biāo)定平面上,用相機(jī)拍攝不同面的量塊位姿,如圖6 所示。相機(jī)拍攝的圖片分辨率為800 px×400 px。對(duì)6 幅圖片采用本文提出的相機(jī)標(biāo)定方法計(jì)算相機(jī)的內(nèi)部參數(shù)以及畸變系數(shù)。
圖6 不同位置的量塊標(biāo)定圖
對(duì)圖6 進(jìn)行邊緣提取及邊緣線之間的交點(diǎn)得到結(jié)果如圖7 所示。
圖7 不同位置量塊邊緣檢測(cè)示意圖
本文方法與張正友以及改進(jìn)的三參數(shù)模型方法的實(shí)驗(yàn)結(jié)果如表1 所示。
表1 3 種方法的結(jié)果比較
為了評(píng)估相機(jī)標(biāo)定的精度,本文采用目前常用的圖像坐標(biāo)相對(duì)誤差精度評(píng)估準(zhǔn)則來計(jì)算標(biāo)定誤差。設(shè)世界坐標(biāo)系里的某空間點(diǎn)的圖像坐標(biāo)為(μ,ν),根據(jù)獲得的相機(jī)的內(nèi)部參數(shù)和外部參數(shù)計(jì)算出的圖像坐標(biāo)為(μ c,νc),則圖像坐標(biāo)的相對(duì)誤差[12]為
每次選取5 張,根據(jù)式(27)計(jì)算出張正友法、三參數(shù)法和本文方法的圖像坐標(biāo)相對(duì)誤差,結(jié)果如表2 所示。
表2 圖像坐標(biāo)相對(duì)誤差
從表1 和表2 的數(shù)據(jù)結(jié)果可以發(fā)現(xiàn),本文提出的改進(jìn)的標(biāo)定方法有效地標(biāo)定出了相機(jī)的內(nèi)部參數(shù)和外部參數(shù),且糾正了相機(jī)的切向畸變,適用于切向畸變較明顯的環(huán)境。
本文針對(duì)光柵投影測(cè)量系統(tǒng)特點(diǎn)提出一種基于量塊垂直邊線的相機(jī)標(biāo)定方法,首先利用世界坐標(biāo)系的特點(diǎn),將相機(jī)坐標(biāo)系和世界坐標(biāo)系重合在一起,減少相機(jī)標(biāo)定參數(shù),其次利用量塊邊線垂直線段的約束關(guān)系對(duì)相機(jī)進(jìn)行標(biāo)定,最后利用最大似然準(zhǔn)則的非線性優(yōu)化方法對(duì)相機(jī)參數(shù)進(jìn)行了優(yōu)化。該方法減少相機(jī)標(biāo)定參數(shù),原理簡(jiǎn)單。實(shí)驗(yàn)證明本文提出的方法有效標(biāo)定了相機(jī),且有較好的精度,適合光柵投影測(cè)量系統(tǒng)使用。