0

手と「プレイヤーの体」の間の距離を評価する必要があるアルゴリズムでこの情報を使用するために、Kinect センサーによって撮影されたシーンでプレイヤーの深度位置を推定したいと考えています。この場合、「プレーヤーの体」の概念は、プレーヤーの深さの位置を表す値に変換できます (それが私が探しているものです)。

明らかに、人は空間のボリュームを占めるため、シーン内のプレーヤーの正確な位置を定義することは不可能です。

私が知りたいのは、スケルトン データを使用して、人物のおおよその奥行き位置を計算するためのベスト プラクティスは何ですか?

次のコードで試しました:

Skeleton playerSkeleton = (from s in skeletonData where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault();

...

if (playerSkeleton != null)
{
    Joint head = playerSkeleton.Joints[JointType.Head];

    float averagePlayerPosition = head.Z;
}

上記の方法で、頭の深さを使用してプレーヤーの位置を定義しました。

これは良い選択ですか、それともより良いもの (例:スケルトンのいくつかの点の平均) はありますか? 私の選択が改善可能である場合、より良い代替案を正当化する参考文献はありますか?

4

2 に答える 2

0

お使いのSDK関数以外にも、SDK関数を使用して正確に情報を取得してください。

2D ジョイント表現を使用すると、深度ストリーム上の位置を計算して、これを使用できます。

int realDepth = depth[index] >> DepthImageFrame.PlayerIndexBitmaskWidth

次のリファレンスを参照してください。

于 2014-05-21T02:49:03.010 に答える