CloudSegment 点云切割
CropboxSegment算子用于对点云进行切割,包含 CropboxSegment 、PlaneSegment 、PassThroughSegment 、DiffSegment 、NNPDSegment 。
类型 | 功能 |
---|---|
立方体切割 | 裁剪框切割,根据输入的立方体区域对点云进行切割,需要结合 Emit-Cube 算子使用。 |
平面切割 | 平面点云切割。可以选取切割平面或者平面上/下的点云。 |
XYZ切割 | 切割坐标某个方向上一定距离的点云。 |
点轴切割 | 将点云的点在某一坐标轴上进行排序,以排序索引值的点为分界点进行分割。 |
差异切割 | 输入两个点云,切割两个点云中不同的部分。 |
NNPD切割 | 输入两个点云中,保留源点云在目标点云中缺失的部分。 |
立方体切割
将 CloudSegment 点云切割 类型
设置为 CropboxSegment ,用于裁剪框切割,根据输入的立方体区域对点云进行切割,需要结合 Emit - Cube 算子使用。
算子参数
模式/mode
:设置点云切割的方法,共有三种,分别为:点落在所有立方体中/intersection
:当输入单个 cube 时,切割 cube 框选的部分;当输入的是 cubes ,切割各个 cube 中相交的部分。点落在某一个立方体中/individual
:当多个 cube 切割同一块点云时,每个 cube 都对点云进行切割,输出的是点云列表。点落在所有立方体外outside_points
:切割没有被 cube 框选的点云。
点云/cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
点云列表/cloud_list
:设置过滤后点云列表在 3D 视图中的的可视化属性。值描述与点云
一致。
数据信号输入输出
输入:
点云
:数据类型:PointCloud
输入内容:点云数据
点云列表
:数据类型:PointCloudList
输入内容:点云列表数据
立方体
:数据类型:Cube
输入内容:立方体数据
立方体列表
:数据类型:CubeList
输入内容:立方体列表数据
输出:
点云
:数据类型:PointCloud
输出内容:切割后点云数据
cloud_list
:数据类型:PointCloudList
输出内容:切割后点云列表数据
功能演示
使用 CloudSegment 算子中立方体切割
切割加载点云中的 Cube 包裹住的部分。
步骤1:算子准备
添加 Trigger 、Load 、Emit 、CloudSegment 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → 点云
文件 →
→ 选择点云文件名( example_data/pointcloud/chessboard.pcd )
点云 →
可视 →
-2
设置 Emit 算子参数:
类型 → 立方体
坐标 → 0 0 0.7 0 0 0
宽度 → 1
高度 → 1
深度 → 0.5
立方体 →
可视
设置 CloudSegment 算子参数:
类型 → 立方体切割
模式 → 点落在所有立方体中
点云 →
可视 →
-2
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,左图为 Load 算子和 Emit 算子的可视化结果,右图为裁剪后的点云可视化结果。
平面切割
将 CloudSegment 点云切割 类型
设置为平面切割
,用于平面点云切割。可以选取切割平面或者平面上/下的点云。
算子参数
切割模式/segment_mode
:设置点云切割的方法。共有三种,分别为:点落在平面/ON_PLANE
:切割平面点云。点高于平面/ABOVE_PLANE
:切割坐标 z 轴正方向的点云。点低于平面/BELOW_PLANE
:切割坐标 z 轴反方向的点云。
取反/negative
:取反,配合 segmentation_mode 使用。否/False
:裁剪的点云按照实际方法进行切割。是/True
:裁剪的点云为除了选中切割面的所有点云。
距离阈值/distance_threshold
:点云切割的距离阈值。默认值:0.001 。单位:m。平面立方体宽度/plane_cube_width
:设置空间 cube 的宽度。取值范围:(0,+∞)。默认值:0.1 。单位:m。平面立方体高度/plane_cube_height
:设置空间 cube 的高度。取值范围:(0,+∞)。默认值:0.15 。单位:m。平面立方体深度/plane_cube_depth
:设置空间 cube 的深度。取值范围:(0,+∞)。默认值:0.00001 。单位:m。点云/cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
平面立方体云/plane_cube
:设置平面立方体在 3D 视图中的可视化属性。打开平面立方体可视化。
关闭平面立方体可视化。
设置平面立方体的颜色。取值范围:[-2,360] 。默认值:-2 。
设置平面立方体的透明度。取值范围:[0,1] 。默认值:0.5 。
点云列表/cloud_list
:设置切割后点云列表在 3D 视图中的可视化属性。参数值描述与点云
一致。平面立方体列表/plane_cube_list
:设置平面立方体列表在 3D 视图中的可视化属性。参数值描述与点云
一致。
数据信号输入输出
输入:
点云
:数据类型:PointCloud
输入内容:点云数据
平面坐标
:数据类型:Pose
输入内容:平面中心点 pose
点云列表
:数据类型:PointCloudList
输入内容:点云数据
平面坐标列表
:数据类型:PoseList
输入内容:平面中心点 pose
输出:
点云
:数据类型:PointCloud
输出内容:切割后点云数据
平面立方体
:数据类型:Cube
输出内容:平面立方体
点云列表
:数据类型:PointCloudList
输出内容:切割后点云列表数据
平面立方体列表
:数据类型:Cube
输出内容:平面立方体列表
功能演示
使用 CloudSegment 算子中平面切割
切割出平面点云。
步骤1:算子准备
添加 Trigger 、Load 、FindElement 、CloudSegment 算子至算子图。
步骤2:设置算子参数
设置 FindElement 算子参数:类型 → 平面
设置 Load 算子参数:
类型 → 点云
文件 →
→ 选择点云文件名( example_data/pointcloud/fruit.pcd )
点云 →
可视→
-2
设置 CloudSegment 算子参数:
类型 → 平面切割
模式 → 点低于平面
点云 →
可视→
-2
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,左图为 Load 算子加载的点云可视化结果,右图为裁剪后的点云可视化结果。
XYZ切割
将 CloudSegment 点云切割 类型
设置为 XYZ切割
,用于切割坐标某个方向上一定范围的点云。
算子参数
领域/field
:切割方向区域。默认值:z ,表示坐标 z 轴方向。最小值/min
:切割的最小距离。取值范围:(-∞,+∞)。默认值:0 ,表示从 0 开始。单位:m。最大值/max
:切割的最大距离。取值范围:(-∞,+∞)。默认值:1 ,表示到 1 结束。单位:m。取内部/inside
:是/True
:选取 min-max 范围内的点云。否/False
:选取 min-max 范围外的点云。
点云/cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
数据信号输入输出
输入:
点云
:数据类型:PointCloud
输入内容:点云数据
输出:
点云
:数据类型:PointCloud
输出内容:切割后点云数据
功能演示
使用 CloudSegment 算子的 XYZ切割
切割出加载点云中的平面部分。
步骤1:算子准备
添加 Trigger 、Load 、CloudSegment 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → 点云
文件 →
→ 选择点云文件名( example_data/pointcloud/chessboard.pcd )
点云 →
可视 →
-2
设置CloudSegment算子参数:
类型 → XYZ切割
点云 →
可视 →
-2
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,左图为 Load 算子加载点云可视化结果,右图为裁剪后的点云可视化结果。
点轴切割
将 CloudSegment 点云切割 类型
设置为点轴切割
,将点云的点在某一坐标轴上进行排序,以排序索引值的点为分界点进行分割。
算子参数
领域/field
:切割方向区域。默认值:Z ,表示坐标 Z 轴方向。切割模式/segment_mode
:切割模式。默认值:ON_POINT 。ABOVE_POINT:表示在切割方向上高于分界点阈值范围的点云。
ON_POINT:表示在切割方向上不超出分界点阈值范围的点云。
BELOW_POINT:表示在切割方向上低于分界点阈值范围的点云。
索引/index
:点云在切割方向上排序后,用于分割的分界点的索引值,该值不能超出点云的点数。当值大于等于 0 时,表示正序索引,当值小于 0 时,表示倒序索引。距离阈值/distance_threshold
:点云切割的距离阈值。默认值:0.01 。单位:m。点云/cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
数据信号输入输出
点云
:数据类型:PointCloud
输入内容:点云数据
点云列表
:数据类型:PointCloudList
输入内容:点云列表数据
输出:
点云
:数据类型:PointCloud
输出内容:切割后点云数据
点云列表
:数据类型:PointCloudList
输出内容:切割后点云列表数据
功能演示
使用 CloudSegment 算子中 PointAxisSegment 切割加载点云 Z 轴方向 ON_POINT 模式下的点云。
步骤1:算子准备
添加 Trigger 、Load (2个)、CloudSegment 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → PointCloud
文件 →
→ 选择点云文件名( *example_data/pointcloud/wolf1.pcd)
点云 →
可视→
180
设置 CloudSegment 算子参数:
类型 → PointAxisSegment
领域 → Z
切割模式 → ON_POINT
索引 → 0
距离阈值 → 30
点云 →
可视→
360
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,蓝色点云为Load算子加载的点云可视化结果,紫色部分为切割的点云可视化结果。
差异切割
将 CloudSegment 点云切割 类型
设置为 差异切割
,用于输入两个点云,切割两个点云中不同的部分。
算子参数
距离阈值/distance_threshold
:source_cloud(源点云)与target_cloud(目标点云)的距离阈值。取值范围:(0,+∞)。默认值:0.001 。单位:m。差异点云/diff_cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360]。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
数据信号输入输出
source_cloud
:数据类型:PointCloud
输入内容:源点云数据
target_cloud
:数据类型:PointCloud
输入内容:目标点云数据
输出:
差异点云
:数据类型:PointCloud
输出内容:切割后点云数据
功能演示
使用 CloudSegment 算子中 差异切割
切割出加载点云中水果的部分。
步骤1:算子准备
添加 Trigger 、Load (2个)、DownSampling 、DownSampling_1 、CloudSegment 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → 点云
文件 →
→ 选择点云文件名( example_data/pointcloud/fruit2.pcd )
点云 →
可视→
-2
置 Load_1 算子参数:
类型 → 点云
文件 →
→ 选择点云文件名( example_data/pointcloud/plane.pcd )
点云 →
可视→
-2
设置 DownSampling 算子参数:
类型→ 网格降采样
x 方向采样→ 0.001
y 方向采样→ 0.001
z 方向采样→ 0.001
设置 DownSampling_1 算子参数:
类型→ 网格降采样
x 方向采样 → 0.001
y 方向采样 → 0.001
z 方向采样→ 0.001
设置 CloudSegment 算子参数:
类型 → 差异切割
点云 →
可视→
-2
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,左图为 Load 算子可视化结果,中图为 Load_1 算子可视化结果,右图为裁剪后的水果点云可视化结果。
NNPD切割
NNPD切割将 CloudSegment 点云切割 类型
设置为 NNPD切割
,用于输入两个点云中,保留源点云在目标点云中缺失的部分。
算子参数
距离阈值/distance_threshold
:source_cloud(源点云)与 target_cloud(目标点云)的距离阈值。取值范围:(0,+∞)。默认值:0.001 。单位:m。剩下的点云/remaining_cloud
:设置切割后点云在 3D 视图中的可视化属性。打开切割后点云可视化。
关闭切割后点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
数据信号输入输出
source_cloud
:数据类型:PointCloud
输入内容:源点云数据
target_cloud
:数据类型:PointCloud
输入内容:目标点云数据
输出:
剩余点云
:数据类型:PointCloud
输出内容:切割后点云数据
功能演示
使用 CloudSegment 算子,先使用 类型
中立方体
切割掉目标点云中的一部分,再使用 NNPDSegmet 保留缺失的部分。
步骤1:算子准备
添加 Trigger 、Load 、Emit 、DownSampling 、CloudSegment 、CloudSegment_1 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → PointCloud
文件 →
→ 选择点云文件名( example_data/pointcloud/plane.pcd )
点云 →
可视→
-2
设置 CloudSegment 算子参数:
类型 → CropboxSegment
模式 → intersection
点云 →
可视 →
-2
设置 CloudSegment_1 算子参数:
类型 → NNPDSegmet
点云 →
可视 →
-2
设置 DownSampling 算子参数:
类型→ DownSample
x 方向采样 → 0.001
y 方向采样 → 0.001
z 方向采样 → 0.001
设置Emit算子参数:
类型 → Cube
坐标 →0.4 0 0.7 0 0 0
宽度 →0.6
高度→0.6
深度 → 0.3
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中:
左图为 Load 算子的点云可视化结果( target_cloud )。
中图为 CloudSegment 算子- CropBoxSegment 算子的点云可视化结果( source_cloud )。
右图为 CloudSegment 算子- NNPDSegment 中点云可视化结果( remaining_cloud )