Gst-nvds3dfilter#

Gst-nvds3dfilter 插件是一个可自定义的插件,它提供了一个自定义库接口来加载组件 ds3d::datafilter

该插件完全通过 YAML 格式的内容或文件进行配置。sink_capssrc_caps 也是可配置的。

Gst-nvds3dfilter

自定义库接口#

插件解析配置文件或内容,并设置 SinkCaps 和 SrcCaps。从 custom_lib_path 加载自定义 ds3d::datafilter。通过 custom_create_function 创建此 datafilter。

有关 ds3d::datafilter 的更多详细信息,请参阅 DS3D 手册 ds3d::datafilter- DS3D 自定义 DataFilter

输入和输出#

  • 输入

    • NvDs3DBuffer 或

    • 元数据 (NvDsBatchMeta),其中包含用户元数据 NVDS_3D_DATAMAP_META_TYPE

  • 控制参数

    • config-file

    • config-content

  • 输出

    • NvDs3DBuffer 或

    • 元数据 (NvDsBatchMeta),其中包含用户元数据 NVDS_3D_DATAMAP_META_TYPE

  • sink_caps

    • in_caps: ds3d/datamap 字段或任何用户指定的 in_caps: 解析。

  • src_caps

    • out_caps: ds3d/datamap 字段或任何用户指定的 out_caps: 解析。

配置文件#

示例
name: multimodal_triton_infer
type: ds3d::datafilter
in_caps: ds3d/datamap
out_caps: ds3d/datamap
custom_lib_path: libnvds_tritoninferfilter.so
custom_create_function: createLidarInferenceFilter
config_body:
  in_streams: [color, depth]

Gst-nvds3dfilter 属性规范#

Gst-nvds3dfilter 属性。#

属性

描述

版本

config-content

yaml 配置文件内容

DS 6.1

config-file

yaml 配置文件路径

DS 6.1

支持的 DS3D filter 自定义库#

这些自定义库是 DeepStream 发行包的一部分。

DS3D filter 自定义库#

DS3D Data filter

Data filter 自定义库

创建实例函数

描述

Multi-Modal-triton-infer

libnvds_tritoninferfilter.so

createLidarInferenceFilter

多模态传感器数据推理库,详见 libnvds_tritoninferfilter 配置规范

Data-alignment

libnvds_3d_alignment_datafilter.so

createLidarAlignmentFilter

激光雷达/相机传感器内参和外参以及对齐

Depth-2-point-cloud

libnvds_3d_depth2point_datafilter.so

createDepth2PointFilter

将图像深度数据转换为 3D 点云数据,详见 自定义 datafilter libnvds_3d_depth2point_datafilter 配置规范

自定义 ds3d::datafilter 库:libnvds_3d_alignment_datafilter.so#

来自 ds3d/datamap 缓冲区的输入 kLidarXYZI 被转换为 kLidarXYZIAligned。这通过一系列变换完成。

变换 在对齐过滤器内部完成,并在 KITTI 数据格式和校准数据参考的帮助下进行描述。

变换#

变换 ID

详情

AL_TR_1

欧几里得变换 从激光雷达到参考相机。

Velodyne 点云转换为参考相机 (cam0) 坐标。输出 = matrixmultiply(Tr_velo_to_cam, input_lidar_point)

AL_TR_2

注意:AL_TR_2 是在 AL_TR_1 的基础上完成的。

对齐过滤器期望用户使用 lidar_to_cam_extrisic 设置 Tr_velo_to_camR0_rect旋转 以解决 参考相机中点的校正。输出 = matrixmultiply(matmul(R0_rect, Tr_velo_to_cam), input_lidar_point)

AL_TR_3

[可选,可通过配置 ON/OFF:align_to_intrinsic]

从校正后的参考相机帧 (AL_TR2) 到 cam[2] 的投影变换。注意:对齐过滤器期望用户使用 P_rect[2] 设置 cam_intrinsic。输出 = matrixmultiply(matmul(P_rect[2], R0_rect, Tr_velo_to_cam), input_lidar_point)。注意:P_rect[2]、R0_rect、Tr_velo_to_cam 都被转换为 4X4 矩阵。

在 DeepStream 世界中

