我正在使用Windows Kinect SDK从传感器获取深度和RGB图像 .
由于深度图像和RGB图像没有对齐,我想找到一种方法将RGB图像的坐标转换为深度图像的坐标,因为我想在我从中获得的深度图像上使用图像蒙版 . 对RGB图像进行一些处理 .
已经有一种将深度坐标转换为颜色空间坐标的方法:
NuiImageGetColorPixelCoordinatesFromDepthPixel
不幸的是,反过来并不存在 . 在INUICoordinateMapper中只有一个神秘的调用:
HRESULT MapColorFrameToDepthFrame(
NUI_IMAGE_RESOLUTION eColorResolution,
NUI_IMAGE_RESOLUTION eDepthResolution,
DWORD cDepthPixels,
NUI_DEPTH_IMAGE_PIXEL *pDepthPixels,
DWORD cDepthPoints,
NUI_DEPTH_IMAGE_POINT *pDepthPoints
)
这种方法的工作原理并没有很好的记录 . 有没有人以前用过它?
我自己即将进行手动校准来计算变换矩阵,所以我很乐意找到解决方案 .
2 回答
感谢colristter horristic,我得到了一个msdn的链接,提供了一些有用的信息(还要感谢T. Chen在msdn上帮助了解API) . 从T. Chen的帖子中提取,这里是执行从RGB到深度坐标空间的映射的代码:
Note: 传感器需要初始化并锁定深度框架以使其工作 .
例如,可以如下查询变换后的坐标:
据我所知,
MapColorFrameToDepthFrame
有效地对RGB图像的每个像素进行坐标系转换,存储转换产生的深度图像坐标和输出NUI_DEPTH_IMAGE_POINT
数组中的结果深度值 . 该结构的定义如下:http://msdn.microsoft.com/en-us/library/nuiimagecamera.nui_depth_image_point.aspx可能这对你的需求来说太过分了,我不知道这种方法有多快 . XBOX Kinect开发人员可以非常快速地实现在GPU上以帧速率运行的该功能,Windows开发人员可能不会那么幸运!