VPI - 视觉编程接口

3.2 版本

AprilTags

检测图像中的 AprilTags (https://april.eecs.umich.edu/software/apriltag)。 更多...

数据结构

结构体  VPIAprilTagDecodeParams
 vpiCreateAprilTagDetector 的解码参数。 更多...
 
结构体  VPIAprilTagDetection
 存储来自 AprilTag 检测器 的 AprilTag 检测信息。 更多...
 

枚举

枚举  VPIAprilTagFamily
 指定要检测的 AprilTag 标签族。 更多...
 

函数

VPIStatus vpiInitAprilTagDecodeParams (VPIAprilTagDecodeParams *params)
 使用默认值初始化 VPIAprilTagDecodeParams更多...
 
VPIStatus vpiCreateAprilTagDetector (uint64_t backends, int32_t inputWidth, int32_t inputHeight, VPIAprilTagDecodeParams const *params, VPIPayload *payload)
 创建 AprilTag 检测器 有效载荷。 更多...
 
VPIStatus vpiSubmitAprilTagDetector (VPIStream stream, uint64_t backend, VPIPayload payload, uint32_t maxDetections, VPIImage input, VPIArray outDetections)
 AprilTag 检测器 操作提交到流。 更多...
 
VPIStatus vpiSubmitAprilTagPoseEstimation (VPIStream stream, uint64_t backend, VPIArray inDetections, const VPICameraIntrinsic intrinsics, float tagSize, VPIArray outPoses)
 AprilTag 位姿估计 操作提交到流。 更多...
 

详细描述

检测图像中的 AprilTags (https://april.eecs.umich.edu/software/apriltag)。

有关更多详细信息和使用示例,请参阅 AprilTag 检测器和位姿估计器


数据结构文档

◆ VPIAprilTagDecodeParams

struct VPIAprilTagDecodeParams

vpiCreateAprilTagDetector 的解码参数。

指定要解码的标签族和解码属性。

定义于文件 AprilTags.h 的第 111 行。

+ VPIAprilTagDecodeParams 的协作图
数据字段
const uint16_t * tagIdFilter 来自标签族的标签 ID 可选数组,表示有效检测结果。

设置为 NULL 以检测来自该族的所有标签。在调用 vpiCreateAprilTagDetector 后可以释放数据。

int32_t tagIdFilterSize 如果 tagIdFilter 数组不为 NULL,则为该数组的大小。
  • 必须 >=0。
  • 必须小于标签族中标签的数量。
int32_t maxBitsCorrected 解码期间要纠正的最大位数。
  • 必须在 [0,2] 范围内
VPIAprilTagFamily family 要检测的标签族。

◆ VPIAprilTagDetection

struct VPIAprilTagDetection

存储来自 AprilTag 检测器 的 AprilTag 检测信息。

定义于文件 Types.h 的第 772 行。

+ VPIAprilTagDetection 的协作图
数据字段
uint16_t id 标签的解码 ID。
int16_t correctedBits 此检测纠正的位数。
float decisionMargin 二进制解码过程质量的度量:数据位强度与决策阈值之间的平均差值。

数字越大,大致表示解码效果越好。这仅对于非常小的标签才是检测精度的合理度量。

VPIHomographyTransform2D homography 从“理想”标签(角位于 (-1,1)、(1,1)、(1,-1) 和 (-1, -1))到图像中像素的投影的 3x3 单应性矩阵。
VPIKeypointF32 center 检测中心在图像像素坐标中的位置。
VPIKeypointF32 corners[4] 标签角点在图像像素坐标中的位置,逆时针顺序排列。

枚举类型文档

◆ VPIAprilTagFamily

#include <vpi/algo/AprilTags.h>

指定要检测的 AprilTag 标签族。

标签族由布局、标签中的位数以及有效码字之间的最小汉明距离定义。

枚举器
VPI_APRILTAG_INVALID 

无效值。

VPI_APRILTAG_16H5 

16h5 族

VPI_APRILTAG_25H9 

25h9 族

VPI_APRILTAG_36H10 

36h10 族

VPI_APRILTAG_36H11 

36h11 族

VPI_APRILTAG_CIRCLE21H7 

Circle21h7 族。

VPI_APRILTAG_CIRCLE49H12 

Circle49h12 族。

VPI_APRILTAG_CUSTOM48H12 

Custom48h12 族。

VPI_APRILTAG_STANDARD41H12 

Standard41h12 族。

VPI_APRILTAG_STANDARD52H13 

Standard52h13 族。

定义于文件 AprilTags.h 的第 83 行。

函数文档

◆ vpiInitAprilTagDecodeParams()

VPIStatus vpiInitAprilTagDecodeParams ( VPIAprilTagDecodeParams params)

#include <vpi/algo/AprilTags.h>

使用默认值初始化 VPIAprilTagDecodeParams

默认值

参数
[out]params要填充默认值的结构体。
返回值
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL
VPI_SUCCESS操作成功执行。

◆ vpiCreateAprilTagDetector()

VPIStatus vpiCreateAprilTagDetector ( uint64_t  backends,
int32_t  inputWidth,
int32_t  inputHeight,
VPIAprilTagDecodeParams const *  params,
VPIPayload payload 
)

#include <vpi/algo/AprilTags.h>

创建 AprilTag 检测器 有效载荷。

此函数分配算法所需的所有临时内存。

参数
[in]backends有资格执行该算法的 VPI 后端。
[in]inputWidth,inputHeight将用于此有效载荷的输入图像的尺寸。
  • 必须 > 0。
[in]params检测器的解码参数。传递 NULL 以使用 vpiInitAprilTagDecodeParams 给出的默认值。
[out]payload指向接收创建的句柄的有效载荷变量的指针。
返回值
VPI_ERROR_INVALID_ARGUMENTpayload 为 NULL。
VPI_ERROR_INVALID_ARGUMENTbackends 指的是无效的后端。
VPI_ERROR_INVALID_ARGUMENTinputWidthinputHeight 超出有效范围。
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL 或包含无效配置。
VPI_ERROR_INVALID_OPERATION后端硬件不可用,或者后端在当前上下文中不可用。
VPI_ERROR_NOT_IMPLEMENTED算法不支持给定的后端。
VPI_ERROR_INVALID_CONTEXT当前上下文已销毁。
VPI_ERROR_OUT_OF_MEMORY无法分配所需资源。
VPI_SUCCESS操作成功执行。

◆ vpiSubmitAprilTagDetector()

VPIStatus vpiSubmitAprilTagDetector ( VPIStream  stream,
uint64_t  backend,
VPIPayload  payload,
uint32_t  maxDetections,
VPIImage  input,
VPIArray  outDetections 
)

#include <vpi/algo/AprilTags.h>

AprilTag 检测器 操作提交到流。

参数
[in]stream操作将排队进入的流。
  • 不得为 NULL。
  • 流必须已启用将执行该算法的后端。
[in]backend将执行该算法的后端。
  • 必须是有效载荷创建期间指定的后端,或者为 0 以简写形式使用此后端。
[in]payload要与其他参数一起提交的有效载荷。
[in]maxDetections要在 outDetections 中返回的最大检测数。
[in]input用于检测的输入图像
  • 不得为 NULL。
  • 必须与 vpiCreateAprilTagDetector 中使用的尺寸匹配。
  • 图像必须已启用将执行该算法的后端。
  • 必须具有 VPI_IMAGE_FORMAT_U8 格式
[out]outDetections将接收检测结果的数组。数组大小会使用找到的标签数进行更新。
  • 不得为 NULL。
  • 它必须具有 VPI_ARRAY_TYPE_APRILTAG_DETECTION 类型。
  • 数组必须已启用将执行该算法的后端。
  • 如果检测到的标签多于数组容量,则会丢弃额外的标签检测结果。
返回值
VPI_ERROR_INVALID_ARGUMENTstream 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinput 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinput 图像尺寸与传递给 vpiCreateAprilTagDetector 的尺寸不匹配。
VPI_ERROR_INVALID_ARGUMENTbackend 与用于创建有效载荷的后端不匹配。
VPI_ERROR_INVALID_IMAGE_FORMAT不支持 input 图像格式。
VPI_ERROR_INVALID_PAYLOAD_TYPEpayload 无效或为 NULL。
VPI_ERROR_NOT_IMPLEMENTED算法不支持给定的后端。
VPI_ERROR_INVALID_OPERATION后端硬件不可用。
VPI_ERROR_INVALID_OPERATION所需的后端未在 streaminputoutDetections 中启用。
VPI_SUCCESS操作成功执行。

◆ vpiSubmitAprilTagPoseEstimation()

VPIStatus vpiSubmitAprilTagPoseEstimation ( VPIStream  stream,
uint64_t  backend,
VPIArray  inDetections,
const VPICameraIntrinsic  intrinsics,
float  tagSize,
VPIArray  outPoses 
)

#include <vpi/algo/AprilTags.h>

AprilTag 位姿估计 操作提交到流。

参数
[in]stream操作将排队进入的流。
  • 不得为 NULL。
  • 流必须已启用将执行该算法的后端。
[in]backend将执行该算法的后端。
[in]inDetectionsAprilTag 检测数组。
[in]intrinsics相机内参
[in]tagSize标签边长
  • 必须 > 0
[out]outPoses将接收位姿估计的数组。数组大小将设置为与 inDetections 相同。
  • 不得为 NULL。
  • 它必须具有 VPI_ARRAY_TYPE_POSE 类型。
  • 数组必须已启用将执行该算法的后端。
  • 容量必须等于或大于 inDetections 的大小。
返回值
VPI_ERROR_INVALID_ARGUMENTstream 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinDetectionsoutPoses 为 NULL。
VPI_ERROR_NOT_IMPLEMENTED算法不支持给定的后端。
VPI_ERROR_INVALID_OPERATION后端硬件不可用。
VPI_ERROR_INVALID_OPERATION所需的后端未在 streaminDetectionsoutPoses 中启用。
VPI_SUCCESS操作成功执行。