变换 DeepStream 词汇表#

cam_intrinsic

P0 OR P_rect[0]

lidar_to_cam_extrisic

是一个 3X4 矩阵 = matrix_multiply(R0_rect, Tr_velo_to_cam)

更多信息请点击此处:对齐配置选项

输入和输出#

  • 输入

    • ds3d/datamap

  • 控制参数

    • config-file

    • config-content

  • 输出

    • ds3d/datamap

配置文件#

示例
name: lidar_alignment_filter
type: ds3d::datafilter
link_to: ds3d_aligned_render
in_caps: ds3d/datamap
out_caps: ds3d/datamap
custom_lib_path: libnvds_3d_alignment_datafilter.so
custom_create_function: createLidarAlignmentFilter
config_body:
  cam_width: 1242
  cam_height: 375
  cam_intrinsic: [7.215377000000e+02, 0.000000000000e+00, 0.000000000000e+00, 0.000000000000e+00, 7.215377000000e+02, 0.000000000000e+00, 6.095593000000e+02, 1.728540000000e+02, 1.000000000000e+00, 4.485728000000e+01, 2.163791000000e-01, 2.745884000000e-03]
  #lidar_to_cam_extrisic is a 3X4 matrix = matrix_multiply(R0_rect, Tr_velo_to_cam);
  #lidar_to_cam_extrisic is in column major order
  #For more details on R0_rect and Tr_velo_to_cam, please check: https://github.com/lkk688/3DDepth/blob/main/README.md
  lidar_to_cam_extrisic: [2.34773698e-04, 1.04494074e-02, 9.99945389e-01, -9.99944155e-01, 1.05653536e-02, 1.24365378e-04, -1.05634778e-02, -9.99889574e-01, 1.04513030e-02, -2.79681694e-03, -7.51087914e-02, -2.72132796e-01]
  #cam input keys to ratain in the output datamap
  cam_input_keys: [DS3D::ColorFrame+1]
  #lidar input and output/aligned keys to retain in the output datamap
  #note: lidar_input_keys and lidar_aligned_keys map the same sensor data
  lidar_input_keys: [DS3D::LidarXYZI+0]
  lidar_aligned_keys: [DS3D::LidarAlignedXYZIKey]
  max_points: 2073600
  mem_pool_size: 32
  align_to_intrinsic: false
  lidar_element_size: 4

配置选项#

对齐 config_body#

config-key

描述

示例值

cam_width

用于视频输入的相机图像宽度。

1242

cam_height

用于视频输入的相机图像高度。

375

cam_intrinsic

是以列优先顺序排列的 3X4 矩阵。

从校正后的参考相机帧到用于视频输入的相机的投影变换。

更多信息 请点击此处(请参阅 P_rect[i] 的文档;注意:我们在 ds3d_lidar_video_alignment_render.yaml 的默认配置中使用 P_rect[2])。

[3X4] 矩阵,列优先顺序。

lidar_to_cam_extrisic

是一个 3X4 矩阵 = matrix_multiply(R0_rect, Tr_velo_to_cam);

lidar_to_cam_extrisic 以列优先顺序排列

有关 R0_rect 和 Tr_velo_to_cam 的更多详细信息,请查看:lkk688/3DDepth

[3X4] 矩阵,列优先顺序。

lidar_input_key

用于从输入 datamap 缓冲区获取激光雷达输入的键名。

DS3D::LidarXYZI+0

lidar_aligned_key

用于激光雷达输出的键名,由对齐过滤器新添加到输出 datamap 缓冲区中。

DS3D::LidarAlignedXYZIKey

max_points

输入 datamap 中激光雷达点的最大数量,位于

{lidar_input_key: points}。

2048000

mem_pool_size

对齐过滤器维护一个内部池。

这是用户想要分配的池大小。

4

align_to_intrinsic

如果为 true

则执行 AL_TR_3。

如果为 false

则执行 AL_TR_2。

True

lidar_element_size

输出对齐激光雷达数据点的大小。

>= 3 表示 XYZ = 4 表示 XYZI(I 是强度)。更多详情请点击 此处

4

自定义 ds3d::datafilter 库:libnvds_3d_depth2point_datafilter.so#