CloudSegment 点云切割

CropboxSegment算子用于对点云进行切割,包含 CropboxSegment 、PlaneSegment 、PassThroughSegment 、DiffSegment 、NNPDSegment 。

类型 功能
CropboxSegment 裁剪框切割,根据输入的立方体区域对点云进行切割,需要结合 Emit-Cube 算子使用。
PlaneSegment 平面点云切割。可以选取切割平面或者平面上/下的点云。
PassThroughSegment 切割坐标某个方向上一定距离的点云。
PointAxisSegment 将点云的点在某一坐标轴上进行排序,以排序索引值的点为分界点进行分割。
DiffSegment 输入两个点云,切割两个点云中不同的部分。
NNPDSegment 输入两个点云中,保留源点云在目标点云中缺失的部分。

CropboxSegment

将 CloudSegment 点云切割 类型 设置为 CropboxSegment ,用于裁剪框切割,根据输入的立方体区域对点云进行切割,需要结合 Emit - Cube 算子使用。

算子参数

  • 模式/mode:设置点云切割的方法,共有三种,分别为:

    • intersection:当输入单个 cube 时,切割 cube 框选的部分;当输入的是 cubes ,切割各个 cube 中相交的部分。

    • individual:当多个 cube 切割同一块点云时,每个 cube 都对点云进行切割,输出的是点云列表。

    • outside_points:切割没有被 cube 框选的点云。

  • 点云/cloud:设置切割后点云在 3D 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

  • 点云列表/cloud_list:设置过滤后点云列表在 3D 视图中的的可视化属性。值描述与 点云 一致。

数据信号输入输出

输入:

  • cloud

    • 数据类型:PointCloud

    • 输入内容:点云数据

  • cloud_list

    • 数据类型:PointCloudList

    • 输入内容:点云列表数据

  • cube

    • 数据类型:Cube

    • 输入内容:立方体数据

  • cubelist

    • 数据类型:CubeList

    • 输入内容:立方体列表数据

输出:

  • cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

  • cloud_list

    • 数据类型:PointCloudList

    • 输出内容:切割后点云列表数据

功能演示

使用 CloudSegment 算子中 CropboxSegment 切割加载点云中的 Cube 包裹住的部分。

步骤1:算子准备

添加 Trigger 、Load 、Emit 、CloudSegment 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more → 选择点云文件名( example_data/pointcloud/chessboard.pcd )

    • 点云 → icon_visOn 可视 → icon_color -2

  2. 设置 Emit 算子参数:

    • 类型 → Cube

    • 坐标 → 0 0 0.7 0 0 0

    • 宽度 → 1

    • 高度 → 1

    • 深度 → 0.5

    • 立方体 → icon_visOn 可视

  3. 设置 CloudSegment 算子参数:

    • 类型 → CropboxSegment

    • 模式 → intersection

    • 点云 → icon_visOn 可视 → icon_color -2

步骤3:连接算子

image-20230703141826029

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中,左图为 Load 算子和 Emit 算子的可视化结果,右图为裁剪后的点云可视化结果。

3D_CloudSegment_CropboxSegment_result

PlaneSegment

将 CloudSegment 点云切割 类型 设置为 PlaneSegment ,用于平面点云切割。可以选取切割平面或者平面上/下的点云。

算子参数

  • 切割模式/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 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

  • 平面立方体云/plane_cube:设置平面立方体在 3D 视图中的可视化属性。

    • icon_visOn 打开平面立方体可视化。

    • icon_visOff 关闭平面立方体可视化。

    • icon_color 设置平面立方体的颜色。取值范围:[-2,360] 。默认值:-2 。

    • icon_opacity 设置平面立方体的透明度。取值范围:[0,1] 。默认值:0.5 。

  • 点云列表/cloud_list:设置切割后点云列表在 3D 视图中的可视化属性。参数值描述与 点云 一致。

  • 平面立方体列表/plane_cube_list:设置平面立方体列表在 3D 视图中的可视化属性。参数值描述与 点云 一致。

数据信号输入输出

输入:

  • cloud

    • 数据类型:PointCloud

    • 输入内容:点云数据

  • plane_pose

    • 数据类型:Pose

    • 输入内容:平面中心点 pose

输出:

  • cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

  • plane_cube

    • 数据类型:Cube

    • 输出内容:平面立方体

功能演示

使用 CloudSegment 算子中 PlaneSegment 切割出平面点云。

步骤1:算子准备

