張春森,嚴 露,于 振
(西安科技大學 測繪科學與技術學院,陜西 西安710054)
三維重建技術已被廣泛的應用于生活和科研工作中,特別是在街景重現、城市導航、文物保護、工業設計等方面[1],展現出了極強的生命力和影響力。三維重建技術的重點在于如何獲取目標場景或物體的深度信息[2]。在景物深度信息已知的條件下,只需要經過數據的配準及融合,即可實現景物的三維重建。在這一過程中,魚眼相機由于視角范圍大,可以達到甚至超過180°[3],為近距離拍攝大范圍場景創造了條件,同時也為三維重建提供了便利。但是魚眼相機拍攝的圖像存在較大的畸變,不能直接用來匹配應用,需要對圖像進行校正。在現有的校正方法中,通常需要首先對魚眼相機進行標定獲取包括等效焦距、圖像中心、畸變系數等相關參數[4]。
Geyer等提出適用于攝像機系統的中心折反射式球面統一模型用來進行魚眼相機的標定[5]。Ying等將魚眼相機拍攝的標定圖像的空間線投影到一個大圓圈,利用投影在大圓圈的數學關系優化相機參數,由于沒有對空間線之間的位置進行約束,只能作粗略估計[6]。Scaramuzza等假設利用泰勒級數的展開描述相機的成像過程,其系數為需要校正的相機內參數。用于估計參數的四步線性最小二乘法,與普通最小二乘法相比,此方法更準確[7]。劉鳳英等針對于全景相機利用光束法空三平差法獲得了精確的標定參數[8]。程夢嬌等通過激光掃描儀獲取需要標定空間的三維點云圖,然后利用SIFT算法描述相機與掃描數據的對應關系,并進行選擇,剔除不需要或誤差大的特征點,采用三維隨機采樣一致性濾波器對相機標定的參數進行估計[9]。林春雨等根據相機成像坐標系之間的轉換,可獲得該點的物理尺寸及相機焦距,得出相機標定的內參矩陣和旋轉矩陣[10]。
Kannala在等距投影模型的基礎上提出了一種通用的多項式形式的魚眼相機模型[11]。然而基于多項式的畸變函數表示方法有局限性,由于高次多項式在計算上的復雜性,當畸變函數的設計較為復雜時,多項式模型的求解計算誤差會很大[12]。為此,文中給出了一種采用分段多項式逼近的魚眼相機檢校模型[13],以實現對多項式函數模型的優化,通過對魚眼相機獲取的真實場景影像的三維重建,證明了所給方法能有效提高模型標定的計算效果。
普通相機成像遵循的是針孔相機模型,在成像過程中實際場景中的直線仍被投影為圖像平面上的直線[14]。如果使用針孔相機成像模型,當魚眼相機的視場角到180°時,投影到成像平面的場景將會變的無限大。所以,為了讓魚眼相機擁有較大的視場角并且可以將圖像投影到有限的成像平面,須允許相機畸變的存在。在這些畸變中,最嚴重的畸變是徑向畸變,因此主要考慮徑向畸變對相機成像的影響。目前,用于模擬魚眼相機成像過程的模型包括4個模型:等距投影模型,等立體角投影模型,正交投影模型及體投影模型。Kannala魚眼相機一般多項式近似模型是基于等距投影模型提出的。
式(1)為等距投影關系式,θ為成像點p與投影中心連線與主軸的夾角;f為焦距;r為投影中心到成像點之間的球面半徑。

由高斯光學求得徑向放大率為式(2)

切向放大率為式(3)

根據式(1)和式(3)可得式(4)

由式(4)可得到如下結論
1)視場角相等的點在像面上有等徑向距離[15],稱之為“等距投影”;
2)等距投影的魚眼相機,對于給定的球面物成像時,其徑向放大率βr不變。切向放大率隨θ的增大而變大。
為了使魚眼鏡頭的視角非常大,設計者必須做出犧牲,以允許魚眼圖像產生更大的變形。這種變形包括徑向畸變、切向畸變和薄透鏡畸變[16]。
1.2.1 徑向畸變
徑向畸變是沿著透鏡的徑向在畸變中心處的圖像像素中心的畸變,即遠離透鏡中心的地方產生的形變更大。徑向畸變主要包括遠離光軸和靠近光軸產生的枕形畸變和桶形畸變。枕形畸變的形成是由于圖像的中心向光軸中心靠攏,如圖1(a)所示。桶形畸變的形成是由于圖像的中心偏離光軸中心,如圖1(b)所示。徑向畸變的表示可以根據泰勒級數展開的前幾項進行表示,經過校正的坐標為式(5)


圖1 徑向畸變示意圖Fig.1 Radial distortion diagram
1.2.2 切向畸變
切向畸變是由于安裝誤差而引起的畸變,因為切向畸變的存在,一個矩形投影到成像平面上可能會變成梯形。切向畸變由參數p1和p2描述,經過校正的坐標為式(6)

1.2.3 薄棱鏡畸變
薄棱鏡畸變是由于鏡頭的設計、制造和裝配的過程中存在誤差造成了圖像的畸變,稱為薄棱鏡畸變[17]。與徑向畸變和切向畸變做比較可知,魚眼相機的畸變類型中影響相對較小的畸變是薄棱鏡畸變。如果引入全部的畸變會增加畸變參數,從而造成計算復雜并且難以求解,為此主要考慮對成像影響比較大的徑向畸變和切向畸變,綜合上述可以用參數k1,k2,k3,p1,p2來描述。
Kannala提出了一個魚眼相機的一般近似模型,該模型是基于等距投影模型[18]提出的。Opencv中使用的正是Kannala提出的魚眼相機的一般近似模型。公式(7)給出了統一寫成等距投影模型的魚眼相機模型。

