ARToolKitのtwoView その③ 特徴点の距離検出

|
長い時間上手くいかず悩んでいましたが、やっとそれらしい結果が出るようになりました。
前回の特徴物体の位置から、物体までの距離を求めます。

featureDist01.jpg   featureDist02.jpg  

featureDist03.jpg   featureDist04.jpg  


参考にしたのは、以下の動画です。



この方は、他にもARToolKitと物理演算を合わせたりと、かなり高度なことをやっています。





今回は、簡単な三角測量を用いて距離計算を行っています。
簡単なケースでは、2つのカメラの向きを平行にして、Y・Z座標の位置も同じにします。

ちなみに失敗していた理由は、VIEW_SCALEFACTORという値を考えていなかったからでした。
これは、ARToolKitの長さの単位から、OpenGLの単位へ変換するときに必要になります。

まだ誤差などがあるようなので、これから調整します。



--------- < 追記 > ---------

○08/05/29

誤差が安定してきたので、処理を大まかに説明。

前回(その②)の各カメラでの、特徴点のスクリーン座標系の位置を取得。
これを、透視投影変換の逆行列を使って、カメラ座標系の位置に変換。

また、その①で求めたカメラ間の変換行列から、カメラのX座標系での距離を取得しておく。

そこで、以下の計算を行う。
1.a = カメラ間のXの距離 / (カメラ1での特徴点のX座標 - カメラ2での特徴点のX座標)
2.カメラ1の特徴点の座標(カメラ座標系)をa倍する。
3.2の結果が、特徴点で示した物体の3次元空間上での座標(カメラ座標系)になる。
4.カメラ1で、マーカーからの変換行列の逆行列を計算しておく
5.2の結果に対し、4の逆行列をかけて、マーカー座標系での特徴物体の座標を計算する。
6.5に対し、VIEW_SCALEFACTORをかけて、OpenGLの長さの単位にする。


このようにして、出た座標を表示すると、最初のような画像になります。
画像では、[マーカー座標系の原点]から[特徴物体の真下]までの線と、そこから[特徴物体]までの線を描画しています。


○08/05/30

まだ微妙な誤差がありましたが、三角測量の倍数の計算で、
X値だけじゃなくY値も入れた距離で計算したら上手くいきました。

このブログ記事について

このページは、PipeRが2008年5月28日 19:51に書いたブログ記事です。

ひとつ前のブログ記事は「ARToolKitのFlash版があるようです」です。

次のブログ記事は「ARToolKitのtwoView その④ 色認識を用いたポインティングデバイス」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01a