添加 Trigger 、Load 、FindElement 、CloudSegment 算子至算子图。

步骤2:设置算子参数

  1. 设置 FindElement 算子参数:类型 → plane

  2. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more → 选择点云文件名( example_data/pointcloud/fruit.pcd )

    • 点云 → icon_visOn 可视→ icon_color -2

  3. 设置 CloudSegment 算子参数:

    • 类型 → PlaneSegment

    • 模式 → BELOW_PLANE

    • 点云 → icon_visOn 可视→ icon_color -2

步骤3:连接算子

3D_cloudSegment_nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中,左图为 Load 算子加载的点云可视化结果,右图为裁剪后的点云可视化结果。

3D_CloudSegment_PlaneSegment_result

PassThroughSegment

将 CloudSegment 点云切割 类型 设置为 PassThroughSegment ,用于切割坐标某个方向上一定范围的点云。

算子参数

  • 领域/field:切割方向区域。默认值:z ,表示坐标 z 轴方向。

  • 最小值/min:切割的最小距离。取值范围:(-∞,+∞)。默认值:0 ,表示从 0 开始。单位:m。

  • 最大值/max:切割的最大距离。取值范围:(-∞,+∞)。默认值:1 ,表示到 1 结束。单位:m。

  • 取内部/inside

    • True:选取 min-max 范围内的点云。

    • False:选取 min-max 范围外的点云。

  • 点云/cloud:设置切割后点云在 3D 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

输入:

  • cloud

    • 数据类型:PointCloud

    • 输入内容:点云数据

输出:

  • cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

功能演示

使用 CloudSegment 算子的 PassThroughSegment 切割出加载点云中的平面部分。

步骤1:算子准备

添加 Trigger 、Load 、CloudSegment 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more → 选择点云文件名( example_data/pointcloud/chessboard.pcd )

    • 点云 → icon_visOn 可视 → icon_color -2

  2. 设置CloudSegment算子参数:

    • 类型 → PassThroughSegment

    • 点云 → icon_visOn 可视 → icon_color -2

步骤3:连接算子

3D_CloudSegment_PassThroughSegment_nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中,左图为 Load 算子加载点云可视化结果,右图为裁剪后的点云可视化结果。

3D_CloudSegment_PassThroughSegment_result

PointAxisSegment

将 CloudSegment 点云切割 类型 设置为 PointAxisSegment ,将点云的点在某一坐标轴上进行排序,以排序索引值的点为分界点进行分割。

算子参数

  • 领域/field:切割方向区域。默认值:Z ,表示坐标 Z 轴方向。

  • 切割模式/segment_mode:切割模式。默认值:ON_POINT 。

    • ABOVE_POINT:表示在切割方向上高于分界点阈值范围的点云。

    • ON_POINT:表示在切割方向上不超出分界点阈值范围的点云。

    • BELOW_POINT:表示在切割方向上低于分界点阈值范围的点云。

  • 索引/index:点云在切割方向上排序后,用于分割的分界点的索引值,该值不能超出点云的点数。当值大于等于 0 时,表示正序索引,当值小于 0 时,表示倒序索引。

  • 距离阈值/distance_threshold:点云切割的距离阈值。默认值:0.01 。单位:m。

  • 点云/cloud:设置切割后点云在 3D 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

  • source_cloud

    • 数据类型:PointCloud

    • 输入内容:源点云数据

  • target_cloud

    • 数据类型:PointCloud

    • 输入内容:目标点云数据

输出:

  • diff_cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

步骤3:连接算子

image-20230919144709062

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中,蓝色点云为Load算子加载的点云可视化结果,紫色部分为切割的点云可视化结果。

image-20230919144814970

功能演示

使用 CloudSegment 算子中 PointAxisSegment 切割加载点云 Z 轴方向 ON_POINT 模式下的点云。

步骤1:算子准备

添加 Trigger 、Load (2个)、CloudSegment 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more→ 选择点云文件名( *example_data/pointcloud/wolf1.pcd)

    • 点云 → icon_visOn可视→ icon_color 180

  2. 设置 CloudSegment 算子参数:

    • 类型 → PointAxisSegment

    • 领域 → Z

    • 切割模式 → ON_POINT

    • 索引 → 0

    • 距离阈值 → 30

    • 点云 → icon_visOn可视→ icon_color 360

DiffSegment

将 CloudSegment 点云切割 类型 设置为 DiffSegment ,用于输入两个点云,切割两个点云中不同的部分。

