用matlab對相機進行標定獲取相機內參

常見的相機標定方式是張正友的棋盤格標定法,即用相機拍攝打印好的棋盤格圖圖像,將圖像傳入函數計算出相機的內參數據。

本文講解的是將相機直接連接電腦,用matlab的相機標定工具箱通過相機實時採集一定數量的棋盤格圖像,然後計算獲取相機內參。

 

實現:

Win10,64系統

matlab R2016a

 

後續用途:

(一)solvepnp 單目三維位姿估計--------理論

(二)solvepnp 單目三維位姿估計--------利用二維碼求解相機世界座標


Step1 打開相機標定工具箱

 1

 在《圖像處理和計算機視覺》欄 找到相機標定工具:

在彈出的上圖中點擊紅色下拉三角,選擇 “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相機位姿估計啦~ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章