PCL过滤器,“输入数据集不是来自投影设备”

时间:2016-01-06 11:13:11

标签: point-cloud-library ros openni

我使用Kinect构建3D云,当我尝试使用PCL的StatisticalOutlierRemoval或RadiusOutlierRemoval时,它说“输入数据集不是来自投影设备”,但是我的云看起来很投射。 这是我构建云的代码:

for (int i = 0; i < colNumber; i++)
    {
        if (data_d[i] != 0)
        {
            Zw = data_d[i] * (3.5-1.2) / 255 + 1.2;//kinect's range 1.2~3.5m
            Xw = (i - u0) * Zw / fx;
            Yw = (j - v0) * Zw / fy;
            cloud_a.points[cloud_index].x = Xw;
            cloud_a.points[cloud_index].y = Yw;
            cloud_a.points[cloud_index].z = Zw;
            cloud_a.points[cloud_index].r = data_c[3 * i + 2];
            cloud_a.points[cloud_index].g = data_c[3 * i + 1];
            cloud_a.points[cloud_index].b = data_c[3 * i];
            cloud_index++;
        }
        else
        {
            cout << "error point in cloud building" << endl;
        }
    }

我的云似乎是: cloud view 我已经工作了几个小时,仍然不知道如何解决它。 以下是对投影的描述:

  

可投影点云数据集是指向点云的名称,其根据有组织点云中的点的(u,v)索引与实际3D值之间的针孔相机模型具有相关性。这种相关性可以用最简单的形式表示为:u = f x / z和v = f y / z

非常感谢!!

1 个答案:

答案 0 :(得分:1)

我自己找到了原因,我对宽度和高度犯了错误。它应该与您在Kinect设备上找到的图像相同。