最簡單的針孔相機模型標定方法,使用Matlab進行快速可視化相機標定,小白專用,超詳細

相機標定是機器視覺、SLAM等繞不開的環節,今天介紹一種最爲簡單的可視化標定方法。
  
  這篇文章只是講解如果標定,關於相機的標定原理,可以參考別的文章,這裏推薦一篇《【機器視覺】張氏法相機標定》

一. 準備工作

  1. 方格標定板一塊(實際上沒有也行);
  2. 已經安裝Matlab的電腦一臺(Matlab最低版本要求是R2013b,推薦使用最新版本R2019b);

注意:
1.如果你有正版Matlab賬號,或者你是學生,你可以使用網頁版的Matlab;
2.如果你電腦上沒有Matlab,而且你也沒有正版賬號,那麼你可以選擇這個網站提供的雲端Matlab,你只需要免費註冊個賬號,然後將圖片上傳雲端就可以按照如下方法進行標定。

二. 開始標定

1.第一步 打印標定板

如果你還沒有標定,那麼你需要打印一塊標定板出來,但是你放心,準備標定板的過程是非常簡單的。你先將我提供的標定板圖片下載——下載標定板(提取碼:5yun),然後打印出來,只要你保持圖片的橫縱比,打印成任何尺寸都可以,我推薦打印在A4紙上(如果你不方便打印,其實你也可以直接下載下來顯示在電腦屏幕上也是一樣的,也不需要固定大小,只要橫縱比不變就行)。打印之後的樣式,如下圖:
在這裏插入圖片描述

2. 拍攝包含標定板的圖片

使用將要被標定的相機,拍攝一些包含標定板的照片,根據我的經驗20到30張圖片已經夠了。當然圖片越多結果也會越準確,但是會多用一些時間。拍攝圖片的技巧是,要多個角度大範圍的去拍攝標定板,讓它成像在你相機屏幕的各個地方,大家可以參考我下面的拍攝方式。
注意: 拍攝照片時有幾點需要注意:標定板的擺放沒有要求,橫豎都行。但是拍照片時對相機的姿態有要求,你相機如果是最終橫着使用,那麼拍照片時相機也要橫着拍。至於這裏面的原因,可以參考我的另外一篇博客:《相機內參fx,fy,cx,cy的方向問題!》
在這裏插入圖片描述

3. 使用Matlab進行相機內參數標定

① 打開已經安裝好的Matlab軟件,菜單欄中依次點擊 App -> Camera Calibrator,如下圖:在這裏插入圖片描述
②在打開的Camera Calibrator工具中,依次點擊Add Image -> From File,如下圖:
在這裏插入圖片描述
③然後選擇你剛剛已經拍攝好的照片,點擊Open按鈕,如下圖:
在這裏插入圖片描述
④彈出的Checkboard Square Size窗口中,直接點擊OK按鈕,如下圖:
在這裏插入圖片描述
注意:藍色框中的數字是標定板一個小方格的邊長,這裏不用管它,數值對最終的標定結果影響不大。
⑤ 選擇相機模型,如果你使用的是普通的針孔相機模型,請選擇Standard,如果是魚眼相機,就選擇Fisheye,如下圖:
在這裏插入圖片描述
⑥ 然後選擇需要標定的參數。點擊Options選擇想要的畸變參數形式,然後點擊,Calibrate按鈕開始標定,如下圖:
注意: 在畸變參數中,徑向畸變是默認勾選2 Coefficients,也就是說徑向畸變只使用兩個係數,如果你不是很明白其中的道理,那你就用默認狀態;切向畸變是可選擇的,如果你需要切向畸變,請勾選Tangential Distortiorskew很少用到,它表示的是是單個像素x,y軸方向的夾角係數。在這裏插入圖片描述
⑦ 稍等一會,就能看到標定工具界面發生了變化,右邊多出來兩個窗口,紅框中表示的是每一張圖片投影產生的誤差是幾個像素,橫座標是圖片的序號,縱座標是誤差。綠色框中表示的是通過照片還原得到的拍攝角度。
在這裏插入圖片描述
⑧ 鼠標點擊紅框中圖標上的紅線,將它往下拉,拉到0.8以內就可以了,那些誤差大的照片就會被選中,如下圖:
在這裏插入圖片描述
⑨ 上一步拉動紅線被選中的圖片,會在標定工具左側窗口中選中,藍色狀態的圖片就是誤差較大的圖片,如下圖:
在這裏插入圖片描述
⑩ 在任意一張被選中的圖片上,單擊右鍵,選擇Remove and Recalibrate刪掉這些圖片,然後就會自動重新標定,如下圖:
在這裏插入圖片描述
⑪等待標定完成之後,依次點擊Export Camera Parameters -> OK,將標定結果輸出到Matlab命令行中,如下圖:
在這裏插入圖片描述
⑫關閉相機標定工具頁面,在Matlab主界面命令行中,可以看到最終的標定結果,如下圖:
在這裏插入圖片描述

三. 參數介紹:

相機的內參矩陣:
K=[fx0cx0fycy001] K = \left[ \begin{matrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{matrix} \right] 其中 FocalLength分別對應fxfxfyf_y
   PrincipalPoint:分別對應cxc_xcyc_y
  
  相機的徑向畸變公式xdistorted=x(1+k1r2+k2r4+k3r6)x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)ydistorted=y(1+k1r2+k2r4+k3r6)y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6)其中RadialDistortion分別對應k1k_1k2k_2
  
  相機的切向畸變公式xdistorted=x+2p1xy+p2(r2+2x2)x_{distorted} = x+2p_1xy+p_2(r^2+2x^2) ydistorted=y+p1(r2+2y2)+2p2xyy_{distorted} = y+p_1(r^2+2y^2)+2p_2xy其中TangentialDistortion分別對應p1p_1p2p_2

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