2

我正在做一个项目,我需要跟踪图像中的两个点。到目前为止,我识别这些点的最好方法是让用户在程序第一次运行时点击它们。我正在使用 OpenCV 中内置的 Lucas-Kanade Pyramid 方法(在此处记录,但正如预期的那样,这并不能很好地工作。是否有更好的替代算法来跟踪 OpenCV 中的点,或者其他一些方法验证我已有的积分?
我目前正在考虑使用 GoodFeaturesToTrack,并获取从每个点到我要跟踪的点的距离,也许是某种向量,指出两点之间的关系,并使用这些信息来确定我的新点。我正在寻找解决方法的建议,不一定是代码示例。谢谢

编辑:我正在跟踪小动作,如果有帮助的话

4

1 回答 1

5

如果您寻找在 opencv 中实现的解决方案,金字塔 Lucas Kanade (PLK) 方法非常好,否则我更喜欢基于粒子过滤器的跟踪器。要使用 PLK 提高跟踪性能,请确保您已正确设置参数。例如,对于大动作,您需要一个大约 ca 的水平。3 或 4. 窗口不应该太小(我更喜欢 17x17 到 27x27)。还要记住,这些方法需要纹理区域才能跟踪点。这意味着像图像内容一样的角落(光圈问题)。

我建议在您要跟踪的点 (P) 周围的网格中播种一组点 (ps)。而不是使用前向 - 后向阈值来拒绝错误跟踪的点。您的点 (P) 的运动将通过特定残差点集 (ps) 的平均运动来计算。

通过估计从第 1 帧到第 2 帧的运动来计算前向后向置信度。(ptList1 -> ptList2)。以及从第 2 帧到第 1 帧的点 ptList2 (ptList2 -> ptListRef)。如果 (|| ptRef - pt1 || > fb_threshold),运动矢量将被拒绝。

于 2013-02-09T20:20:42.080 回答