1. 程式人生 > >【學習ARToolkit小記之三】 攝像頭標定(Camera Calibration)

【學習ARToolkit小記之三】 攝像頭標定(Camera Calibration)

本部分內容只用於個人的學習記錄與記錄,詳細內容請參考官方網站教程。

一、開發環境

1、作業系統:Windows 7(64位)

2、程式設計環境:Microsoft Visual Studio 2010

3、ARToolkit版本:ARToolKit-2.72.1

二、標定過程

1、簡介(Introduction)

ARToolkit程式預設的攝像機屬性儲存在攝像機引數檔案camera_para.dat中,每次程式執行時都會讀取檔案的資訊。而對於特定的攝像機,我們可以通過簡單的攝像頭標定技術產生單獨的引數檔案,當已知攝像頭引數,ARToolkit程式就可以在執行時自動矯正攝像頭畸變。

利用ARToolkit進行攝像頭標定的方法有兩種,一種是兩部標定法,另一種是一步標定法。其中兩部標定法相對複雜一點,但是精度會相對較高。

下面的兩部分將分別採用這兩種方法實現攝像頭的標定。

2、兩部標定法(Two StepCalibration)

1)標定板列印:patterns檔案下列印calib_cpara.pdf和calib_dist.pdf,按照實際尺寸列印,前者是間距40mm網格,後者是6*4間距也為40mm的圓形標定點。打印出來的標定紙平整的固定在硬紙板上,如圖一和圖二所示。


圖1 calib_cpara.pdf標定板


圖2 calib_dist.pdf標定板

攝像機內部引數包括影象中心點座標、鏡頭畸變引數和攝像機實際焦距,程式calib_dist用於測量影象中心點座標和鏡頭畸變引數,而程式calib_cparam用於測量攝像機實際焦距。這兩個程式儲存在bin資料夾下,其中原始檔儲存在utils資料夾下。下面首先需要執行calib_dist,然後執行calib_cparam,因為calib_cparam用到了calib_dist程式輸出的資料。

2)執行calib_dist:

a)執行calib_dist程式,使用圖2所示的calib_dist標定板;

b)點選滑鼠左鍵獲取第一幅影象,保證保定板上的所有點都在影象座標系中;

c)選取標定點:用滑鼠按照從左到右、從上到下的順序選取,選取時從標定點的左上角點選右鍵拉到右下角畫一個方框,將標定點框在中間即可。如下圖3、圖4所示:


圖3 獲取第一幅影象


圖4 選取標定點(從左到右,從上到下)

d)選定標定點的過程中可以使用滑鼠右鍵從新選定;

e)選定一幅影象結束之後,點選滑鼠左鍵重新獲取一幅影象,按照b)~d)重複操作,建議3~5幅影象(越多也好);

f)選取結束之後,點選滑鼠右鍵結束影象的選取,程式自動執行,並計算攝像頭影象中心和畸變引數,這需要一段時間,同時程式介面會動態顯示計算過程,如圖5所示。


圖5 影象中心和畸變引數計算過程

g)結束之後顯示計算結果,如圖6和圖7所示;


圖6 計算引數結果


圖7 影象結果顯示

h)檢視所有結果後,程式結束,此時第一步完成。

3)執行calib_cparam:

a)使用calib_cparam標定板(7條水平線,9條垂直線);

b)執行calib_cparam,按照提示輸入引數,其中用到了上一步計算出來的引數;

c)將標定板放在攝像頭前面,保證和攝像頭垂直;

d)點選滑鼠左鍵,獲取一幅影象,此時會出現一條白色的水平線,如圖8所示;


圖8 獲取影象

e)使用鍵盤上下方向鍵移動中間白線,左右方向鍵調整白線角度,使白線和標定板最上面水平線重合,按下Enter鍵;

f)重複e),繪製所有7條水平線,順序嚴格按照從上到下順序;

g)水平線繪製完成後開始繪製垂直線,方法和上面類似,結果如圖9所示;


圖9 繪製網格線

h)完成之後,移動標定板遠離攝像頭100mm,重新獲取影象,並重覆上述過程,知道結束5幅影象的繪製;

i)標定結果如圖10所示;


圖10 實際焦距標定結果

j)輸入檔名,儲存標定引數,標定結束。

k)如果需要修改網格大小和一定距離,可以參考calib_cparam_sub.c,修改如下程式碼即可:

inter_coord[k][j][i+7][0] = 40.0*i;
inter_coord[k][j][i+7][1] = 40.0*j;
inter_coord[k][j][i+7][2] = 100.0*k;
*loop_num = 5;

3、一步標定法(One Step Calibration)

一步標定法的方法和兩部標定法第一步的方法相同,只需執行calib_camera2即可。

calib_cparam2
Input the length between each markers: 40

-----------
Mouse Button
Left : Grab image.
Right : Quit.
-----------


標定結束之後,即獲得攝像頭的引數檔案,如果需要使用,只需要將檔名修改為camera_para.dat,並放在bin/Data資料夾下即可。