将点云图像切成两半-Matlab

Cut a Point cloud image in two Halves- Matlab

我有一个 3D 点云图像(.ply 格式)。我需要将它从中心一分为二。尝试使用以下代码 select 只有一半的点云,但获得的随机点不是所需的点。使用以下逻辑 t 将点云分成一半(原始的 1/2)并将结果保存在新的点云中。既不能从中心正确切割云图像也不能将其保存在新云中。

  stepSize = 1;
  indices = 1:stepSize:(i1.Count)/2;
  pt = select(i1, indices);

我还检查了以下代码:

points3d = i1.Location;
points3d_1 = points3d(points3d(:, 1) < 100, :);
points3d_2 = points3d(points3d(:, 1) >= 100, :);
ptCloud1 = pointCloud(points3d_1);
ptCloud2 = pointCloud(points3d_2);
pcshow(ptCloud1);
figure
pcshow(ptCloud2);

两个片段都在做同样的事情,随机地划分了一部分,无论我在哪个范围内尝试

point3d(:,1)<range

第二个切片始终是完整的原始图像。切片图像还包含原始图像的背景,如下所示。如何只获取存储在新的 ptCloud1 和 ptCloud2 中的云区域。

如何获得切片的新点云。使用 MatalbR2014b

您需要查看点的坐标,而不仅仅是它们的索引。

假设 ptCloud 是您的 pointCloud 对象,并且您使用的是带有计算机视觉系统工具箱的 MATLAB R2015b 或更高版本。

>> points3d = ptCloud.Location;

以形式或 3 列矩阵为您提供点云点的 [X,Y,Z] 坐标。假设您想要沿 X 轴通过平面 X = 10 将点云切成两半。您可以按以下方式执行此操作:

points3d_1 = points3d(points3d(:, 1) < 10, :);
points3d_2 = points3d(points3d(:, 1) >= 10, :);
ptCloud1 = pointCloud(points3d_1);
ptCloud2 = pointCloud(points3d_2);