首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将点云图像切成两半- Matlab

将点云图像切成两半- Matlab
EN

Stack Overflow用户
提问于 2015-12-21 18:01:13
回答 1查看 1.1K关注 0票数 0

我有一个三维点云图像(.ply format)。我需要把它从中间切成两个。尝试使用下面的代码只选择点云的一半,但随机点不是所需的。使用下面的逻辑t将点云分成两部分(原的1/2),并将结果保存在新的点云中。既不能从中心正确分割云图像,也不能将其保存在新云中。

代码语言:javascript
运行
复制
  stepSize = 1;
  indices = 1:stepSize:(i1.Count)/2;
  pt = select(i1, indices);

我还检查了以下代码:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 18:15:54

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

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

代码语言:javascript
运行
复制
>> points3d = ptCloud.Location;

给出你的点云点的X,Y,Z坐标,或者3列矩阵。假设你想沿着X轴将你的点云切成一个X= 10的平面,你可以这样做:

代码语言:javascript
运行
复制
points3d_1 = points3d(points3d(:, 1) < 10, :);
points3d_2 = points3d(points3d(:, 1) >= 10, :);
ptCloud1 = pointCloud(points3d_1);
ptCloud2 = pointCloud(points3d_2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34401728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档