算子参数

  • 距离阈值/distance_threshold:source_cloud(源点云)与target_cloud(目标点云)的距离阈值。取值范围:(0,+∞)。默认值:0.001 。单位:m。

  • 差异点云/diff_cloud:设置切割后点云在 3D 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360]。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

  • source_cloud

    • 数据类型:PointCloud

    • 输入内容:源点云数据

  • target_cloud

    • 数据类型:PointCloud

    • 输入内容:目标点云数据

输出:

  • diff_cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

功能演示

使用 CloudSegment 算子中 DiffSegment 切割出加载点云中水果的部分。

步骤1:算子准备

添加 Trigger 、Load (2个)、DownSampling 、DownSampling_1 、CloudSegment 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more→ 选择点云文件名( example_data/pointcloud/fruit2.pcd )

    • 点云 → icon_visOn可视→ icon_color -2

  2. 置 Load_1 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more→ 选择点云文件名( example_data/pointcloud/plane.pcd )

    • 点云 → icon_visOn可视→ icon_color -2

  3. 设置 DownSampling 算子参数:

    • 类型→ DownSample

    • x 方向采样→ 0.001

    • y 方向采样→ 0.001

    • z 方向采样→ 0.001

  4. 设置 DownSampling_1 算子参数:

    • 类型→ DownSample

    • x 方向采样 → 0.001

    • y 方向采样 → 0.001

    • z 方向采样→ 0.001

  5. 设置 CloudSegment 算子参数:

    • 类型 → DiffSegment

    • 点云 → icon_visOn可视→ icon_color -2

步骤3:连接算子

3D_CloudSegment_Diffsegment_nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中,左图为 Load 算子可视化结果,中图为 Load_1 算子可视化结果,右图为裁剪后的水果点云可视化结果。

3D_CloudSegment_Diffsegment_Result

NNPDSegment

将 CloudSegment 点云切割 类型 设置为 NNPDSegment ,用于输入两个点云中,保留源点云在目标点云中缺失的部分。

算子参数

  • 距离阈值/distance_threshold:source_cloud(源点云)与 target_cloud(目标点云)的距离阈值。取值范围:(0,+∞)。默认值:0.001 。单位:m。

  • 剩下的点云/remaining_cloud:设置切割后点云在 3D 视图中的可视化属性。

    • icon_visOn 打开切割后点云可视化。

    • icon_visOff 关闭切割后点云可视化。

    • icon_color 设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_size 设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

  • source_cloud

    • 数据类型:PointCloud

    • 输入内容:源点云数据

  • target_cloud

    • 数据类型:PointCloud

    • 输入内容:目标点云数据

输出:

  • remaining_cloud

    • 数据类型:PointCloud

    • 输出内容:切割后点云数据

功能演示

使用 CloudSegment 算子,先使用 类型中 CropboxSegment 切割掉目标点云中的一部分,再使用 NNPDSegmet 保留缺失的部分。

步骤1:算子准备

添加 Trigger 、Load 、Emit 、DownSampling 、CloudSegment 、CloudSegment_1 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more → 选择点云文件名( example_data/pointcloud/plane.pcd )

    • 点云 → icon_visOn 可视→ icon_color -2

  2. 设置 CloudSegment 算子参数:

    • 类型 → CropboxSegment

    • 模式 → intersection

    • 点云 → icon_visOn 可视 → icon_color -2

  3. 设置 CloudSegment_1 算子参数:

    • 类型 → NNPDSegmet

    • 点云 → icon_visOn 可视 → icon_color -2

  4. 设置 DownSampling 算子参数:

    • 类型→ DownSample

    • x 方向采样 → 0.001

    • y 方向采样 → 0.001

    • z 方向采样 → 0.001

  5. 设置Emit算子参数:

    • 类型 → Cube

    • 坐标 →0.4 0 0.7 0 0 0

    • 宽度 →0.6

    • 高度→0.6

    • 深度 → 0.3

步骤3:连接算子

3D_CloudSegmengt_NNPDSegment_nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子。

运行结果

如下图所示,3D 视图中:

  • 左图为 Load 算子的点云可视化结果( target_cloud )。

  • 中图为 CloudSegment 算子- CropBoxSegment 算子的点云可视化结果( source_cloud )。

  • 右图为 CloudSegment 算子- NNPDSegment 中点云可视化结果( remaining_cloud )

3D_CloudSegment_NNPDSegment_result