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 )