ProjectMask 映射图像Mask

ProjectMask 算子用于对 MaskRCNN、KeyPoint 以及 RotatedYOLO 神经网络模型推理所得的掩码图(目标 2D 像素区域)进行后续处理,将推理所得的掩码图列表转换为 3D 点云列表。

说明:算子运行前需准备推理得到的掩码图、图漾相机外参矩阵、目标物体3D点云。

type 功能
MaskList 将掩码图列表的所有目标同时转换成 3D 点云。支持按照类别转换。
MaskClassList 将类掩码图列表的所有目标同时转换成 3D 点云。支持按照类别转换。

MaskList

算子参数

  • 相机坐标/camera_pose:手动设置 camera_pose 的 x/y/z/rx/ry/rz。作用同数据信号输入端口的 camera_pose 一致。若输入端口 camera_pose 有输入,执行算子后则会自动将输入端口的值覆盖该参数的值。

  • 相机彩色图标定文件/color_calib_file:设置图漾相机 RGB 镜头的出厂标定参数文件的路径。作用同数据信号输入端口的 color_calib_info 一致。若输入端口 color_calib_info 有输入,优先使用输入端口的值。

  • 输出背景点云/output_backgroud:是否输出背景点云。

    • True:输出背景点云。算子参数显示背景点云,参数用于设置点云的可视化属性。数据信号输出端口显示backgroud_cloud,用于输出背景点云数据。

    • False:不输出背景点云。

  • 选择类别/select_class:如果仅需要将原始掩码图列表中的某一类目标进行 3D 转换,则这里填写对应的类别即可。该参数默认为空,即将所有类别全部转换。

  • 点云列表/cloud_list:设置点云列表在 3D 视图中的可视化属性。

    • icon_visOn 打开点云列表可视化。

    • icon_visOff 关闭点云列表可视化。

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

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

    说明:当 输出背景点云 → 是,显示下述参数。

  • 点云列表/cloud_list:设置背景点云列表在 3D 视图中的可视化属性。

    • icon_visOn 打开背景点云列表可视化。

    • icon_visOff 关闭背景点云列表可视化。

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

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

数据信号输入输出

输入:

  • cloud

    • 数据类型:PointCloud

    • 输入内容:掩码图的原图所对应的点云

    说明:当输入的点云中背景点云占比较多时,建议将大部分背景点云裁剪后再输入。

  • camera_pose

    • 数据类型:Pose

    • 输入内容:掩码图的原图所在的 RGB 空间坐标系到上述点云所在的空间坐标系的转换关系。如果上述输入端口的点云位于相机3D坐标系,则这里输入RGB空间坐标系到相机3D坐标系的转换 Pose 即可。如果上述输入端口的点云位于机器人坐标系,则这里需要输入 RGB空间坐标系到机器人3D坐标系的的转换 Pose 。

  • color_calib_info

    • 数据类型:CalibInfo

    • 输入内容:图漾相机 RGB 镜头的出厂标定参数,可以从 TyCameraAccess 算子输出,也可以由 LoadCalibFile 算子输出。

  • mask_list

    • 数据类型:ImageList

    • 输入内容:神经网络推理算子所得的掩码图像列表

  • mask_names

    • 数据类型:StringList

    • 输入内容:神经网络推理算子所得的目标类别列表

输出:

  • cloud_list

    • 数据类型:PointCloudList

    • 输出内容:将掩码图列表中的目标转换到 3D 坐标系后的点云列表

    说明:当 输出背景点云 → 是,显示下述输出端口。

  • background_cloud

    • 数据类型:PointCloud

    • 输出内容:背景点云

功能演示

使用 ProjectMask 算子的MaskList模式 ,将掩码图列表的所有目标同时转换成 3D 点云,输出 PointCloudList 。

步骤1:算子准备

添加 Trigger( 3 个)、Load( 2 个)、LoadCalibFile、AIDetectGPU、ProjectMask 算子至算子图。

