我正在做一个项目,需要跟踪图像中的两个点。到目前为止,识别这些点的最好方法是让用户在程序首次运行时点击它们。我使用的是OpenCV中内置的Lucas Kanade Pyramid方法(这里有文档记录,但不出所料,这并不太好用。有没有更好的替代算法来跟踪OpenCV中的点,或者有其他方法来验证我已经拥有的点?
我目前正在考虑使用GoodFeaturesToTrack,获取从每个点到我想要跟踪的点的距离,也许还有某种向量,指出两点之间的关系,并使用这些信息来确定我的新点。我正在寻找实现这一点的方法建议,而不一定是代码示例。感谢
编辑:我正在跟踪小动作,如果这有助于
如果你寻找一个在opencv中实现的解决方案,金字塔Lucas Kanade(PLK)方法非常好,否则我更喜欢基于粒子过滤器的跟踪器。为了提高PLK的跟踪性能,请确保正确设置了参数。例如,对于大动作,你需要一个大约3或4的水平。窗户不应该太小(我更喜欢17x17比27x27)。还要记住,这些方法需要纹理区域才能跟踪点。这意味着像角落一样的图像内容(光圈问题)。
我建议在要跟踪的点(p)周围的网格中播种一组点(ps)。然后使用前后阈值来拒绝错误跟踪的点。点(P)的运动将通过特定残差点集(ps)的平均运动来计算。
通过估计从帧1到帧2的运动来计算前后置信度。(ptList1->ptList2)。以及从第2帧到第1帧的ptList2点(ptList2->ptListRef)。如果(||ptRef-pt1||>fb_threshold),运动矢量将被拒绝。