0

Kinect v2 カメラを使用して、矢状面における人間の骨格に関連する (x,y) 関節位置を実際に測定しました。ここで、Kinect v2 とスケルトンのモーション方向の間の角度を作成したいと思います (この図のように: http://www.mediafire.com/file/7wf8890ngnmi1d4/kinect.pdf )。

MATLAB を使用して、SpineBase の位置など、スケルトンの特定の結合に固定された座標に対する関節の位置を測定するにはどうすればよいですか??

それを行うために必要な変換は何ですか?

4

1 に答える 1

0

現在利用できる kinect はありませんが、これにどのように取り組むかについての理論は次のとおりです。

最初に、すでにさまざまなジョイント座標にアクセスできるように見えるので、次のような sth があります。

if (body.IsTracked)
{
    Joint spineMid = body.Joints[JointType.SpineMid];
    float x = spineMid.Position.X;
    float y = spineMid.Position.Y;
    float z = spineMid.Position.Z;
}

これにより、x、y、z の spinMid ポイントが得られます。各フレームで、spineMid ポイントを最後のフレームの spinMid ポイントと比較します (その後、次のフレームでの比較のために保存します)。これらのポイントをP_newおよびP_oldと呼びましょう。方向ベクトルを取得するには、次のように 2 つを減算します。

p_dir = P_new - P_old

ここで、この方向ベクトルと、kinect 座標系で <0,0,1> である kinect のベクトル "out" の間の角度を取得する必要があります。ただし、図面を考えると、z_dir = <0,0,-1> を使用する必要があります。p_dirの単位ベクトルを使用して、それをp_dir_unitと呼びましょう。内積を使用してz_dirp_dir_unitの間の角度を取得できます。

theta = acos( z_dir * p_dir_unit )

x、z 平面の方向のみが必要な場合は、p_dirの y 値を 0 に設定し、そのベクトルから単位ベクトルを取得できます。p_dirの絶対的な長さから、ボディの動きの速さに関する情報も取得できます。

それが役立つことを願っています。

于 2016-10-05T19:50:03.780 に答える