Lucas-Kanade算法的计算复杂度是多少?

时间:2014-01-14 10:34:00

标签: c++ opencv big-o time-complexity opticalflow

对于时间复杂度的big-O表示法,在OpenCV(C ++)中实现的Lucas-Kanade光流计算的复杂程度是多少?你是怎么推断出来的?

谢谢!

2 个答案:

答案 0 :(得分:5)

假设扭曲参数的数量为nT中的像素数为N。 Lucas-Kanade算法的每次迭代的总计算成本是enter image description here。您可以从Lucas-Kanade 20 Years On: A Unifying Framework: Part 1 - 2.4找到此类信息和讨论。

enter image description here

ps:我不知道OpenCV实现的计算复杂性。但是,为了合理,与上述相同。

答案 1 :(得分:2)

基于OpenCV github和Lucas-Kanade 20 Years On: A Unifying Framework: Part 1 - 2.4中的信息,我可以这样说:

在2D跟踪算法(x, y)中使用光流与Lucas-Kanade like opencv stated n等于2N是帧上的像素数量,例如(height*width)在我的研究中(精子追踪),我使用n=2(2D追踪)和T=788*388

我们可以在第178行for( size_t ptidx = 0; ptidx < npoints; ptidx++)上看到here,为每个功能完成此操作。

所以O(N*n^2 + n^3)适用于一项功能,F功能适用于O(F*N*n^2 + F*n^3)