はじめに
本稿では、以下の様にCamera Calinrationプログラムの手法とInput Fileについて解説します。
- Source Code について、ひとこと…。
- Input Data Fileについて、ひとこと…。
それでは、参りましょう。
Source Code について、ひとこと…。
この Source Code は OpenCVパッケージ中のサンプルプログラムをそのまま引用しています。一部 Visual C++ 用に修正しています。サンプルプログラムは OpenCV 3.2.0 sample program を使用。
OpenCV 3.2.0 sample programは ”…//samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp” です。
変更点は2点のみ。1点目は「データの入力」方法の変更、2点目は「経過の表示」方法の変更ですね。
「データ入力」はコマンドプロンプトからの入力を止めて、入力データをテキストファイルから読み取る方法に変えました。下記のコマンドラインを書き換えています。
const string inputSettingsFile = argc > 1 ? argv[1] : “default.xml”;
このラインで inputSettingFile=”default.xml” と変更し、”default.xml” に記載の設定によりプログラムを実行します。この “default.xml” ファイルが Input Data File となります。
Input Data File のサンプルデータファイルは ”…//samples/cpp/tutorial_code/calib3d/camera_calibration/in_VID5.xml” です。
2点目の「経過の表示」には、 Windows でお馴染の “MessageBox” を使っています。事あるごとに経過のデータが表示出来て、便利ですネ。それと、”cout() Function” は Windows では使えませんから…。
Input Data Fileについて、ひとこと…。
先ず、Input Data は 校正に Chessboard Pattern の使用を前提として変更しています。この画像をネットで検索して、A4用紙いっぱいになる迄拡大して、印刷ました。下敷きに貼って使っています。カメラから 1 m位の所で、9 x 6 のマス目を使うのが丁度良くて、マス目の一辺の長さが 15.5 mmとなっています。以下のラインで設定していますので、参考にしてください。
マス目のサイズ <BoardSize_Width> 9</BoardSize_Width> <BoardSize_Height>6</BoardSize_Height>
マス目の一辺の長さ ( 単位は mm ) <Square_Size>15.5</Square_Size>
校正の画像パターン <Calibrate_Pattern>"CHESSBOARD"</Calibrate_Pattern>
校正に使う画像データの枚数 <Calibrate_NrOfFrameToUse>25</Calibrate_NrOfFrameToUse>
OUTPUTファイル名 <Write_outputFileName>"out_camera_data.xml"</Write_outputFileName>
まとめ
如何でしたか。本稿ではCamera Calinrationプログラムの手法について解説し、Input Fileを解説しました。最後までお読みいただき、ありがとうございました。