使用判别相关滤波器 (DCF) 算法跟踪帧序列中的对象边界框。更多...
数据结构 | |
结构体 | VPIDCFTrackerCreationParams |
DCF 跟踪器的创建参数。更多... | |
结构体 | VPIDCFTrackerParams |
定义 vpiCreateDCFTracker 参数的结构体。更多... | |
结构体 | VPIDCFTrackedBoundingBox |
存储关于由 DCF 跟踪器 跟踪的对象的信息。更多... | |
枚举 | |
枚举 | VPIDCFTrackerCreationFlag |
用于自定义 DCF 跟踪器算法的标志。更多... | |
函数 | |
VPIStatus | vpiInitDCFTrackerCreationParams (VPIDCFTrackerCreationParams *params) |
使用默认值初始化 VPIDCFTrackerCreationParams。更多... | |
VPIStatus | vpiCreateDCFTracker (uint64_t backends, int32_t maxNumSequences, int32_t maxNumObjects, const VPIDCFTrackerCreationParams *params, VPIPayload *payload) |
为 DCF 跟踪器创建负载。更多... | |
VPIStatus | vpiInitDCFTrackerParams (VPIDCFTrackerParams *params) |
使用默认值初始化 VPIDCFTrackerParams。更多... | |
VPIStatus | vpiSubmitDCFTrackerLocalizeBatch (VPIStream stream, uint64_t backend, VPIPayload payload, const int32_t *enabledSequences, int32_t numSequences, VPIImage featureMaskingWindow, VPIImage inPatches, VPIArray inObjects, VPIArray outObjects, VPIImage outCorrelationResponses, VPIArray outMaxCorrelationResponses, const VPIDCFTrackerParams *params) |
使用判别相关滤波器方法在输入图像块中定位每个被跟踪对象。更多... | |
VPIStatus | vpiSubmitDCFTrackerUpdateBatch (VPIStream stream, uint64_t backend, VPIPayload payload, const int32_t *enabledSequences, int32_t numSequences, VPIImage featureMaskingWindow, VPIImage modelMaskingWindow, VPIImage inPatches, VPIArray trackedObjects, const VPIDCFTrackerParams *params) |
基于内部对象跟踪信息及其对应的输入图像块更新内部对象跟踪信息。更多... | |
VPIStatus | vpiDCFTrackerGetChannelWeights (VPIPayload payload, VPIArray *channelWeights, int32_t *numFeatureChannels) |
返回包含每个被跟踪对象的通道权重信息的数组。更多... | |
使用判别相关滤波器 (DCF) 算法跟踪帧序列中的对象边界框。
处理流程允许外部自定义跟踪算法,包括跟踪终止条件和外部细化跟踪对象边界框的估计。
处理流程的高级伪代码如下
struct VPIDCFTrackerCreationParams |
DCF 跟踪器的创建参数。
定义在 191 行 DCFTracker.h 文件中。
数据字段 | ||
---|---|---|
uint32_t | flags | 用于自定义 DCF 跟踪器算法的标志。
|
int32_t | featurePatchSize | 对象特征块的大小。 块图像始终是正方形,因此传递的值对应于一个维度。
|
int32_t | hogCellSize | 定向梯度直方图的特征的单元格大小。
|
float | featureFocusVertOffsetFactor | 汉宁窗口中心相对于块高度的偏移量。
|
float | gaussianSigma | 期望响应的高斯函数的标准差。
|
struct VPIDCFTrackerParams |
定义 vpiCreateDCFTracker 的参数的结构体。
定义在 277 行 DCFTracker.h 文件中。
数据字段 | ||
---|---|---|
float | dcfRegFactor | DCF 滤波器创建中使用的正则化因子。 |
struct VPIDCFTrackedBoundingBox |
数据字段 | ||
---|---|---|
VPIAxisAlignedBoundingBoxF32 | bbox | 被跟踪对象周围的边界框。 |
VPITrackingState | state | 此边界框的跟踪状态。 |
int32_t | seqIndex | 跟踪对象所在的输入序列的索引。 如果 seqIndex < 0,则假定序列被禁用,即,对象将不会被处理。 |
float | filterLR | 指数移动平均中 DCF 滤波器的学习率。
|
float | filterChannelWeightsLR | DCF 中不同特征通道权重的学习率。
|
void * | userData | 指向某些未指定用户数据的指针。 这用于将某些外部数据与跟踪对象关联。DCFTracker 不会以任何方式解释它,它只会复制它。 |
#include <vpi/algo/DCFTracker.h>
用于自定义 DCF 跟踪器算法的标志。
定义在 178 行 DCFTracker.h 文件中。
VPIStatus vpiInitDCFTrackerCreationParams | ( | VPIDCFTrackerCreationParams * | params | ) |
#include <vpi/algo/DCFTracker.h>
使用默认值初始化 VPIDCFTrackerCreationParams。
默认值
[out] | params | 要填充默认值的结构体。 |
VPI_ERROR_INVALID_ARGUMENT | params 为 NULL。 |
VPI_SUCCESS | 操作成功执行。 |
VPIStatus vpiCreateDCFTracker | ( | uint64_t | backends, |
int32_t | maxNumSequences, | ||
int32_t | maxNumObjects, | ||
const VPIDCFTrackerCreationParams * | params, | ||
VPIPayload * | payload | ||
) |
#include <vpi/algo/DCFTracker.h>
为 DCF 跟踪器创建负载。
[in] | backends | 有资格执行该算法的 VPI 后端。
|
[in] | maxNumSequences | 包含对象的序列的最大数量。
|
[in] | maxNumObjects | 要跟踪的最大对象数。
|
[in] | params | 配置参数。传递 NULL 以使用 vpiInitDCFTrackerCreationParams 指定的默认值。 |
[out] | payload | 指向接收创建句柄的负载变量的指针。 |
VPI_ERROR_INVALID_ARGUMENT | payload 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | backends 指的是无效的后端。 |
VPI_ERROR_INVALID_ARGUMENT | maxTrackedObjects 超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | 一个或多个配置参数无效。 |
VPI_ERROR_INVALID_OPERATION | PVA 硬件不可用。 |
VPI_ERROR_INVALID_OPERATION | 后端在当前上下文中未启用。 |
VPI_ERROR_NOT_IMPLEMENTED | 给定后端不支持 DCF 跟踪器算法。 |
VPI_ERROR_INVALID_CONTEXT | 当前上下文已销毁。 |
VPI_ERROR_OUT_OF_MEMORY | 无法分配所需资源。 |
VPI_SUCCESS | 操作成功执行。 |
VPIStatus vpiInitDCFTrackerParams | ( | VPIDCFTrackerParams * | params | ) |
#include <vpi/algo/DCFTracker.h>
使用默认值初始化 VPIDCFTrackerParams。
默认值
[out] | params | 要填充默认值的结构体。 |
VPIStatus vpiSubmitDCFTrackerLocalizeBatch | ( | VPIStream | stream, |
uint64_t | backend, | ||
VPIPayload | payload, | ||
const int32_t * | enabledSequences, | ||
int32_t | numSequences, | ||
VPIImage | featureMaskingWindow, | ||
VPIImage | inPatches, | ||
VPIArray | inObjects, | ||
VPIArray | outObjects, | ||
VPIImage | outCorrelationResponses, | ||
VPIArray | outMaxCorrelationResponses, | ||
const VPIDCFTrackerParams * | params | ||
) |
#include <vpi/algo/DCFTracker.h>
使用判别相关滤波器方法在输入图像块中定位每个被跟踪对象。
每个被跟踪对象的边界框将使用对象在其对应的输入块中的估计位置进行更新。
[in] | stream | 操作将要排队进入的流。
| |||||||||
[in] | backend | 将执行该算法的后端。
| |||||||||
[in] | payload | 由 vpiCreateDCFTracker 创建的负载。
| |||||||||
[in] | enabledSequences | 定义要处理其对象的序列,而与其状态无关。 如果数组中的元素为 0,则引用给定索引的序列的对象将不会被处理,否则算法将使用对象的状态来判断是否要处理对象。
| |||||||||
[in] | numSequences | enabledSequences 中的元素数。 如果对象引用索引 >= numSequences 的序列,则假定此序列已启用。 或者,如果引用的序列索引 < 0,则假定此序列已禁用。
| |||||||||
[in] | featureMaskingWindow | 用作应用于每个对象特征通道的窗口的图像,通常用于减少边界效应。 如果为 NULL,则将在所有被跟踪的对象中使用标准汉宁窗口。
| |||||||||
[in] | inPatches | 包含可能包含被跟踪对象的图像块的图像。 块通常由 CropScaler 算法生成。
| |||||||||
[in] | inObjects | 包含被跟踪对象的输入数组。
| |||||||||
[out] | outObjects | 输出对象的数组,其边界框已使用输入序列上的估计位置进行更新。 仅更新状态为 VPI_TRACKING_STATE_TRACKED 的对象。 其余对象只是被复制。
| |||||||||
[out] | outCorrelationResponses | 可选输出,包含每个被跟踪对象的关联响应图。 如果为 NULL,则不会生成关联响应。 对象 'o' 的关联图将从行 o * featurePatchSize 开始,高度为 'featurePatchSize'。
| |||||||||
[out] | outMaxCorrelationResponses | 可选输出,包含每个被跟踪对象的最大关联响应。 最大关联响应仅对状态为 VPI_TRACKING_STATE_TRACKED 和 VPI_TRACKING_STATE_SHADOW_TRACKED 的对象有效。
| |||||||||
[in] | params | DCF 跟踪器算法的控制参数。 如果为 NULL,则使用 vpiInitDCFTrackerParams 指定的默认值。 |
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | inPatches 、inObjects 或 outObjects 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | payload 不是由 vpiCreateDCFTracker 创建的。 |
VPI_ERROR_INVALID_ARGUMENT | inObjects 或 outObjects 中不支持的数组类型。 |
VPI_ERROR_INVALID_ARGUMENT | outObjects 容量太小。 |
VPI_ERROR_INVALID_ARGUMENT | params 中的参数超出有效范围。 |
VPI_ERROR_INVALID_PAYLOAD_TYPE | payload 无效。 |
VPI_ERROR_INVALID_OPERATION | 所需的后端在 stream 、inPatches 、inObjects 或 outObjects 中未启用。 |
VPI_SUCCESS | 操作成功执行。 |
VPIStatus vpiSubmitDCFTrackerUpdateBatch | ( | VPIStream | stream, |
uint64_t | backend, | ||
VPIPayload | payload, | ||
const int32_t * | enabledSequences, | ||
int32_t | numSequences, | ||
VPIImage | featureMaskingWindow, | ||
VPIImage | modelMaskingWindow, | ||
VPIImage | inPatches, | ||
VPIArray | trackedObjects, | ||
const VPIDCFTrackerParams * | params | ||
) |
#include <vpi/algo/DCFTracker.h>
基于内部对象跟踪信息及其对应的输入图像块更新内部对象跟踪信息。
对每个对象执行的操作取决于对象的状态
[in] | stream | 操作将要排队进入的流。
| |||||||||
[in] | backend | 将执行该算法的后端。
| |||||||||
[in] | payload | 由 vpiCreateDCFTracker 创建的负载。
| |||||||||
[in] | enabledSequences | 定义要处理其对象的序列,而与其状态无关。 如果数组中的元素为 0,则引用给定索引的序列的对象将不会被处理,否则算法将使用对象的状态来判断是否要处理对象。
| |||||||||
[in] | numSequences | enabledSequences 中的元素数。 如果对象引用索引 >= numSequences 的序列,则假定此序列已启用。 或者,如果引用的序列索引 < 0,则假定此序列已禁用。
| |||||||||
[in] | featureMaskingWindow | 用作应用于每个对象特征通道的窗口的图像,通常用于减少边界效应。 如果为 NULL,则将对所有被跟踪的块使用标准汉宁窗口。
| |||||||||
[in] | modelMaskingWindow | 用作应用于内部对象模型的窗口的图像。 如果为 NULL,则将使用特征掩蔽窗口。
| |||||||||
[in] | inPatches | 包含 trackedObjects 中每个对象的块的图像,这些块对应于其边界框。 块通常由 CropScaler 算法生成。
| |||||||||
[in,out] | trackedObjects | 包含被跟踪对象的数组。
| |||||||||
[in] | params | DCF 跟踪器算法的控制参数。 如果为 NULL,则使用 vpiInitDCFTrackerParams 指定的默认值。 |
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | inPatches 或 trackedObjects 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | payload 不是由 vpiCreateDCFTracker 创建的。 |
VPI_ERROR_INVALID_ARGUMENT | inPatches 维度超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | trackedObjects 中不支持的数组类型。 |
VPI_ERROR_INVALID_ARGUMENT | params 中的参数超出有效范围。 |
VPI_ERROR_INVALID_PAYLOAD_TYPE | payload 无效。 |
VPI_ERROR_INVALID_OPERATION | 所需的后端在 stream 、inPatches 或 trackedObjects 中未启用。 |
VPI_SUCCESS | 操作成功执行。 |
VPIStatus vpiDCFTrackerGetChannelWeights | ( | VPIPayload | payload, |
VPIArray * | channelWeights, | ||
int32_t * | numFeatureChannels | ||
) |
#include <vpi/algo/DCFTracker.h>
返回包含每个被跟踪对象的通道权重信息的数组。
[in] | payload | 由 vpiCreateDCFTracker 创建的负载。
|
[out] | channelWeights | 每个被跟踪对象的通道权重数组。 返回的 VPIArray 具有类型 VPI_ARRAY_TYPE_F32,大小等于 numFeatureChannels 乘以被跟踪对象的数量。 数组缓冲区 'd' 中索引为 'o' 的对象权重 'c' 由下式给出\[ w_d(c,o) = (float)d + c * numFeatureChannels \] 权重信息仅对状态为 VPI_TRACKING_STATE_TRACKED 的对象有效。
|
[out] | numFeatureChannels | 每个对象的特征通道数量。 |
VPI_ERROR_INVALID_ARGUMENT | channelWeights 或 numFeatureChannels 为 NULL。 |
VPI_SUCCESS | 操作成功执行。 |