【问题标题】:Which point cloud library supports parsing from single 3d video stream?哪个点云库支持从单个 3D 视频流解析?
【发布时间】:2014-09-12 15:11:10
【问题描述】:

我有一个静态的(像移动的草一样有轻微的噪音)物体(比如雕像/纪念碑)。我有一个我控制的类似四轴飞行器的 ardrone。它向我发送单机 720p 流。任何 PCL 库都可以将该视频流转换为具有正确深度的点云吗?

【问题讨论】:

  • 看例如here 估计所需的工作量。

标签: opencv openframeworks point-cloud-library point-clouds


【解决方案1】:

我相信要创建点云,您需要彩色图像和深度图像(又名depth map)。您使用的相机需要能够构建深度图像,我相信这通常是使用红外光完成的。 Microsoft Kinect 是使用红外线构建深度图像的相机示例。

您可以查看 ofxKinect 示例以获取更多信息。它给出了一个从 kinect 生成的点云的例子。

【讨论】:

    【解决方案2】:

    从处理 SimpleOpenNI 库示例中获取点云很容易。

    以下是我为在处理中从 Kinect 获取点云而编写的代码:

    //Code for Getting Point Cloud
    
    import SimpleOpenNI.*;
    
    import processing.opengl.*;
    
    SimpleOpenNI kinect;
    
    void setup()
    {
    
      size( 1024, 768, OPENGL);
    
      kinect = new SimpleOpenNI( this );
    
      kinect.enableDepth();
    
    }
    
    void draw()
    {
    
      background( 0);
    
      kinect.update();
    
      //translate( width/2,  height/2, -1000);
    
      rotateX( radians(180));
    
     stroke(255);
    
      PVector[] depthPoints = kinect.depthMapRealWorld();
    
      //the program get stucked in the for loop it loops 307200 times and I don't have any points output
    
      for( int i = 0; i < depthPoints.length ; i+=5)
      {
    
        PVector currentPoint = depthPoints[i];
      if (currentPoint.z < 2000.0)
        {
          point(currentPoint.x,  currentPoint.y, currentPoint.z );
        //print("currentPoint :", currentPoint );
        }
      }
    
    }
    

    您可以让 Kinect 覆盖您的纪念碑。但是,如果您需要将 RGB 输出转换为深度数据,这是不可能的,因为 Kinect 将红外光投射到物体上以计算深度,而通过 Streamed 数据是不可能的。即使您使用带有 Kinect 的相机,也只能使用来自它的 RGB 流。对于深度,使用 Kinect 的传感器是您最好的选择。为了获得更好的效果,请使用新的 Kinect 版本 2。 干杯!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 2020-05-19
      • 1970-01-01
      • 2015-02-23
      • 2012-09-25
      • 1970-01-01
      • 2015-06-07
      • 2015-08-05
      相关资源
      最近更新 更多