0

画面の固定高さ (画面の 2/3) にスケーリングされたスケルトンがあり、そのスケルトンに一致するように (背景の減算を使用して) 画像をスケーリングしたいと考えています。以下のこのメソッドを使用して、画面内の固定高さを取得するためのターゲット距離を見つけます (ユーザーがどれだけ離れているか近くにあるかに関係なく)。次に、垂直方向の移動を計算して、足の関節が下部にあるスケルトンを取得します。画像。

void KinectClass::ScaleJoints(){

//Target Height in screen

double targetAdultHeightScreen = windowHeight*5/6;

double originalAdultDistance = players[0].hipCenter.z;

// Original Height in Screen
originalHeightScreenAdult = SkeletonToScreen(players[0].rightFoot, windowWidth, windowHeight).y - SkeletonToScreen(players[0].head, windowWidth, windowHeight).y;

// Target distance to get target height
AdultscaleDistance = originalHeightScreenAdult * originalAdultDistance/ targetAdultHeightScreen;

//New headJoint scaled to compute vertical translation
Vector4 headJointAdult = {players[0].head.x  ,players[0].head.y , AdultscaleDistance,players[0].head.w};

//Vertical translation
transAdult = windowHeight/6 - SkeletonToScreen(headJointAdult, windowWidth, windowHeight).y;

scaleRatioAdult = originalHeightScreenAdult/targetAdultHeightScreen;

}

このようなもの:

スケーリングされたスケルトン

ここで、ビットマップ イメージをスケーリングする必要があります (現在は画面のサイズになっています)。スケルトンがイメージと一致するようにします。

D2D1_SIZE_F screenSize = renderTarget_->GetSize();
//D2D1_RECT_F rec = D2D1::RectF(0,  0, screenSize.width, screenSize.height);

問題は、ユーザーだけでなくシーン全体 (kinect のカラー ストリーム) を持つスケルトンに合わせて画像をスケーリングする必要があることです。

そのビットマップにどの変換を適用する必要がありますか?

4

1 に答える 1

0

このような変換の鍵は、スケルトン ジョイントごとに次のマッピング関数を使用することです。

public ColorImagePoint MapSkeletonPointToColorPoint(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);

すべてのジョイントをカラー プレーンに変換したら、カラー ビットマップに対して任意のスケーリングを実行でき、変換されたスケルトン カラー ポイントに対してまったく同じスケーリングを実行できます。

于 2014-05-27T11:43:15.653 に答える