博主在博客園的第一篇博客,以著名的張大牛標定法開始吧!
具體標定原理就不詳細說了,資料數不勝數,重點看張正友的原著《A Flexible New Technique for Camera Calibration》,搞明白這篇文章就足夠了。
好了,現在主要說一下標定過程,並附上博主自己調用Opencv接口編寫的代碼。
1.拍攝棋盤格圖片,8幅左右合適,文獻里說n=8時,最小二乘法計算內參有穩定解。所以我就拍了9幅。
2. 讀取棋盤格圖像,提取角點(注意:都是內角點)。為了提高角點提取精度,進一步進行亞像素角點的提取,附上亞像素角點提取后的棋盤格圖像。
3. 開始攝像機標定,opencv1.0 2.0版只有一種攝像機標定模型,就是普通的小孔成像模型,在cv::空間下。而從opencv3.0開始,新增了一種魚眼相機標定模型,在fisheye::空間下。兩種模型的主要區別在於像與物的投影關系不同,具體的文獻資料依然是數不勝數,這里就不贅述。根據opencv官方文檔的建議,在畸變程度較大的廣角鏡頭(比如:魚眼鏡頭)上進行攝像機標定和畸變校正,最好是用fisheye模型,該模型在圖像邊緣畸變程度很大的地方比普通相機模型的效果要好。
4. 對標定結果進行評價
5.保存標定結果,寫入txt文件,主要是內參(歸一化焦距,fx,fy; 光心坐標cx,cy;以及畸變系數k1,k2k3...)
好了,主要過程介紹完了,附上我放在碼雲上的源代碼連接:https://git.oschina.net/rxdj/camera-calibration.git。