对于时间复杂度的big-O表示法,在OpenCV(C ++)中实现的Lucas-Kanade光流计算的复杂程度是多少?你是怎么推断出来的?
谢谢!
答案 0 :(得分:5)
假设扭曲参数的数量为n
,T
中的像素数为N
。 Lucas-Kanade算法的每次迭代的总计算成本是。您可以从Lucas-Kanade 20 Years On: A Unifying Framework: Part 1 - 2.4找到此类信息和讨论。
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
等于2
和N
是帧上的像素数量,例如(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)
。