步骤2:设置算子参数

  1. 设置 Trigger_1 算子参数:

    • 算子名称→Init_Trigger

    • 类型 → InitTrigger

  2. 设置 Trigger_2 算子参数:

    • 算子名称→AI_Trigger

    • 类型 → InitTrigger

  3. 设置 Load 算子参数:

    • 类型 → Image

    • 文件 → icon_more→选择图像文件名 ( example_data/mask_data_train/20221010113840917/rgb.png )

    • 图像 → icon_visOn可视

  4. 设置 Load_1 算子参数:

    • 类型 → PointCloud

    • 文件 → icon_more→ 选择与图像匹配点云文件名 ( example_data/mask_data_train/20221010113840917/cloud.pcd )

    • 点云 → icon_visOn可视

  5. 设置 LoadCalibFile 算子参数:

    • 相机标定文件 → 图漾相机出厂标定文件 ( example_data/mask_data_train/mask_ty_color_calib.txt )

  6. 设置 AIDetectGPU 算子参数:

    • 说明:该端口连接/不连接,输出所有类别的旋转矩阵。连接时,可填写 select_class 来输出指定类别的旋转矩形。

    • 类名文件路径 →icon_more → 选择相应文件名( example_data/mask_data_train/fruits.txt )

    • 权重文件路径 →icon_more → 选择相应权重文件名 ( example_data/mask_data_train/train_output/model_final.pth )

    • 配置文件路径 →icon_more → 选择相应权重文件名 ( example_data/mask_data_train/train_output/config.yaml )

    • 物体得分阈值 →icon_more → 0.75

    • 识别结果图像 → icon_visOn 可视

  7. 设置 ProjectMask 算子参数:

    • 类型→ MaskList

    • 点云列表 → icon_visOn可视

步骤3:连接算子

Calibration_ProjectMask_MaskList_nodes

步骤4:运行

  1. 点击RVS的运行按钮,InitTrigger 和AI_Trigger 会自动运行,分别触发 LoadCalibFile 算子以及 AIDetectGPU 。然而,AIDetectGPU 算子的初始化同时会通过finished 端口触发后续的 ProjectMask 算子。由于 ProjectMask 算子的输入端口没有有效数值,因此会报告一个端口输入无效的警告。这个警告不会影响后续的运行。如下图所示。

    Calibration_ProjectMask_log

  2. 正常运行触发左侧 Trigger 算子。

运行结果

  1. 如果勾选了AIDetectGPU算子的 识别结果图像 参数以及 ProjectMask 算子的 点云列表 属性的可视化选项,则会显示一个包含点云和掩膜的三维可视化结果。其中,点云的颜色表示掩膜的值,即蓝色表示掩膜值为 0,白色表示掩膜值为 1。掩膜将点云分割成不同的区域,以便进行后续的处理和分析。如下图所示。

    Calibration_ProjectMask_result

  2. 如果在 ProjectMask 算子的 选择类别 属性中填写了某个具体的类别,比如 banana ,则还额外需要将 AIDetectGPU 算子的 mask_names 端口连接到ProjectMask 算子的 mask_names 端口,运行效果如下所示。

    Calibration_ProjectMask_result1

MaskClassList

将 ProjectMask 算子的 类型 属性选择 MaskClassList ,将类掩码图转换成 3D 点云列表并输出。

算子参数

  • 所有参数:同上述 MaskList 。

数据信号输入输出

输入:

  • mask_class_list

    • 数据类型:Image

    • 输入内容:神经网络推理算子在 Class 模式下 ( MaskRCNNClass 以及 YOLOClass ) 所得的类掩码图列表

  • 其余端口:同上述MaskList 描述一致

输出:

  • cloud_list

    • 数据类型:PointCloud

    • 输出内容:将类掩码图中的目标转换到 3D 坐标系中的点云

功能演示

使用 ProjectMask 算子中 MaskClassList 模式,分别将所有类掩码图以及单个类掩码图 (类别仍然选为banana) 的目标转换成 3D 点云。

算子连接参照 MaskList ,连接细节以及两次运行结果图如下所示。

Calibration_ProjectMask_MaskClassList_nodes

Calibration_ProjectMask_MaskClassList_result

Calibration_ProjectMask_MaskClassList_result1