【ARToolkit小記を学ぶ3】カメラ標定(Camera Calibration)

6882 ワード

ARToolkitを利用してカメラにARToolkitアプリを標定するにはまずしなければならないステップで、詳細は公式サイトのチュートリアルDocumentationのCalibrating your camera(http://www.hitl.washington.edu/artoolkit/documentation/usercalibration.htm).
カメラの標定を行う前にARToolkitの開発環境を構築する必要があり、具体的な内容は公式サイトのチュートリアルDocumentationのSetup ARToolkit(http://www.hitl.washington.edu/artoolkit/documentation/usersetup.htmここではWindows 7 64ビットオペレーティングシステムVS 2010を使用しています.チュートリアルの手順に従って、64ビットシステムでARToolkitを構成するといくつかの問題が発生します.本人のブログの最初の2つの内容を参照してください.http://blog.csdn.net/qingyang8513/article/details/45192677およびhttp://blog.csdn.net/qingyang8513/article/details/45195933)については,詳細な解決策が示されているが,以下は上記の内容が完了した後の実験である.
このセクションは個人の学習記録と記録にのみ使用されます.詳細は公式サイトのチュートリアルを参照してください.
一、開発環境
1、オペレーティングシステム:Windows 7(64ビット)
2、プログラミング環境:Microsoft Visual Studio 2010
3、ARToolkitバージョン:ARToolKit-2.72.1
二、標定過程
1、紹介(Introduction)
ARToolkitプログラムのデフォルトのカメラ属性はカメラパラメータファイルcamera_に保存されます.para.datでは,プログラム実行のたびにファイルの情報が読み出される.特定のカメラについては、簡単なカメラ標定技術で個別のパラメータファイルを生成することができ、カメラパラメータが知られている場合、ARToolkitプログラムは実行時にカメラ歪みを自動的に矯正することができます.
ARToolkitによるカメラ標定の方法は2つあり,1つは2部標定法,もう1つは1ステップ標定法である.このうち2つの標定法は比較的複雑であるが,精度は比較的高い.
次の2つの部分では、カメラの標定をそれぞれ2つの方法で実現します.
2、二部標定法(Two Step Calibration)
1)標定板印刷:patternsファイル下印刷calib_cpara.pdfとcalib_dist.pdfは、実寸法で印刷され、前者はピッチ40 mmメッシュ、後者は6*4ピッチも40 mmの円形標定点である.印刷された標定紙は、図1および図2に示すように、硬い板紙に平らに固定されている.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第1张图片
図1 calib_cpara.pdf標定板
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第2张图片
図2 calib_dist.pdf標定板
カメラ内部パラメータには、画像中心点座標、レンズ歪みパラメータ、カメラ実際の焦点距離、プログラムcalib_が含まれます.distは画像中心点座標とレンズ歪みパラメータを測定するために使用され、プログラムcalib_cparamはカメラの実際の焦点距離を測定するために使用される.この2つのプログラムはbinフォルダに保存され、ソースファイルはutilsフォルダに保存されます.まずcalib_を実行する必要があります.dist、calib_を実行しますcparam、calib_cparamはcalib_を使ったdistプログラムが出力するデータ.
2)運転calib_dist:
a)運転calib_distプログラムは、図2に示すcalib_を用いてdist標定板
b)マウスの左ボタンをクリックして最初の画像を取得し、保定板上のすべての点が画像座標系にあることを保証する.
c)標定点の選択:マウスで左から右、上から下の順に選択し、選択時に標定点の左上から右ボタンをクリックして右下に枠を描き、標定点枠を真ん中にすればよい.図3、図4に示すように:
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第3张图片
図3は、第1の画像を取得する
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第4张图片
図4標定点の選択(左から右、上から下)
d)標定点を選択する過程でマウスの右ボタンを使って新しく選択することができる.
e)1枚の画像を選択した後、マウスの左ボタンをクリックして再び1枚の画像を取得し、b)~d)に従って繰り返し操作し、3~5枚の画像(多ければ多いほど良い)を提案する.
f)選択が終了した後、マウスの右ボタンをクリックして画像の選択を終了し、プログラムが自動的に実行され、カメラ画像の中心と歪みパラメータが計算される.これには、図5に示すように、プログラムインタフェースに計算プロセスが動的に表示される.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第5张图片
図5画像中心と歪みパラメータ計算過程
g)終了後、図6及び図7に示すように計算結果を表示する.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第6张图片
図6計算パラメータ結果
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第7张图片
図7の画像結果表示
h)すべての結果を表示した後、プログラムは終了し、この時点で最初のステップが完了する.
3)運転calib_cparam:
a)calib_の使用cparam標定板(7本の水平線、9本の垂直線);
b)運転calib_cparamは、プロンプトに従ってパラメータを入力し、前のステップで計算したパラメータを使用します.
c)標定板をカメラの前に置いて、カメラと垂直であることを保証する.
d)マウスの左ボタンをクリックして画像を取得すると、図8に示すように白い水平線が現れる.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第8张图片
図8画像の取得
e)キーボード上下方向キーを使用して中間白線を移動し、左右方向キーで白線角度を調整し、白線と標定板の最上面の水平線を重ねてEnterキーを押す.
f)e)を繰り返し、7本の水平線をすべて描き、順番は上から下まで厳格に従う.
g)水平線の描画が完了した後、垂直線の描画を開始する方法は上記と同様であり、結果は図9に示す通りである.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第9张图片
図9グリッド線の描画
h)完了後、標定板をカメラから100 mm離れて移動し、画像を再取得し、上記の手順を繰り返し、5枚の画像の描画を終了することを知る.
i)標定結果を図10に示す.
【学习ARToolkit小记之三】 摄像头标定(Camera Calibration)_第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)
ステップスケーリングの方法は、2つの部分スケーリングの最初のステップの方法と同じで、calib_を実行するだけです.camera 2でいいです.
calib_cparam2
Input the length between each markers: 40

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

標定が終了すると、カメラのパラメータファイルが取得され、使用する必要がある場合は、ファイル名をcamera_に変更するだけです.para.datはbin/dataフォルダの下に置けばいいです.