calcOpticalFlowPyrLK了解算法

时间:2019-01-09 17:53:12

标签: c++ opencv opticalflow

我试图了解一些在openCV函数cv :: calcOpticalFlowPyrLK中以C ++实现的Lucas Kanade光流算法。假设我正在尝试计算第1帧和第2帧之间的光通量。

  1. 我知道您需要为frame1输入goodFeaturesToTrack(另一个基于Shi Tomasi的openCV函数),然后运行该函数会在frame 2中生成特征。Shi Tomasi的论文说,要获得最佳特征,建议同时使用两个帧背靠背的平移,因为它们仍处于非常接近的翘曲中,可以忽略不计,并且将第一帧与当前帧相比进行仿射变换,以确保特征在帧上保持最小差异一段时间以确保功能最适合跟踪。本文引用了第一个帧和最后一个帧相距约25帧的示例,但没有指出这可能如何变化。因此,我的问题是-您现在应该多久为框架1重新生成一个新功能-假设您在移动设备上,一段时间后将不得不考虑新的空间?是否应该将这些功能与逐帧翻转的旧功能完全结合起来,这样您就不会丢失序列中的仿射变换比较,如何将它们组合在一起?

  2. calcOpticalFlowPyrLK允许发送图像以在两个不同帧之间求值,或者允许输入金字塔prevImg和nextImg输入金字塔。但是,它也允许使用here中所述的输入参数maxLevel,其中0表示仅使用图像,或者更大的数量表示使用您指示的金字塔图像数量来计算光流。所以,我的问题是,如果您指定一个大于0的数字,那么如果您发送第1帧和第2帧的图像,会为您完成计算吗?在发送4层金字塔与告诉它基于maxLevel的int做相同的事情之间有什么区别吗?

感谢您的高级输入。如果您在使用它时学到了其他算法技巧和窍门,那么我也很乐意听到这一点。

0 个答案:

没有答案