0
我使用Kinect构建3D云时,当我尝试使用PCL的StatisticalOutlierRemoval或RadiusOutlierRemoval时,它说“输入数据集不是来自投影设备” ,但是我的云看起来很投射。 这里是我的构建云代码:PCL过滤器,“输入数据集不是来自投影设备”
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
非常感谢!