首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Kinect V2 RGB和深度图像创建离线点云

从Kinect V2 RGB和深度图像创建离线点云
EN

Stack Overflow用户
提问于 2016-03-03 09:15:52
回答 1查看 1.3K关注 0票数 1

我使用Kinect SDK用Kinect V2捕获了一组保存的数据。数据以RGB图像、深度图像和彩色点云的形式出现。我用C#来做这个。

现在我想单独创建点云,只使用保存的颜色和深度图像,但在Matlab中。

pcfromkinect Matlab函数需要一个活动的Kinect。但是我想要生成没有连接Kinect的点云。

请告诉我。

我发现了以下相关问题,但都没有明确的线索。

EN

回答 1

Stack Overflow用户

发布于 2016-06-06 08:05:58

我对我的申请也做了同样的工作。下面简要概述一下我所做的工作:

保存数据(C#/Kinect SDK):

如何保存深度图像:

代码语言:javascript
复制
    MultiSourceFrame mSF = (MultiSourceFrame)reference;
    var frame = mSF.DepthFrameReference.AcquireFrame();

    if (frame != null )
    {
        using (KinectBuffer depthBuffer = frame.LockImageBuffer())
        {
            Marshal.Copy(depthBuffer.UnderlyingBuffer, targetBuffer,0, DEPTH_IMAGESIZE);
        }

        frame.Dispose();
 }

将缓冲区写入文件:

代码语言:javascript
复制
File.WriteAllBytes(filePath + fileName, targetBuffer.Buffer);

为了快速保存,请考虑一个环形缓冲器。

ReadIn ReadIn data (Matlab)

如何获得z_data:

代码语言:javascript
复制
fid = fopen(fileNameImage,'r');
img= fread(fid[IMAGE_WIDTH*IMAGE_HEIGHT,1],'uint16');
fclose(fid);
img= reshape(img,IMAGE_WIDTH,MAGE_HEIGHT);

如何获得XYZ-数据:

为此,请考虑针孔模型公式,将uv坐标转换为xyz (公式)。

要获得摄像头K,您需要校准您的相机(matlab校准应用程序)或从Kinect-SDK (var cI= kinectSensor.CoordinateMapper.GetDepthCameraIntrinsics();)获取摄影师参数。

coordinateMapper 和SDK

从Kinect SDK直接获取XYZ的方法非常容易。为此,这个链接可以帮助你。只需通过kinect sdk获取缓冲区,并将带有rawData的coordinateMapper转换为xyz即可。然后将其保存到csv或txt中,便于在matlab中读取。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35767794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档