常見的相機標定方式是張正友的棋盤格標定法,即用相機拍攝打印好的棋盤格圖圖像,將圖像傳入函數計算出相機的內參數據。
本文講解的是將相機直接連接電腦,用matlab的相機標定工具箱通過相機實時採集一定數量的棋盤格圖像,然後計算獲取相機內參。
實現:
Win10,64系統
matlab R2016a
後續用途:
(一)solvepnp 單目三維位姿估計--------理論
(二)solvepnp 單目三維位姿估計--------利用二維碼求解相機世界座標
Step1 打開相機標定工具箱
在《圖像處理和計算機視覺》欄 找到相機標定工具:
在彈出的上圖中點擊紅色下拉三角,選擇 “From camera” 即工具箱會讀取外接相機然後實時畫面獲取圖像。
如果此期間彈出錯誤,提示未安裝web camera的相應的包,那麼需要你額外安裝下對應的包;
安裝方式爲:
在主頁中選擇 “附加功能” 選擇 “Get Hardware support packages”
在網絡條件好的情況選擇網絡安裝,下一步;
查看支持安裝的所有包,找到USB Webcams 這個USB相機包 文件,點擊Next安裝。
如此,安裝了能夠讀取外部USB相機的包後,用matlab打開相機就不再出錯了。
Step 2 讀取相機開始採集圖像做標定
在上一步中 From camera後,正確連接相機的情況下,會出現下圖:
選擇待會用相機採集圖像後保存圖像的路徑;選擇每次採集圖像的間隔時間(默認5秒),選擇共採集多少張圖(默認20張);
選擇完畢後點擊Capture 進行採集;
使用方式是你可以將棋盤格打印出來後貼在牆上,拿着攝像頭從各個角度拍攝採集棋盤格圖像;或者你固定相機不動,將棋盤格固定在平坦物上,讓棋盤格動;我選擇前者。
選擇Capture後會彈出下圖,讓你填寫棋盤格網格實際物理尺寸(默認25mm),實際常用的網格圖大小也差不多,我的是26mm
開始採集圖像:
實際採集20張圖像後即停止採集,我 在選項中選擇了 3階徑向畸變係數,計算切向畸變係數。
只要你的重投影整體平均誤差小於0.5像素即可:
下圖是標定過程中以相機爲中心視角的外參情況:
下圖是以棋盤格爲中心視角的外參 情況:
Step 3 導出標定數據
我們可以導出得到相機的內參信息:
上圖劃紅線解釋依次爲:
徑向畸變係數(3階),切向畸變係數(2階),世界座標單位是mm,內參矩陣,焦距(分fx,fy),成像平面原點(理想情況是圖像寬高中心位置),成像平面原點座標(單位是像素);
獲取如上信息後則可以對相機做矯正,做PnP相機位姿估計啦~