VPI - 视觉编程接口

3.2 版本

FAST 角点

检测图像中的 FAST 角点,通常用于关键点跟踪。 更多...

数据结构

struct  VPIFASTCornerDetectorParams
 定义 vpiSubmitFASTCornerDetector 参数的结构体。 更多...
 

函数

VPIStatus vpiInitFASTCornerDetectorParams (VPIFASTCornerDetectorParams *params)
 使用默认值初始化 VPIFASTCornerDetectorParams更多...
 
VPIStatus vpiSubmitFASTCornerDetector (VPIStream stream, uint64_t backend, VPIImage input, VPIArray outCorners, const VPIFASTCornerDetectorParams *params, VPIBorderExtension border)
 提交 FAST 角点检测器 操作到流。 更多...
 

详细描述

检测图像中的 FAST 角点,通常用于关键点跟踪。

有关更多详细信息和使用示例,请参阅 FAST 角点检测器


数据结构文档

◆ VPIFASTCornerDetectorParams

struct VPIFASTCornerDetectorParams

定义 vpiSubmitFASTCornerDetector 参数的结构体。

定义于文件 81FASTCorners.h

+ VPIFASTCornerDetectorParams 的协作图
数据字段
int32_t circleRadius 检查像素是否为角点的圆形半径。

支持以下圆形半径,每个半径都与圆中的像素数相关联

圆形半径圆中的像素数
1 8
2 12
3 16
  • 必须为 1、2 或 3。
int32_t arcLength 圆上弧的像素长度,用于检查中心像素是否为角点。

弧长是圆中连续像素的最小数量,这些像素比中心像素更亮(具有更高的强度值)或更暗(具有更低的强度值),分别加上或减去一个阈值,以将其标记为角点。

  • 对于 VPI_BACKEND_CPU,它必须在从 1 到圆中像素数的有效范围内。
  • 对于 VPI_BACKEND_CUDA,根据圆形半径,它必须为 5、7 或 9,如下所示
    圆形半径弧长
    1 5
    2 7
    3 9
float intensityThreshold 阈值,用于选择像素作为关键点候选点周围圆弧的一部分。

强度阈值用于检查圆中的像素是否比中心像素更亮(具有更高的强度值)或更暗(具有更低的强度值)。此检查用于弧计算,以确定像素是否在弧中。

int8_t nonMaxSuppression 是否应用非极大值抑制以移除过于靠近的角点。

如果不是 '0',则为 FAST 角点检测器算法激活非极大值抑制 (NMS)。FAST 的 NMS 通过增加强度阈值并移除未通过弧长计算的角点像素来抑制 1-环邻域中的像素,从而保留邻域中幸存的单个像素。如果为 '0',则停用非极大值抑制。

函数文档

◆ vpiInitFASTCornerDetectorParams()

VPIStatus vpiInitFASTCornerDetectorParams ( VPIFASTCornerDetectorParams params)

#include <vpi/algo/FASTCorners.h>

使用默认值初始化 VPIFASTCornerDetectorParams

默认值是

  • circleRadius: 3
  • arcLength: 9
  • intensityThreshold: 10
  • nonMaxSuppression: 1
返回值
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL。
VPI_SUCCESS操作成功执行。

◆ vpiSubmitFASTCornerDetector()

VPIStatus vpiSubmitFASTCornerDetector ( VPIStream  stream,
uint64_t  backend,
VPIImage  input,
VPIArray  outCorners,
const VPIFASTCornerDetectorParams params,
VPIBorderExtension  border 
)

#include <vpi/algo/FASTCorners.h>

提交 FAST 角点检测器 操作到流。

参数
[in]stream操作将排队到的流。
  • 不得为 NULL。
  • 流必须启用将执行该算法的后端。
[in]backend将执行该算法的后端。
[in]input从中提取 FAST 角点的输入图像。
[out]outCorners将接收检测到的角点的数组。数组大小会使用找到的角点数量进行更新。
[in]params指向 VPIFASTCornerDetectorParams 的指针。它定义了此算法调用的参数。这些参数可以在每次调用中变化,并将被内部复制。因此,无需保留参数对象。
[in]border如何处理图像边界外的像素。
返回值
VPI_ERROR_INVALID_ARGUMENTstream 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinputoutCorners 为 NULL。
VPI_ERROR_INVALID_ARGUMENTparams 中的圆形半径超出有效范围。
VPI_ERROR_INVALID_ARGUMENTparams 中的弧长超出有效范围。
VPI_ERROR_INVALID_ARGUMENTparams 中的强度阈值超出有效范围。
VPI_ERROR_INVALID_ARRAY_TYPE无效的 outCorners 数组类型。
VPI_ERROR_INVALID_IMAGE_FORMAT不支持的输入格式。
VPI_ERROR_INVALID_OPERATION所需的后端未在 streaminputoutCorners 中启用。
VPI_SUCCESS操作成功执行。