以前DIP課程有做過Camera calibration,這次因為用Gopro做Visual SLAM,所以又要撿一下校正的過程。主要還是張正友的方法。
OpenCV:
用OpenCV自帶的Sample:路徑
C:opencvsourcessamplescpp utorial_codecalib3dcamera_calibration
1)打印自製校正板,用相機從不同角度拍攝(理論上三次以上,實際上最好10張以上)。
2)圖片路徑寫到VID5.xml中
3)修改in_VID5.xml中的長寬角點數(圖中是8X6)、小格邊長(圖中28mm)、VID5.xml路徑、用於校正的圖片數、校正結果的存儲路徑output_data.xml
4)在camera_calibration.cpp的main函數中指定in_VID5.xml的位置,imshow後面可以加上一段code存下校正后的圖片(optional)
5)Run camera_calibration.cpp
6)結果:
經驗:圖片數量要夠,cover的區域要夠,剔除角度太大的圖片,否則會造成失敗。
另外,openCV sample中用的是remap,結果如上,現用
undistort(view,rview, cameraMatrix, distCoeffs);
代替remap,結果如下:
可見經過裁剪。
MATLAB:
同樣的原理,有交互界面,但是需要手動操作,所有細節都在主頁上http://www.vision.caltech.edu/bouguetj/calib_doc/index.html#examples