今日はカメラのキャリブレーションで使う、チェスボードパターン上に3軸を表示するプログラムを作成していました。
コードはまだ汚い状態なので、ひとまず流れだけ書いておきます。
最初に、カメラの内部定数を求めてファイルに保存しておきます。
そのあと、ファイルから内部定数を読み込み、各画像の特徴点(今回はチェスボードの頂点)をcvFindChessboardCornersを使って計算します。
次に、特徴点をさらに高精度化するために、cvFindCornerSubPixに渡します。
画像上の特徴点座標、カメラ内部定数(intrinsic,distortion)、物体上の特徴点座標がわかったので、次は移動ベクトルと回転ベクトルを計算しす。cvFindExtrinsicCameraParams2にまとめて放り込むと計算してくれます。
移動ベクトル(3x1)と回転ベクトル(3x1)が求まれば、あとは好きな座標(今回は物体上に表示したい軸)をcvProjectPoints2を使って変換すると、画像上のどこにくるかがわかります。
今回はcvProjectPoints2に任せてしまいましたが、行列の勉強のため、cvProjectPoints2を使わない方法でもやってみたいと思います。
ではまた。
0 件のコメント:
コメントを投稿