標定原理及過程整理
1. 原理
攝像機標定是指由已知特徵點的影象座標求解攝像機模型引數的過程。在假設鏡頭無畸變的情況下可以將攝像頭通過鏡頭成像看作針孔模型,如圖1所示。
圖1 針孔模型
可得到世界座標系表示的P(Xc , Yc, Zc)點座標與其投影點p(x , y)的座標(u , v)的關係如下:
其中, , ,M1只與攝像機內部結構有關,為攝像機內部引數;M2為攝像機外部引數(R為旋轉矩陣,T為平移矩陣),確定攝像機內外引數的過程稱為攝像機標定。
攝像機採用透鏡會引入畸變,主要有徑向畸變和切向畸變,k1、k2、p1、p2。
2. 方法
攝像機標定一般需要在攝像機前放置一個特定的參照物,如圖2所示。攝像機獲取該物體的影象,標定參照物上的每一個特徵點相對於世界座標系的位置在製作時已精確測定,在得到這些已知點在影象上的投影位置後,可由公式(1)計算出攝像機內外引數。
圖2 標定參照物
相關計算(此處省略)得到當 時(其中,n為標定參照物上的已知點數,則有2n個關於M矩陣元素的線性方程),可由最小二乘法求出M矩陣,因此由空間6個以上的點與它們的影象座標點可求出M矩陣。
OpenCV函式庫中提供的攝像機標定方法是基於張正友的標定方法(採用平面棋盤格),是一種介於傳統標定法和自標定法之間的標定方法。OpenCV所提供的攝像機標定模組為使用者提供良好的介面,且執行速度塊,具有良好的跨平臺移植性,因此可以很好地應用於工程實際中。
實際中,選用平面的棋盤格標定板(繪製精度要高),平面標定板上的角點的Zw座標設為0,如圖3所示。通過自由移動攝像機或標定板使得攝像機至少要在3個不同位置(相對標定板)拍攝標定板影象。
圖3 棋盤格標定板
Ø 對標定用影象的要求:
1)在設定棋盤格角點數目時,應按照棋盤格的內角點數目進行設定。
2)基於opencv攝像機標定演算法採用張正友的標定方法,該演算法是基於2D模型的,如果棋盤格擺放的不平整,會造成很大的影響。
3)儘量選取多角度不同位姿拍攝的棋盤格影象,以確保提供足夠的資訊(理論需3幅以上),常見為10~20幅效果較佳。
4)標定板相對於攝像機的角度在45度左右較好,過大角度對角點提取的精度影響較大,太小角度不利於攝像機引數的精確標定。
5)理論上角點數大於6可求解出M矩陣,實際中應儘量採用有較多角點的棋盤格標定板,儘可能減少噪聲和其他不確定因素帶來的干擾。
6)所拍攝的標定用影象必須包含完整的標定板圖案,否則提取的角點數與設定的不符將導致角點提取失敗。
7)採集標定用影象必須清晰,影象尺寸以佔整幅影象尺寸的1/3~3/4為宜。
3. 標定流程
Ø 關鍵步驟包括:
1)初始化,為攝像機引數及所有影象的角點分配儲存空間。
2)讀取一幅影象並檢測角點。
3)細化角點座標並繪製提取到的角點。
4)對已經成功提取角點的影象,儲存角點在世界座標系下的座標值及在影象座標系下的亞畫素級座標值。
5)標定。
6)分析標定結果的誤差。
4. 結果驗證
可使用Matlab標定工具箱進行驗證,將其結果與本設計選用方法得到的結果進行比較。