張春森,嚴(yán) 露,于 振
(西安科技大學(xué) 測(cè)繪科學(xué)與技術(shù)學(xué)院,陜西 西安710054)
三維重建技術(shù)已被廣泛的應(yīng)用于生活和科研工作中,特別是在街景重現(xiàn)、城市導(dǎo)航、文物保護(hù)、工業(yè)設(shè)計(jì)等方面[1],展現(xiàn)出了極強(qiáng)的生命力和影響力。三維重建技術(shù)的重點(diǎn)在于如何獲取目標(biāo)場(chǎng)景或物體的深度信息[2]。在景物深度信息已知的條件下,只需要經(jīng)過(guò)數(shù)據(jù)的配準(zhǔn)及融合,即可實(shí)現(xiàn)景物的三維重建。在這一過(guò)程中,魚(yú)眼相機(jī)由于視角范圍大,可以達(dá)到甚至超過(guò)180°[3],為近距離拍攝大范圍場(chǎng)景創(chuàng)造了條件,同時(shí)也為三維重建提供了便利。但是魚(yú)眼相機(jī)拍攝的圖像存在較大的畸變,不能直接用來(lái)匹配應(yīng)用,需要對(duì)圖像進(jìn)行校正。在現(xiàn)有的校正方法中,通常需要首先對(duì)魚(yú)眼相機(jī)進(jìn)行標(biāo)定獲取包括等效焦距、圖像中心、畸變系數(shù)等相關(guān)參數(shù)[4]。
Geyer等提出適用于攝像機(jī)系統(tǒng)的中心折反射式球面統(tǒng)一模型用來(lái)進(jìn)行魚(yú)眼相機(jī)的標(biāo)定[5]。Ying等將魚(yú)眼相機(jī)拍攝的標(biāo)定圖像的空間線投影到一個(gè)大圓圈,利用投影在大圓圈的數(shù)學(xué)關(guān)系優(yōu)化相機(jī)參數(shù),由于沒(méi)有對(duì)空間線之間的位置進(jìn)行約束,只能作粗略估計(jì)[6]。Scaramuzza等假設(shè)利用泰勒級(jí)數(shù)的展開(kāi)描述相機(jī)的成像過(guò)程,其系數(shù)為需要校正的相機(jī)內(nèi)參數(shù)。用于估計(jì)參數(shù)的四步線性最小二乘法,與普通最小二乘法相比,此方法更準(zhǔn)確[7]。劉鳳英等針對(duì)于全景相機(jī)利用光束法空三平差法獲得了精確的標(biāo)定參數(shù)[8]。程夢(mèng)嬌等通過(guò)激光掃描儀獲取需要標(biāo)定空間的三維點(diǎn)云圖,然后利用SIFT算法描述相機(jī)與掃描數(shù)據(jù)的對(duì)應(yīng)關(guān)系,并進(jìn)行選擇,剔除不需要或誤差大的特征點(diǎn),采用三維隨機(jī)采樣一致性濾波器對(duì)相機(jī)標(biāo)定的參數(shù)進(jìn)行估計(jì)[9]。林春雨等根據(jù)相機(jī)成像坐標(biāo)系之間的轉(zhuǎn)換,可獲得該點(diǎn)的物理尺寸及相機(jī)焦距,得出相機(jī)標(biāo)定的內(nèi)參矩陣和旋轉(zhuǎn)矩陣[10]。
Kannala在等距投影模型的基礎(chǔ)上提出了一種通用的多項(xiàng)式形式的魚(yú)眼相機(jī)模型[11]。然而基于多項(xiàng)式的畸變函數(shù)表示方法有局限性,由于高次多項(xiàng)式在計(jì)算上的復(fù)雜性,當(dāng)畸變函數(shù)的設(shè)計(jì)較為復(fù)雜時(shí),多項(xiàng)式模型的求解計(jì)算誤差會(huì)很大[12]。為此,文中給出了一種采用分段多項(xiàng)式逼近的魚(yú)眼相機(jī)檢校模型[13],以實(shí)現(xiàn)對(duì)多項(xiàng)式函數(shù)模型的優(yōu)化,通過(guò)對(duì)魚(yú)眼相機(jī)獲取的真實(shí)場(chǎng)景影像的三維重建,證明了所給方法能有效提高模型標(biāo)定的計(jì)算效果。
普通相機(jī)成像遵循的是針孔相機(jī)模型,在成像過(guò)程中實(shí)際場(chǎng)景中的直線仍被投影為圖像平面上的直線[14]。如果使用針孔相機(jī)成像模型,當(dāng)魚(yú)眼相機(jī)的視場(chǎng)角到180°時(shí),投影到成像平面的場(chǎng)景將會(huì)變的無(wú)限大。所以,為了讓魚(yú)眼相機(jī)擁有較大的視場(chǎng)角并且可以將圖像投影到有限的成像平面,須允許相機(jī)畸變的存在。在這些畸變中,最嚴(yán)重的畸變是徑向畸變,因此主要考慮徑向畸變對(duì)相機(jī)成像的影響。目前,用于模擬魚(yú)眼相機(jī)成像過(guò)程的模型包括4個(gè)模型:等距投影模型,等立體角投影模型,正交投影模型及體投影模型。Kannala魚(yú)眼相機(jī)一般多項(xiàng)式近似模型是基于等距投影模型提出的。
式(1)為等距投影關(guān)系式,θ為成像點(diǎn)p與投影中心連線與主軸的夾角;f為焦距;r為投影中心到成像點(diǎn)之間的球面半徑。
由高斯光學(xué)求得徑向放大率為式(2)
切向放大率為式(3)
根據(jù)式(1)和式(3)可得式(4)
由式(4)可得到如下結(jié)論
1)視場(chǎng)角相等的點(diǎn)在像面上有等徑向距離[15],稱之為“等距投影”;
2)等距投影的魚(yú)眼相機(jī),對(duì)于給定的球面物成像時(shí),其徑向放大率βr不變。切向放大率隨θ的增大而變大。
為了使魚(yú)眼鏡頭的視角非常大,設(shè)計(jì)者必須做出犧牲,以允許魚(yú)眼圖像產(chǎn)生更大的變形。這種變形包括徑向畸變、切向畸變和薄透鏡畸變[16]。
1.2.1 徑向畸變
徑向畸變是沿著透鏡的徑向在畸變中心處的圖像像素中心的畸變,即遠(yuǎn)離透鏡中心的地方產(chǎn)生的形變更大。徑向畸變主要包括遠(yuǎn)離光軸和靠近光軸產(chǎn)生的枕形畸變和桶形畸變。枕形畸變的形成是由于圖像的中心向光軸中心靠攏,如圖1(a)所示。桶形畸變的形成是由于圖像的中心偏離光軸中心,如圖1(b)所示。徑向畸變的表示可以根據(jù)泰勒級(jí)數(shù)展開(kāi)的前幾項(xiàng)進(jìn)行表示,經(jīng)過(guò)校正的坐標(biāo)為式(5)
圖1 徑向畸變示意圖Fig.1 Radial distortion diagram
1.2.2 切向畸變
切向畸變是由于安裝誤差而引起的畸變,因?yàn)榍邢蚧兊拇嬖?,一個(gè)矩形投影到成像平面上可能會(huì)變成梯形。切向畸變由參數(shù)p1和p2描述,經(jīng)過(guò)校正的坐標(biāo)為式(6)
1.2.3 薄棱鏡畸變
薄棱鏡畸變是由于鏡頭的設(shè)計(jì)、制造和裝配的過(guò)程中存在誤差造成了圖像的畸變,稱為薄棱鏡畸變[17]。與徑向畸變和切向畸變做比較可知,魚(yú)眼相機(jī)的畸變類型中影響相對(duì)較小的畸變是薄棱鏡畸變。如果引入全部的畸變會(huì)增加畸變參數(shù),從而造成計(jì)算復(fù)雜并且難以求解,為此主要考慮對(duì)成像影響比較大的徑向畸變和切向畸變,綜合上述可以用參數(shù)k1,k2,k3,p1,p2來(lái)描述。
Kannala提出了一個(gè)魚(yú)眼相機(jī)的一般近似模型,該模型是基于等距投影模型[18]提出的。Opencv中使用的正是Kannala提出的魚(yú)眼相機(jī)的一般近似模型。公式(7)給出了統(tǒng)一寫(xiě)成等距投影模型的魚(yú)眼相機(jī)模型。
式中 θd為θ的奇函數(shù),將θd進(jìn)行泰勒展開(kāi)可以得到θ的奇次多項(xiàng)式,Kannala取前5項(xiàng)就可以很好的近似各種投影模型,并且針對(duì)于各種投影模型有充足的自由度。式(8)為θd的泰勒展開(kāi)的前5項(xiàng)。
根據(jù)多項(xiàng)式模型得到空間點(diǎn)到魚(yú)眼圖像點(diǎn)的變換過(guò)程如下,世界坐標(biāo)[XW,YW,ZW]到相機(jī)坐標(biāo)[XC,YC,ZC]的轉(zhuǎn)換關(guān)系為式(9)
式中
用多項(xiàng)式逼近函數(shù)[19]時(shí),一般認(rèn)為多項(xiàng)式系數(shù)越高逼近效果就越好,但是當(dāng)次數(shù)越來(lái)越高時(shí),進(jìn)行插值會(huì)出現(xiàn)龍格效應(yīng)。為了使擬合效果更好,同時(shí)避免龍格效應(yīng),選擇分段多項(xiàng)式插值法。已知函數(shù)f(x)的分段線性插值函數(shù)IN(x)一般形式如式(14)
式中yi為函數(shù)f(x)在xi處對(duì)應(yīng)的值??梢宰C明當(dāng)節(jié)點(diǎn)加密時(shí),分段線性插值函數(shù)與被插函數(shù)有很好的近似性。盡管分段插值函數(shù)可以很好地?cái)M合被插函數(shù),但是在節(jié)點(diǎn)處,插值函數(shù)一般不可導(dǎo)。為此,引入3次樣條插值。即使用3次樣條函數(shù)作為插值函數(shù)。3次樣條函數(shù)定義為:給定區(qū)間[a,b]的一個(gè)劃分Δ,如果函數(shù)s(x)滿足以下2個(gè)條件則s(x)稱為3次樣條函數(shù)。
1)s(x)在一個(gè)小區(qū)間[xj-1,xj](j=1,2,…,N)是一個(gè)3次多項(xiàng)式;
2)s(x)在整個(gè)區(qū)間上有連續(xù)二階連續(xù)導(dǎo)數(shù)。最小二乘法是通過(guò)最小化擬合函數(shù)與被擬合函數(shù)之間的誤差平方和尋找最佳擬合函數(shù),即最小。
可以用2-范數(shù)的形式表示
‖·‖定義為2-范數(shù),η(z)=‖b-Az‖2定義為誤差矢量[20]??梢宰C明,方程組的最小二乘解是唯一的,可以用式(16)的形式表示
采用12×9的黑白棋盤(pán)格為魚(yú)眼相機(jī)標(biāo)定板,通過(guò)對(duì)標(biāo)定圖像采集、棋盤(pán)格角點(diǎn)提取、以及基于C/C++語(yǔ)言結(jié)合Open CV 3.0編寫(xiě)標(biāo)定程序,最終得到魚(yú)眼相機(jī)參數(shù)。
實(shí)驗(yàn)使用GoPro生產(chǎn)的HERO4 Black魚(yú)眼相機(jī)進(jìn)行12次有效拍攝,并用文中所給的算法進(jìn)行相機(jī)標(biāo)定與影像校正。圖2為魚(yú)眼相機(jī)檢校模板原始影像,圖3為檢校模板角點(diǎn)檢測(cè)結(jié)果,表1為魚(yú)眼相機(jī)標(biāo)定結(jié)果,包括內(nèi)參數(shù)和鏡頭畸變系數(shù)。為測(cè)試檢校參數(shù)的準(zhǔn)確度,對(duì)原始檢校模板影像進(jìn)行校正恢復(fù),結(jié)果如圖4所示。
圖2 原始魚(yú)眼圖像Fig.2 Original fisheye images
表1 圖像標(biāo)定結(jié)果Table 1 Image calibration results
如圖4所示,針對(duì)某些校正圖像中出現(xiàn)“拉伸”的情況,主要原因是在進(jìn)行拍攝時(shí),標(biāo)定板相對(duì)于相機(jī)是傾斜的,并不與相機(jī)光軸垂直,所以會(huì)出現(xiàn)近大遠(yuǎn)小的情況,也就是“拉伸”的情況。相對(duì)于人的視覺(jué)情況而言,雖然感覺(jué)圖像存在“拉伸”,但根據(jù)透視原理,符合空間分布情況。
對(duì)于拍攝的照片,分別利用文中方法和傳統(tǒng)Kannala模型對(duì)魚(yú)眼相機(jī)進(jìn)行標(biāo)定,得到了不同模型計(jì)算出的相機(jī)的平移矩陣和旋轉(zhuǎn)矩陣,以此計(jì)算每張圖像的反投影誤差(表2),圖5為可視化的反投影誤差,可以看出:利用文中所給方法圖像的誤差有了明顯降低,總體平均誤差為0.012 417 1 pixel,與傳統(tǒng)Kannala模型的0.029 267 6 pixel相比,降低了0.016 850 5 pixel.
圖3 角點(diǎn)檢測(cè)結(jié)果Fig.3 Corner detection results
圖4 魚(yú)眼圖像校正效果Fig.4 Correction effect of fisheye image
表2 反投影誤差分析Table 2 Analysis of back projection error
為進(jìn)一步驗(yàn)證文中標(biāo)定方法及所得相機(jī)參數(shù)的有效性,基于多視圖立體視覺(jué)對(duì)影像目標(biāo)進(jìn)行三維重建并與無(wú)相機(jī)檢校參數(shù)三維重建進(jìn)行比較,圖6為利用檢校獲得內(nèi)參數(shù)和畸變系數(shù)對(duì)原圖像進(jìn)行校正比較,圖7,圖8分別為采用多視圖立體技術(shù)將SFM產(chǎn)生的稀疏點(diǎn)云稠密化過(guò)程中的影像特征提取與匹配以及點(diǎn)云重建。圖9分別為無(wú)相機(jī)參數(shù)及有相機(jī)參數(shù)三維重建比較。如圖9所示,當(dāng)加入相機(jī)參數(shù)和畸變系數(shù)之后,明顯改善了圖像扭曲的問(wèn)題,顯示的紋理特征比較全面,得到的三維模型更加真實(shí)。
圖5 反投影誤差Fig.5 Back-project errors
圖6 原始圖像與校正圖像Fig.6 Original image and corrected images
圖7 特征提取與匹配Fig.7 Feature extraction and matching
圖8 點(diǎn)云重建Fig.8 Point cloud reconstruction
圖9 三維模型Fig.9 Three-dimensional model
1)在研究Kannala提出的基于多項(xiàng)式的魚(yú)眼相機(jī)成像模型(Kannala模型)的基礎(chǔ)上,建立分段多項(xiàng)式逼近模型對(duì)其進(jìn)行了優(yōu)化改進(jìn)。
2)通過(guò)設(shè)計(jì)標(biāo)定板,使用GoPro生產(chǎn)的HERO4 Black魚(yú)眼相機(jī)進(jìn)行拍攝,利用C/C++語(yǔ)言結(jié)合Open CV 3.0編寫(xiě)標(biāo)定程序,得到相機(jī)的內(nèi)參數(shù)和畸變系數(shù),并用其校正原始圖像。
3)利用反投影誤差定量分析傳統(tǒng)Kannala模型和文中算法的相機(jī)標(biāo)定的計(jì)算效果。對(duì)原始圖像和校正圖像結(jié)合運(yùn)動(dòng)恢復(fù)結(jié)構(gòu)(SFM)進(jìn)行特征提取和立體匹配,獲得加密的三維點(diǎn)云。根據(jù)Meshlab對(duì)加密的三維點(diǎn)云進(jìn)行網(wǎng)格化處理,分別獲得原始圖像和校正圖像的多視圖立體視覺(jué)三維重建模型,定性分析文中算法的優(yōu)越性。