将点云图像切成两半-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);
我有一个 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 中的云区域。
您需要查看点的坐标,而不仅仅是它们的索引。
假设 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);