基于farneback算法的cuda加速体光流估计
farneback3d的Python项目详细描述
计算稠密体积流场的farneback光流算法[1]的cuda实现。由于该算法是基于多项式展开的信号逼近,特别适用于没有清晰边缘的平滑信号的运动估计。
要了解有关实现的更多信息,请查看用作此实现模板的this OpenCV class。
发展发生在Github。
python接口
该项目使用pycuda来提供pypi上可用的纯python包
pip install farneback3d
用法:
importfarneback3d...# create some numpy volumes vol0 and vol1 (can also be pycuda GPUArrays)# set parameters for optical flow (parameters have the same meaning as in the OpenCV implementation)optflow=farneback3d.Farneback(pyr_scale=0.8,# Scaling between multi-scale pyramid levelslevels=6,# Number of multi-scale levelsnum_iterations=5,# Iterations on each multi-scale levelwinsize=9,# Window size for Gaussian filtering of polynomial coefficientspoly_n=5,# Size of window for weighted least-square estimation of polynomial coefficientspoly_sigma=1.2,# Sigma for Gaussian weighting of least-square estimation of polynomial coefficients)# calculate frame-to-frame flow between vol0 and vol1flow=optflow.calc_flow(vol0,vol1)
< H2> C++界面
待实施……
未来计划
当前的实现使用一种简单的方法来执行必要的卷积。 通过沿每个坐标轴执行可分离卷积可以极大地加快算法。
参考文献
[1] | Farnebäck, Gunnar. “Two-frame motion estimation based on polynomial expansion.” Scandinavian conference on Image analysis. Springer, Berlin, Heidelberg, 2003. |