Kinect 深度图像格式

Kinect的深度图像有16bit,2byte,如图:

第15位:标志位,不用做深度计算

第14~3位:深度图像数据,即距离,以毫米为单位

第0~2位:深度图中人的ID(PlayerID)

 

深度图有两种格式:

FTIMAGEFORMAT_UINT16_D16     16位全表示深度数据,即距离,单位为毫米。不包含PlayerID。

FTIMAGEFORMAT_UINT16_D13P3    即为上边图中显示的格式,包含PlayerID。

 

Reference:

http://www.benbarbour.com/convert-kinect-depth-image-iftimage-to-opencv-iplimage/

https://msdn.microsoft.com/en-us/library/microsoft.kinect.facetracking.ftimageformat.aspx

转载于:https://www.cnblogs.com/asmer-stone/p/5464635.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MATLAB中实现Kinect深度图像的坐标转换,可以通过使用Kinect官方提供的软件开发包(SDK)来实现。 首先,确保已经安装并配置了Kinect的SDK。然后,打开MATLAB并创建一个新的脚本文件。 在脚本中,首先导入Kinect的SDK库文件,可以使用以下命令: ```matlab NET.addAssembly('Microsoft.Kinect'); ``` 接下来,创建一个Kinect对象,并初始化它,以便获取深度图像和相应的坐标信息。使用以下命令: ```matlab kinect = NuiSensor(); kinect.initialize(); ``` 然后,通过调用Kinect对象的`NuiSensor.DepthStream.Open()`方法来打开深度流。使用以下命令: ```matlab kinect.DepthStream.Open(); ``` 现在可以循环读取深度图像,通过调用`NuiSensor.DepthStream.GetNextFrame()`方法来获取新的深度帧。接着,通过调用`NuiSensor.CoordinateMapper.MapDepthFrameToSkeletonFrame()`方法将深度图像坐标转换为3D骨骼坐标。可以使用以下命令: ```matlab depthFrame = kinect.DepthStream.GetNextFrame(); skeletonFrame = kinect.CoordinateMapper.MapDepthFrameToSkeletonFrame(depthFrame); ``` 最后,可以通过遍历3D骨骼坐标并使用`NuiSensor.SkeletonEngine.GetNextFrame()`方法获取下一个骨骼帧,对应于深度图像中的坐标位置。可以使用以下命令: ```matlab skeletonFrame = kinect.SkeletonEngine.GetNextFrame(); skeletonData = skeletonFrame.SkeletonData; for i = 1:length(skeletonData) if skeletonData(i).IsTracked % 展示深度图像的坐标 depth_x = skeletonData(i).SkeletonPositions(1).X; depth_y = skeletonData(i).SkeletonPositions(1).Y; depth_z = skeletonData(i).SkeletonPositions(1).Z; end end ``` 通过以上步骤,就可以在MATLAB中实现Kinect深度图像的坐标转换,从而可以对深度图像进行分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值