VPI - 视觉编程接口

3.2 版本

Harris 角点

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

数据结构

struct  VPIHarrisCornerDetectorParams
 定义 vpiSubmitHarrisCornerDetector 参数的结构体。 更多...
 

函数

VPIStatus vpiInitHarrisCornerDetectorParams (VPIHarrisCornerDetectorParams *params)
 使用默认值初始化 VPIHarrisCornerDetectorParams更多...
 
VPIStatus vpiCreateHarrisCornerDetector (uint64_t backends, int32_t inputWidth, int32_t inputHeight, VPIPayload *payload)
 创建 Harris 角点检测器 有效载荷。 更多...
 
VPIStatus vpiSubmitHarrisCornerDetector (VPIStream stream, uint64_t backend, VPIPayload payload, VPIImage input, VPIArray outFeatures, VPIArray outScores, const VPIHarrisCornerDetectorParams *params)
 向流提交 Harris 角点检测器 操作。 更多...
 

详细描述

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

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


数据结构文档

◆ VPIHarrisCornerDetectorParams

struct VPIHarrisCornerDetectorParams

定义 vpiSubmitHarrisCornerDetector 参数的结构体。

定义于文件 HarrisCorners.h 的第 81 行。

+ VPIHarrisCornerDetectorParams 的协作图
数据字段
int32_t gradientSize 梯度窗口大小。
  • 必须为 3、5 或 7。
int32_t blockSize 用于计算 Harris 角点得分的块窗口大小。
  • 必须为 3、5 或 7。
float strengthThresh 指定用于消除 Harris 角点得分的最小阈值。
  • 阈值取决于输入图像范围。对于图像格式 U8 和 S8,它在 [0-20] 范围内。对于 U16 和 S16 可以更大。
  • 必须 >= 0。
float sensitivity 指定 Harris-Stephens 方程的灵敏度阈值。
float minNMSDistance 非极大值抑制半径,设置为 0 则禁用。
  • 在 PVA 后端,此值必须设置为 8。

函数文档

◆ vpiInitHarrisCornerDetectorParams()

VPIStatus vpiInitHarrisCornerDetectorParams ( VPIHarrisCornerDetectorParams params)

#include <vpi/algo/HarrisCorners.h>

使用默认值初始化 VPIHarrisCornerDetectorParams

默认值为

  • gradientSize: 3
  • blockSize: 3
  • strengthThresh: 20
  • sensitivity: 0.0625
  • minNMSDistance: 8
返回值
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL。
VPI_SUCCESS操作成功执行。

◆ vpiCreateHarrisCornerDetector()

VPIStatus vpiCreateHarrisCornerDetector ( uint64_t  backends,
int32_t  inputWidth,
int32_t  inputHeight,
VPIPayload payload 
)

#include <vpi/algo/HarrisCorners.h>

创建 Harris 角点检测器 有效载荷。

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

参数
[in]backends有资格执行该算法的 VPI 后端。
[in]inputWidth,inputHeight将与此有效载荷一起使用的输入图像的尺寸。
  • 在 PVA 上,尺寸限制为最小 160x120,最大 3264x2448。
  • 必须 >= 0(其他后端)。
[out]payload指向接收创建句柄的有效载荷变量的指针。
返回值
VPI_ERROR_INVALID_ARGUMENTpayload 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinputWidthinputHeight 超出有效范围。
VPI_ERROR_INVALID_ARGUMENTbackends 引用无效的后端。
VPI_ERROR_INVALID_OPERATION后端硬件不可用。
VPI_ERROR_NOT_IMPLEMENTED给定后端不支持 Harris 角点检测器算法。
VPI_ERROR_INVALID_CONTEXT当前上下文已销毁。
VPI_ERROR_OUT_OF_MEMORY无法分配所需资源。
VPI_ERROR_INVALID_OPERATION后端未在当前上下文中启用。
VPI_SUCCESS操作成功执行。

◆ vpiSubmitHarrisCornerDetector()

VPIStatus vpiSubmitHarrisCornerDetector ( VPIStream  stream,
uint64_t  backend,
VPIPayload  payload,
VPIImage  input,
VPIArray  outFeatures,
VPIArray  outScores,
const VPIHarrisCornerDetectorParams params 
)

#include <vpi/algo/HarrisCorners.h>

向流提交 Harris 角点检测器 操作。

参数
[in]stream将在其中排队操作的流。
  • 不得为 NULL。
  • 流必须已启用将执行该算法的后端。
[in]backend将执行该算法的后端。
  • 必须是有效载荷创建期间指定的后端,或 0 作为使用此后端的简写。
[in]payload要与其他参数一起提交的有效载荷。
[in]input从中提取 Harris 角点的输入图像。
[out]outFeatures将接收检测到的角点的数组。数组大小会根据找到的角点数量进行更新。
[out]outScores将接收角点得分的数组。数组大小与 outFeatures 数组的大小匹配。
  • 不得为 NULL。
  • 它必须具有类型 VPI_ARRAY_TYPE_U32
  • 数组必须已启用将执行该算法的后端。
  • 必须具有与 outFeatures 相同的容量。
[in]params指向 VPIHarrisCornerDetectorParams 的指针,其中包含此算法调用的参数。这些参数在每次调用中都可能不同,并且将在内部复制,无需保留该对象。
返回值
VPI_ERROR_INVALID_ARGUMENTstream 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinputoutFeaturesoutScores 为 NULL。
VPI_ERROR_INVALID_ARGUMENTpayload 不是由 vpiCreateHarrisCornerDetector 创建的。
VPI_ERROR_INVALID_ARGUMENTparams 中的强度阈值超出有效范围。
VPI_ERROR_INVALID_ARGUMENT输出数组必须具有相同的容量。
VPI_ERROR_INVALID_ARGUMENT不支持的 outFeaturesoutScores 类型。
VPI_ERROR_INVALID_ARGUMENT无效的 input 尺寸。
VPI_ERROR_INVALID_PAYLOAD_TYPEpayload 无效。
VPI_ERROR_INVALID_IMAGE_FORMAT不支持的输入格式。
VPI_ERROR_INVALID_OPERATION所需的后端未在 streamoutFeaturesoutScores 中启用。
VPI_SUCCESS操作成功执行。