Computer vision 如何将Kinect rgb和深度图像转换为真实世界坐标xyz?
我最近使用kinect查找一些标记的距离,所以我一直在将kinect rgb和深度图像(以像素为单位)转换为现实世界坐标xyz(以米为单位) 请注意,在Kinect SDK 1.8(Kinect 1)中,无法从RGB图像空间转换到世界空间:只能从深度图像空间转换到世界空间。其他可能的转换为:Computer vision 如何将Kinect rgb和深度图像转换为真实世界坐标xyz?,computer-vision,kinect,matlab-cvst,Computer Vision,Kinect,Matlab Cvst,我最近使用kinect查找一些标记的距离,所以我一直在将kinect rgb和深度图像(以像素为单位)转换为现实世界坐标xyz(以米为单位) 请注意,在Kinect SDK 1.8(Kinect 1)中,无法从RGB图像空间转换到世界空间:只能从深度图像空间转换到世界空间。其他可能的转换为: 深度->RGB 世界->深度 世界->RGB 因此,要转换,您需要使用SDK中包含的坐标映射器(我假设您使用的是Microsoft SDK,而不是OpenNI、AS3NUI或Ephoriani)。以下是
- 深度->RGB
- 世界->深度
- 世界->RGB
\u sensor.CoordinateMapper.MapCameraPointToColor空间(世界坐标);
此示例为Kinect SDK 2.0的C#格式。要查看SDK 1.8的另一个示例,以及关于坐标映射器使用的简短讨论,您可以查看以下文章:
要将RGB图像空间转换为世界坐标空间(仅适用于Kinect 2和SDK 2.0),可以使用:
\u sensor.CoordinateMapper.MapColorFrameToCameraSpace(depthFrame,resultArray);
您必须传递整个深度帧(不是颜色帧!!)和一个数组,它将返回每个颜色帧像素的世界坐标。当然,该数组必须足够大,以包含所有点(最大分辨率下1920*1080=2 073 600个条目),然后使用简单公式找到点的坐标:
worldcordinate=resultArray[imageCoordinate.Y*rgbImageWidth+imageCoordinate.X];
您可以使用MATLAB计算机视觉系统工具箱中的函数