相機標定中各種標定板介紹以及優缺點分析

作者:Jakob W

編譯:ronghuaiyang(AI 公園)

導讀

各種標定板的解釋和分析。

準確標定像機對於所有的機器/計算機視覺的成功應用都是非常重要的。然而,對於標定板,有不同的模式可供選擇。為了方便進行選擇,本文將解釋每種方法的主要好處。

相機標定中各種標定板介紹以及優缺點分析

標定板的選擇,有CharuCo,棋盤格,不對稱的圓和棋盤格。

標定板尺寸

在選擇標定板時,一個重要的考慮因素是它的物理尺寸。這最終關係到最終應用的測量視場(FOV)。這是因為相機需要聚焦在特定的距離上標定。改變焦距長度會輕微地影響對焦距離,這會影響之前的標定。即使是光圈的改變通常也會對標定的有效性產生負面影響,這就是為什麼要避免改動它們。

為了精確的標定,當攝像機看到標定目標填充大部分影象時,攝像機模型最好是受到約束的。通俗來說,如果使用一個小的標定板,許多相機引數的組合可以解釋所觀察到的影象。根據經驗,當正面觀察時,標定板的面積至少應該是可用像素面積的一半。

標定板型別

多年來已經引入了不同的標定板,每種標定板都有獨特的屬性和好處。

要選擇正確的型別,首先要考慮使用哪種演算法和演算法實現。在OpenCV或MVTec Halcon等通用庫中,標定板有一定的自由度,它們有各自的優點和侷限性。

棋盤格

這是最流行、最常見的圖案設計。通常透過首先對攝像機影象進行二值化並找到四邊形(黑色的棋盤區域)來找到棋盤角點的候選點。過濾步驟只保留那些滿足特定大小標準的四邊形,並組織在一個規則的網格結構中,網格結構的尺寸與使用者指定的尺寸匹配。

在對標定板進行初步檢測後,可以以非常高的精度確定角點位置。這是因為角(數學上:鞍點)基本上是無限小的,因此在透視變換或鏡頭失真下是無偏的。

在OpenCV中,整個棋盤必須在所有影象中可見才能被檢測到。這通常使得從影象的邊緣獲取資訊變得困難。這些區域通常是很好的資訊來源,因為它們適當地約束了鏡頭失真模型。

在檢測出棋盤格後,

可以進行亞畫素細化,以找到具有亞畫素精度的鞍點

。這利用了給定角點位置周圍畫素的確切灰度值,並且精度比整數畫素位置所允許的精度要精確得多。

你可以檢視OpenCV棋盤檢測器的原始碼:https://github。com/opencv/opencv/blob/master/modules/calib3d/src/calibinit。cpp。關於棋盤格目標的一個重要細節是,為了保持旋轉不變,行數必須是偶數,列數必須是奇數,或者相反。例如,如果兩者都是偶數,則存在180度旋轉的歧義。對於單臺相機的校準,這不是一個問題,但如果相同的點需要由兩個或更多的相機識別(對於立體校準),這種模糊性必須不存在。這就是為什麼我們的標準棋盤目標都具有偶數/奇數行/列的屬性。

圓形網格

圓形網格也是一種流行且非常常見的校準目標設計,它基於圓形,或者是白色背景上的白色圓形,或者是白色背景上的黑色(黑色)圓形。在影象處理術語中,圓可以被檢測為影象中的“斑點”。在這些二元斑點區域上應用一些簡單的條件,如面積、圓度、凸度等,可以去除候選的壞特徵點。

在找到合適的候選物件後,再次利用特徵的規則結構對模式進行識別和過濾。圓的確定可以非常精確,因為可以使用圓外圍的所有畫素,減少了影象噪聲的影響。然而,與棋盤中的鞍點不同的是,在相機視角下,圓形被成像為橢圓。這種觀點可以透過影象校正來解釋。然而,未知的鏡頭畸變意味著圓不是完美的橢圓,這增加了一個小的偏置。然而,我們可以將畸變模型看作是分段線性的(服從透視變換/單應性),因此在大多數透鏡中,這種誤差非常小。

對稱圓網格和非對稱圓網格的一個重要區別是,對稱圓網格具有180度的模糊性,正如“棋盤”一節中所解釋的那樣。因此,對於立體校正,非對稱網格是必要的。否則,這兩種型別的效能都不會有太大的差別。

圓形網格檢測的OpenCV原始碼:https://github。com/opencv/opencv/blob/master/modules/calib3d/src/circlesgrid。cpp。

CharuCo

CharuCo標定板克服了傳統棋盤的一些限制。然而,它們的檢測演算法有點複雜。幸運的是,CharuCo檢測是OpenCVs contrib庫的一部分(從OpenCV 3。0。0開始),這使得整合這個高階方法非常容易。

CharuCo的主要優點是所有光檢查器欄位都是唯一編碼和可識別的。這意味著即使是部分遮擋或非理想的相機影象也可以用於校準。例如,強烈的環形光可能會對標定目標產生不均勻的光照(半鏡面反射區域),這將導致普通棋盤格檢測失敗。使用CharuCo,剩餘的(好的)鞍點檢測仍然可以使用。鞍點定位可以像棋盤一樣使用亞畫素檢測來細化。

對於接近影象角落的觀察區域,這是一個非常有用的屬性。由於目標的定位使得攝像機只能看到它的一部分,所以我們可以從攝像機影象的邊緣和角落收集資訊。這通常會帶來確定鏡頭失真引數時的非常好的魯棒性。因此,我們強烈推薦使用CharuCo標定板,OpenCV 3。x是可用的。

自然,CharuCo目標可以用於立體校準。在這種情況下,需要執行一些程式碼來找到在每個攝像頭中單獨檢測到的點,以及在兩個攝像頭中都檢測到的點(交點)。

英文原文:https://calib。io/blogs/knowledge-base/calibration-patterns-explained

本文僅做學術分享,如有侵權,請聯絡刪文。