如何缩放图像以使用Kinect匹配缩放的骨架

时间:2014-05-11 11:25:11

标签: image scale kinect kinect-sdk kinect-interaction

我有一个骨架在屏幕上缩放到固定高度(屏幕的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;

}

这样的事情:

Scaled Skeleton

现在我必须缩放位图图像(现在是屏幕的大小),以便我的骨架与图像匹配。

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

问题是现在我必须缩放图像以匹配不仅有用户而且还有整个场景的骨架(kinect的颜色流)。

我必须将哪些转换应用于该位图?

1 个答案:

答案 0 :(得分:0)

这种转换的关键是每个骨架关节使用以下映射函数:

public ColorImagePoint MapSkeletonPointToColorPoint(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);

将所有关节转换为颜色平面后,您可以在颜色位图上执行任何缩放,只需对转换后的骨架颜色点执行完全相同的缩放。