Kinect:从颜色空间到世界坐标
Kinect: From Color Space to world coordinates
我正在使用kinect的rgb数据跟踪球。在此之后,我查找相应的深度数据。这两项工作都非常出色。现在我想要实际的x,y,z世界坐标(即骨架空间),而不是x_screen,y_screen和深度值。不幸的是,kinect sdk给出的方法(http://msdn.microsoft.com/en-us/library/hh973078.aspx)不要帮我。基本上我需要一个函数"NuiImageGetSkeletonCoordinatesFromColorPixel",但我不存在。所有的功能基本上都朝着相反的方向
我知道openNI可能可以做到这一点,但由于其他原因我不能使用它。
有没有一个函数可以为我做这件事,或者我必须自己做转换?如果我必须自己做,我该怎么做?我画了一张小图https://i.stack.imgur.com/vCl7X.png-你认为这样行吗?
检查CameraIntrinsics。
typedef struct _CameraIntrinsics
{
float FocalLengthX;
float FocalLengthY;
float PrincipalPointX;
float PrincipalPointY;
float RadialDistortionSecondOrder;
float RadialDistortionFourthOrder;
float RadialDistortionSixthOrder;
} CameraIntrinsics;
您可以从ICoordinateMapper::GetDepthCameraIntrinsics
获得它。
然后,对于深度空间中的每个像素(u,v,d)
,您可以通过以下操作获得世界空间中的坐标:
x = (u - principalPointX) / focalLengthX * d;
y = (v - principalPointY) / focalLengthY * d;
z = d;
对于颜色空间像素,您需要首先找到其关联的深度空间像素,应该使用ICoordinateMapper::MapCameraPointTodepthSpace
。由于并非所有颜色像素都有其相关的深度像素(1920x1080与512x424),因此无法获得全高清颜色点云。
相关文章:
- 在 OpenGL 中将笛卡尔世界坐标转换为球面局部坐标
- 如何在Openscenegraph中从二维鼠标点击的屏幕坐标点计算三维点(世界坐标)
- OpenGL屏幕坐标到世界坐标
- 将 2D 图像坐标转换为 z = 0 的 3D 世界坐标
- 计算世界坐标中z_far平面的顶点
- 如何将世界坐标转换为相机图像坐标
- 将 2D 屏幕坐标转换为 3D 世界坐标
- 如何获得世界坐标屏幕(DX11,C )的射线方向
- 在给定的世界坐标下修改网格上的纹理
- 相机外在矩阵到世界坐标
- 如何将像素坐标转换为世界坐标
- 图像点(像素)到真实世界坐标(米)
- 使用点云库将点云转换为世界坐标
- 鼠标世界坐标框2D
- 将 GL 模型视图矩阵转换为世界坐标
- 相机在世界坐标中的位置来自 cv::solvePnP
- 从模型矩阵或四元数中找到最终的世界坐标
- Kinect:从颜色空间到世界坐标
- c++ /OpenGL转换世界坐标到屏幕(2D)坐标
- 图形-从世界坐标确定TRIANGLE_FAN圆的半径和局部坐标