2017-06-29 16 views
-1

私は、下の画像に示すように、青いボール上の黒いマーカーを1つトレースするためにカメラを使用しています。マーカの位置に基づいてボールの回転角度を計算する

Blue ball with black marker

私は確実にボール画像の上にマーカーの位置を検出することができますが、マーカーの位置に基づいてボールの回転角度を計算する方法を を知っている必要があります。

マーカーが図のように中央にある場合、両方の角度は0度にする必要があります。図示のようにマーカーが左端で半分しか見えない場合、水平角は-90度でなければなりません。私は2次元画像からの角度を計算することが非線形であることを理解しています。エッジの近くではピクセルの動きが同じで、回転の変化は真ん中よりも大きくなりますが、式を思い付くことはできません。

答えて

0

垂直軸の周りの回転一般に

Phi = ArcSin((Marker.X - Center.X)/Radius) 

、あなたは半径1でボールマニピュレータの前面に2D座標(X0、Y0)と初期点を取得し、それを、TIのエンドポイントをドラッグすると(X1 、y1)、次に方向ベクトルを回転させます

d0 = (x0, y0, Sqrt(1 - x0^2 - y0^2)) 
to 
d1 = (x1, y1, Sqrt(1 - x1^2 - y1^2)) 

これらのベクトルはどうしたらいいですか?私はどのアプローチを回転のために使うのかに依存します

+0

私は垂直軸の周りの回転、ありがとう。私は同じことが水平軸にも適用できると思います。 2番目の部分についてはわかりませんが、x0、y0、x0、x1の範囲は何ですか?私は1-x0^2-y0^2はsqrtがうまくいくためには常に肯定的である必要があると思いますか? – superg

+0

はい、ちょうどXをYに変更します – MBo

+0

'Radius = 1 'の範囲は、xとyに対して' -1.1.1'、それよりも大きくない2乗の合計、z座標では '0..1 '私たちは前面半球しか見ることができません) – MBo

関連する問題