式中 θd為θ的奇函數,將θd進行泰勒展開可以得到θ的奇次多項式,Kannala取前5項就可以很好的近似各種投影模型,并且針對于各種投影模型有充足的自由度。式(8)為θd的泰勒展開的前5項。

根據多項式模型得到空間點到魚眼圖像點的變換過程如下,世界坐標[XW,YW,ZW]到相機坐標[XC,YC,ZC]的轉換關系為式(9)

式中

用多項式逼近函數[19]時,一般認為多項式系數越高逼近效果就越好,但是當次數越來越高時,進行插值會出現龍格效應。為了使擬合效果更好,同時避免龍格效應,選擇分段多項式插值法。已知函數f(x)的分段線性插值函數IN(x)一般形式如式(14)

式中yi為函數f(x)在xi處對應的值。可以證明當節點加密時,分段線性插值函數與被插函數有很好的近似性。盡管分段插值函數可以很好地擬合被插函數,但是在節點處,插值函數一般不可導。為此,引入3次樣條插值。即使用3次樣條函數作為插值函數。3次樣條函數定義為:給定區間[a,b]的一個劃分Δ,如果函數s(x)滿足以下2個條件則s(x)稱為3次樣條函數。
1)s(x)在一個小區間[xj-1,xj](j=1,2,…,N)是一個3次多項式;
2)s(x)在整個區間上有連續二階連續導數。最小二乘法是通過最小化擬合函數與被擬合函數之間的誤差平方和尋找最佳擬合函數,即最小。
可以用2-范數的形式表示

‖·‖定義為2-范數,η(z)=‖b-Az‖2定義為誤差矢量[20]。可以證明,方程組的最小二乘解是唯一的,可以用式(16)的形式表示

采用12×9的黑白棋盤格為魚眼相機標定板,通過對標定圖像采集、棋盤格角點提取、以及基于C/C++語言結合Open CV 3.0編寫標定程序,最終得到魚眼相機參數。
實驗使用GoPro生產的HERO4 Black魚眼相機進行12次有效拍攝,并用文中所給的算法進行相機標定與影像校正。圖2為魚眼相機檢校模板原始影像,圖3為檢校模板角點檢測結果,表1為魚眼相機標定結果,包括內參數和鏡頭畸變系數。為測試檢校參數的準確度,對原始檢校模板影像進行校正恢復,結果如圖4所示。

圖2 原始魚眼圖像Fig.2 Original fisheye images

表1 圖像標定結果Table 1 Image calibration results
如圖4所示,針對某些校正圖像中出現“拉伸”的情況,主要原因是在進行拍攝時,標定板相對于相機是傾斜的,并不與相機光軸垂直,所以會出現近大遠小的情況,也就是“拉伸”的情況。相對于人的視覺情況而言,雖然感覺圖像存在“拉伸”,但根據透視原理,符合空間分布情況。
對于拍攝的照片,分別利用文中方法和傳統Kannala模型對魚眼相機進行標定,得到了不同模型計算出的相機的平移矩陣和旋轉矩陣,以此計算每張圖像的反投影誤差(表2),圖5為可視化的反投影誤差,可以看出:利用文中所給方法圖像的誤差有了明顯降低,總體平均誤差為0.012 417 1 pixel,與傳統Kannala模型的0.029 267 6 pixel相比,降低了0.016 850 5 pixel.

圖3 角點檢測結果Fig.3 Corner detection results

圖4 魚眼圖像校正效果Fig.4 Correction effect of fisheye image

表2 反投影誤差分析Table 2 Analysis of back projection error
為進一步驗證文中標定方法及所得相機參數的有效性,基于多視圖立體視覺對影像目標進行三維重建并與無相機檢校參數三維重建進行比較,圖6為利用檢校獲得內參數和畸變系數對原圖像進行校正比較,圖7,圖8分別為采用多視圖立體技術將SFM產生的稀疏點云稠密化過程中的影像特征提取與匹配以及點云重建。圖9分別為無相機參數及有相機參數三維重建比較。如圖9所示,當加入相機參數和畸變系數之后,明顯改善了圖像扭曲的問題,顯示的紋理特征比較全面,得到的三維模型更加真實。

圖5 反投影誤差Fig.5 Back-project errors

圖6 原始圖像與校正圖像Fig.6 Original image and corrected images

圖7 特征提取與匹配Fig.7 Feature extraction and matching

圖8 點云重建Fig.8 Point cloud reconstruction

圖9 三維模型Fig.9 Three-dimensional model
1)在研究Kannala提出的基于多項式的魚眼相機成像模型(Kannala模型)的基礎上,建立分段多項式逼近模型對其進行了優化改進。
2)通過設計標定板,使用GoPro生產的HERO4 Black魚眼相機進行拍攝,利用C/C++語言結合Open CV 3.0編寫標定程序,得到相機的內參數和畸變系數,并用其校正原始圖像。
3)利用反投影誤差定量分析傳統Kannala模型和文中算法的相機標定的計算效果。對原始圖像和校正圖像結合運動恢復結構(SFM)進行特征提取和立體匹配,獲得加密的三維點云。根據Meshlab對加密的三維點云進行網格化處理,分別獲得原始圖像和校正圖像的多視圖立體視覺三維重建模型,定性分析文中算法的優越性。