Kanade-Lucas-Tomasi (KLT) 特征跟踪器算法使用逆合成算法,估计图像模板在原始模板坐标和给定参考图像之间的 2D 平移和尺度变化。 更多信息,请参阅 [1]。
输入是模板边界框数组、平移和尺度变化预测数组以及参考图像。 此外,模板图像输入用于更新模板补丁(详见下文)。
输出是从输入边界框坐标到参考图像坐标的平移和尺度变化估计数组,以及参考图像中的模板边界框坐标数组。
跟踪结果 |
---|
每个模板边界框定义一个模板图像补丁,该补丁与函数描述符一起在内部存储。 这些模板补丁基于预测的平移和尺度变化在参考图像中进行跟踪。 计算从原始边界框坐标到参考图像坐标的估计平移和尺度变化。 每个这样的估计都包括一个跟踪有效性标志(跟踪成功或失败)以及是否需要模板更新(基于用户定义的阈值参数)。
有关实现该算法的限制、约束和后端的列表,请查阅以下函数的参考文档。
函数 | 描述 |
---|---|
vpiInitKLTFeatureTrackerCreationParams | 初始化 VPIKLTFeatureTrackerCreationParams 为默认值。 |
vpiCreateKLTFeatureTracker | 为 vpiSubmitKLTFeatureTracker 创建负载。 |
vpiSubmitKLTFeatureTracker | 在两个帧上运行 KLT 特征跟踪器。 |
trackingStatus
必须为 0,表示边界框跟踪有效。 templateStatus
必须为 1,表示必须更新与此边界框对应的模板。将跟踪的边界框包装到 VPIArray 中。 数组类型必须是 VPI_ARRAY_TYPE_KLT_TRACKED_BOUNDING_BOX
trackingStatus==1
),则输入边界框也必须标记为丢失,以便后续 KLT 迭代忽略它。 如果需要更新模板 (templateStatus==1
),则下一次迭代将执行更新,否则将执行模板匹配。updated_bbox[b]
并通过其他方式对其进行细化,以避免累积跟踪误差,或者直接按原样使用它,这是一种不太稳健的方法,但仍然可以产生不错的结果。 本示例选择最后一种更简单的方法。有关更多信息,请参阅 VPI - 视觉编程接口 的“C API 参考”部分中的 KLT 特征跟踪器。