摘要
在許多基于攝像機的應用中,需要通過幾何相機標定(GCC)找到入射光線和圖像像素之間的幾何關系,即投影模型。
為了提供實用的標定指南,本文調查和評估了現有的GCC工具,綜述涵蓋了這些工具中使用的攝像機模型、標定目標和算法,突出它們的特性以及GCC發展的趨勢,評估比較了六種基于目標的GCC工具,分別為BabelCalib、Basalt、Camodocal、Kalibr、MATLAB標定工具和基于OpenCV的ROS標定工具,使用了寬角和魚眼鏡頭描述的三種傳統投影模型的模擬和實際數據。
這些測試揭示了這些相機模型的優缺點,以及這些GCC工具的可重復性,根據調查和評估,還討論了GCC的未來研究方向。
主要貢獻
相機在從遙感、測繪、機器人技術到內窺鏡等一系列應用中都是不可或缺的。這些應用通常需要了解相機中真實世界點和它們在圖像中的幾何關系(圖1)。為了解決這種幾何映射問題,引入了幾何相機標定(GCC),作為計算機視覺、物聯網和機器人技術的交匯點之一,自20世紀70年代以來,GCC一直受到廣泛關注,并且至今仍然在積極研究,可能是由于各種應用需求不斷發展的推動。
圖1 幾何相機標定及評估工具 根據工作原理的不同,有傳統相機、深度相機、事件相機、熱像相機等。
根據視場角(AOV),相機可以粗略地分為傳統相機(通常《64°)、廣角相機(《100°)、魚眼相機和全景相機(≥ 180°),相鄰組之間存在模糊的邊界。傳統和廣角相機通常通過針孔模型(即透視模型)很好地表示。全景相機包括視場角≥ 180°的魚眼相機,以及由鏡頭和鏡子(“cata”表示鏡子反射,“dioptric”表示透鏡折射)組成的反射折射相機。還有由多個相機組成的相機架,通過拼接圖像實現較大的視場角。根據所有入射光線是否經過單個點,相機可以分為中心相機(具有單個有效視點,即光學中心)和非中心相機。中心相機包括傳統相機、視場角≤ 195°的魚眼相機,以及通過組合針孔相機和雙曲線、拋物線或橢圓鏡子構建的許多反射折射相機。非中心相機的實例包括使用球面鏡構建的反射折射相機。
目前已經提出了許多幾何相機模型,從幾十個參數的具體全局模型到數千個參數的通用局部模型不等。傳統的幾何相機模型是針對特定鏡頭類型量身定制的,通常由通常《100個參數的封閉形式函數表示。它們是全局模型,因為參數的變化會影響每個入射光線的投影。這些模型得到了現有標定工具和運動結構(SfM)軟件包的良好支持。相反,通用模型可以通過使用大量參數來建模廣泛范圍的相機,每個參數確定了局部區域內入射光線的投影,例如B樣條模型。已經開發了許多用于進行GCC的工具,每個工具都具有一組獨特的功能。它們通常以專有程序的形式提供,例如MATLAB中的相機標定器和Agisoft Metashape,或者是開源程序,例如Kalibr。就相似性而言,現有工具通常支持全局相機模型和一些平面目標的標定。值得注意的是,許多工具都基于相同的基礎包,例如OpenCV,因此它們往往具有類似的限制。
總的來說,目前缺乏對現有GCC工具的定性概述和定量比較,以闡明選擇適當的相機模型和標定工具,為了填補這一空白,我們從幾個實踐角度廣泛審查了現有的GCC工具,并使用模擬和真實數據對幾個流行的工具進行了基準測試。為了限制范圍并迎合廣大讀者,本文重點關注傳統的近距離灰度或彩色單目相機,因為我們認為它們是受到積極研究的,并且它們的標定方法通常可以適應其他類型的相機。
本文的貢獻總結如下:首先,本綜述將GCC工具中使用的相機模型、標定目標和標定算法進行了分類,為這些方面提供了簡明的參考。然后從定性上揭示了這些標定工具的優勢和相似之處,希望能夠避免未來的重復開發工作。其次,通過模擬和實際數據測試,在不同視場角的內部相機上對六種標定工具進行了評估,以展示它們的準確性和可重復性。該評估清楚地顯示了三種流行的全局幾何相機模型的優勢和劣勢,并指出了哪種標定工具適用于近距離應用。第三,基于審查和評估,我們強調了GCC的未來研究方向。
內容概述
2.1 相機標定組件
相機標定過程中涉及的一些關鍵概念和定義,其中包括:
· 焦距(Focal Length):被定義為相機光學中心與傳感器之間的距離,對于中心相機而言,焦距是一個重要參數。
· 主光軸/光學軸(Principal/Optical Axis):被定義為通過光學中心并垂直于傳感器芯片的線,是相機成像的中心線。
· 圖像平面(Image Plane):對于針孔相機而言,傳感器經常被倒置并放置在光學中心的前方,形成成像平面。
· 鏡面軸(Mirror Axis):對于反射折射相機,指的是鏡子的對稱軸。
· 視場角(Angle of View,AOV):是進入鏡頭的光線形成的最大角度,對于相機而言,是指與傳感器曝光像素對應的光線形成的最大角度,通常分為水平視場角、垂直視場角和對角視場角。
2.2 相機模型
這里描述了在近距離應用中使用的各種相機模型,這些模型已經在本文調查的幾何相機標定工具中采用。用于遙感的相機模型,例如仿射相機模型 、RPC模型、檢測器方向模型。我們從中心相機的全局模型開始,這些模型主導了幾何相機標定工具,最后介紹通用模型。這些全局模型通常以(正向)投影方式定義,即給定世界點或射線,制定圖像點,盡管相同的公式也可以反過來使用,即給定圖像點得到射線,即反向投影/反向投影/反投影,然而,對于局部模型,反向投影通常用于表達相機模型,因為正向投影可能非常復雜。對于下面在圖3中列出的相機模型,除非兩者都是閉合的形式,我們描述正向模型或反向模型,理解到進行反向操作通常需要迭代優化。
圖2 相機模型 寬角相機的全局模型:通常和寬角相機的AOV 《100°,通常畸變很小,并且很好地符合針孔模型。
全局魚眼相機模型:魚眼相機通常具有AOV ≥ 100°,可以達到280°。它們非常常見,但是顯示出很大的畸變,因此提出了相當多的全局模型。最流行的可能是KB模型和FOV模型。
全局全景相機模型:全景相機的HAOV ≥ 180°,DAOV可達360°。已經為這樣的相機開發了幾種模型。
局部通用相機模型:前述的全局相機模型可能在各種幾何相機標定工具中都可用,可能是因為它們簡單,但是它們的準確性也受到限制。為了推動準確度的極限,提出了具有數千個參數的通用模型,但籠統地說,它們在幾何相機標定工具中的可用性以及下游應用的支持方面仍然落后于全局模型。
2.3 標定板
幾何相機標定通常依賴于被動或主動的人工對象,例如遙感中的地面控制點或近距離標定中的平面目標。最近的自動標定方法,利用機遇性的環境特征,而基礎設施為基礎的方法則使用先前對環境的地標地圖。由于人工目標仍然普遍用于更好的準確度控制,因此本節調查了幾何相機標定工具支持的目標,如圖4所列。
圖3 用于幾何攝影機校準的目標類別 棋盤格:棋盤格是最常見的標定目標之一,通常由黑白交替的方塊組成。檢測棋盤格的角點可以通過在圖像中找到黑白方塊的交界處來完成。棋盤格的一個缺點是需要保證所有角點在圖像中完全可見,以便準確確定其坐標。通常為了避免在180°旋轉后看起來相同,會采用奇數行偶數列或偶數行奇數列的布局。
圓形網格:圓形網格通常由圓心對稱或不對稱分布的圓組成。檢測圓形網格的目標點可以通過圓心的幾何特征,如面積、圓形度等來實現。但圓形網格的缺點是要求圖像中所有的圓都必須是可見的,并且由于透視效應和鏡頭畸變,檢測到的圓心可能存在偏心誤差。
Charuco板:Charuco板是將棋盤格與Aruco標記結合起來的標定目標。它利用棋盤格的方便檢測與Aruco標記的唯一性,來應對不準確的角點位置和遮擋的情況。
AprilGrid:AprilGrid是一種由AprilTag標記組成的數組,標記之間由黑色方塊連接。AprilGrid具有抗遮擋能力,并且其角點位置準確,因為角點被兩個黑色方塊包圍。
Deltille網格:Deltille網格是由交替顏色填充的相鄰正三角形組成的圖案。相較于棋盤格,Deltille網格的優點是角點密度更高、角點位置更精確。但它的廣泛應用受到了現有標定工具接口調整的限制。
圖4 標定板:(a) 8×11 棋盤格,(b) 8×11 圓形網格,(c) 8×11 非對稱圓形網格,(d) 8×11 Charuco,(e) 7×10 AprilGrid,(f) 10×11 Deltille
2.4 標定算法
傳統幾何方法和基于學習的方法:傳統幾何方法以及基于學習的方法是幾何相機標定算法的兩大類別。傳統幾何方法通常具有較高的解釋性和精度,而基于學習的方法則更加靈活和魯棒。
標定目標類型:根據標定目標的類型,幾何相機標定算法可以分為三類:基于人工目標、基于映射自然場景以及無目標的自標定算法。基于人工目標的方法是最常見和廣泛支持的,通常包括線性初始化和迭代非線性精細化兩個階段。基于映射自然場景的方法需要進行準確的三維重建,并提供相機的粗略內在參數值。自標定算法通過觀察機會性地標記進行標定,包括遞歸精細化方法、僅恢復相機內在參數的方法以及恢復結構、運動和相機內在參數的方法。
算法示例:傳統幾何方法的示例包括DLT方法以及迭代精細化方法。基于學習的方法通常更加靈活和魯棒,但也可能更加復雜。自標定算法通常利用捆綁調整,因此具有更高的準確性,常用于結構從運動軟件包中。
2.5 標定工具
這一部分審查了用于幾何相機標定(GCC)的工具,這些工具主要實現了使用人工目標或無目標捆綁調整的算法,幾個基于學習的GCC工具也被引用作為這個活躍研究領域的示例。
1)BabelCalib是一款單目相機標定工具,采用反投影模型作為各種相機模型的代理,支持多種相機模型,處理異常值的方式是使用Huber損失。
2)Basalt是一個能夠進行單目相機標定的軟件包,支持多種相機模型,采用Levenberg-Marquardt算法進行標定,處理異常值的方式也是使用Huber損失。
3)calio.io是一款商業標定工具,具備直觀的圖形用戶界面,支持多種相機模型和標定目標,處理異常值的方式也是使用Huber損失。
4)Camodocal是一個支持單目和立體GCC的軟件包,采用Cauchy損失處理異常值,對標定目標相對容易擴展。
5)Kalibr是一個流行的GCC工具,可以選擇信息豐富的圖像進行標定,支持多種投影和畸變模型,處理異常值的方式是移除超過一定閾值的重投影誤差的角點。
6)MATLAB相機標定器支持單目和立體相機標定,擁有易于跟隨的GUI和許多可視化功能,支持多種標定目標,處理異常值的方式是使用Huber損失。
7)ROS相機標定工具
· 介紹了OpenCV庫提供的相機標定函數,包括用于單目和立體相機的針孔理性徑向切向模型、魚眼相機的KB-8模型以及全向相機的Mei模型。
· 指出了OpenCV中全向模塊的功能,支持多相機設置,并可看作是對MATLAB工具的重新實現。
· 強調了OpenCV中KB-8模型的局限性,不支持非正深度點。
· 描述了ROS相機標定器的特點,是對OpenCV標定函數的簡單包裝,支持交互式和批處理模式,并提供對棋盤格、圓格和Charuco板的支持。
· 提及了基于OpenCV的其他程序,包括MRPT相機標定器,后者擴展了棋盤格檢測以支持多個棋盤格。
8)自標定工具與SfM:
· 介紹了自標定工具通常基于SfM流水線實現,在商業軟件或開源程序中都有代表性。
· 概述了幾個專業攝影測量軟件,如Agisoft的Metashape、PhotoModeler和Pix4D mapper,它們支持自標定,并提供了不同的相機模型和標定方法。
· 提及了流行的開源SfM軟件包,如colmap和最近的SCNeRF,它們也支持相機自標定,提供了不同的相機模型和標定算法。
總結
鑒于不斷發展的GCC,我們從相機模型、校準目標和算法的角度對最近的GCC工具進行了調查,概述了這些工具的優勢和局限性。我們還評估了六種知名的校準工具,包括BabelCalib、Basalt、Camodocal、Kalibr、MATLAB校準器和基于OpenCV的ROS校準器,以研究它們在模擬和真實數據上的一致性和重復性。從回顧和實驗中,我們總結了幾個發現:
1)異常值處理對于基于優化的相機校準工具至關重要。這些異常值通常是檢測到的角點與其實際圖像位置相差幾個像素,在某種程度上模糊的圖像中經常發生。幸運的是,大多數GCC工具都可以處理異常值。
2)GCC工具Camodocal、Kalibr和MATLAB校準器很好地支持針孔徑徑向切向模型。BabelCalib和Camodocal很好地支持KB-8模型,而TartanCalib則針對DAOV 《 180?的相機很好地支持KB-8模型。Camodocal、TartanCalib和OpenCV很好地支持Mei模型,但該模型存在參數不穩定性和冗余性。此外,針孔徑徑向切向模型對于DAOV 》 100?的相機可能不足夠。在需要獲得全局相機模型時,KB-8模型通常更受歡迎,因為它在大DAOV的相機上具有廣泛的支持和良好的準確性。
基于這項研究指出了幾個未來的研究方向:
1)交互式校準:眾所周知,優質的數據和信息性的數據對于GCC至關重要。圖像模糊可能是由于快速運動或對焦不足引起的,數據不足是另一個問題。確保數據質量和信息的一種方法是交互式校準,它提供了質量檢查,選擇了優質數據,并實時給出下一步建議,無論是基于目標還是無目標的校準。AprilCal是一種用于基于目標的校準的工具。
2)靜態校準:基于目標的校準通常涉及不可重復的繁重移動,可以通過至少兩種方式來避免,即使用程序化機器人手臂進行校準和靜態校準。機器人手臂校準已在文獻中進行了研究。靜態校準通常依賴于主動目標。這方面的方法已經在文獻中開發出來,并具有應用特定的設置。我們認為靜態校準仍有很大的發展空間。
3)場景重建的標定:實驗室校準的設置通常與原位設置不同,例如,在對焦距離(景深)、曝光、拍攝模式(快照或視頻)、光圈和感興趣對象的大小上。已經有一些工作在減輕差異方面取得了進展。最終的解決方案將是自校準或基于先前地圖的校準。這些方法依賴于支持校準的重建引擎。一個基于傳統捆綁調整的引擎是colmap。
審核編輯:黃飛
評論
查看更多