2D Calibration

How it’s done: One Camera Calibration.

はじめに

本稿では、以下の様に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を解説しました。最後までお読みいただき、ありがとうございました。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です