calcOpticalFlowFarneback

本文详细介绍了使用Gunnar Farneback算法计算密集光流的方法,包括C++、C及Python等不同编程语言的具体实现方式。文章还讨论了算法参数的作用,如金字塔缩放比例、窗口大小等,并提供了使用该算法的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

calcOpticalFlowFarneback

Computes a dense optical flow using the Gunnar Farneback’s algorithm.

C++:  void  calcOpticalFlowFarneback (InputArray  prev, InputArray  next, InputOutputArray  flow, double  pyr_scale, int  levels, int  winsize, int  iterations, int  poly_n, double  poly_sigma, int  flags )
C:  void  cvCalcOpticalFlowFarneback (const CvArr*  prev, const CvArr*  next, CvArr*  flow, double  pyr_scale, int  levels, int  winsize, int  iterations, int  poly_n, double  poly_sigma, int  flags )
Python:   cv2. calcOpticalFlowFarneback (prev, next, flow, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags ) → flow
Parameters:
  • prev – first 8-bit single-channel input image.
  • next – second input image of the same size and the same type as prev.
  • flow – computed flow image that has the same size as prev and type CV_32FC2.
  • pyr_scale – parameter, specifying the image scale (<1) to build pyramids for each image; pyr_scale=0.5 means a classical pyramid, where each next layer is twice smaller than the previous one.
  • levels – number of pyramid layers including the initial image; levels=1 means that no extra layers are created and only the original images are used.
  • winsize – averaging window size; larger values increase the algorithm robustness to image noise and give more chances for fast motion detection, but yield more blurred motion field.
  • iterations – number of iterations the algorithm does at each pyramid level.
  • poly_n – size of the pixel neighborhood used to find polynomial expansion in each pixel; larger values mean that the image will be approximated with smoother surfaces, yielding more robust algorithm and more blurred motion field, typically poly_n =5 or 7.
  • poly_sigma – standard deviation of the Gaussian that is used to smooth derivatives used as a basis for the polynomial expansion; for poly_n=5, you can set poly_sigma=1.1, for poly_n=7, a good value would be poly_sigma=1.5.
  • flags –

    operation flags that can be a combination of the following:

    • OPTFLOW_USE_INITIAL_FLOW uses the input flow as an initial flow approximation.
    • OPTFLOW_FARNEBACK_GAUSSIAN uses the Gaussian \texttt{winsize}\times\texttt{winsize} filter instead of a box filter of the same size for optical flow estimation; usually, this option gives z more accurate flow than with a box filter, at the cost of lower speed; normally, winsize for a Gaussian window should be set to a larger value to achieve the same level of robustness.

The function finds an optical flow for each prev pixel using the [Farneback2003] algorithm so that

\texttt{prev} (y,x)  \sim \texttt{next} ( y + \texttt{flow} (y,x)[1],  x + \texttt{flow} (y,x)[0])

Note

  • An example using the optical flow algorithm described by Gunnar Farneback can be found at opencv_source_code/samples/cpp/fback.cpp
  • (Python) An example using the optical flow algorithm described by Gunnar Farneback can be found at opencv_source_code/samples/python2/opt_flow.py

转载于:https://www.cnblogs.com/casperwin/p/6557662.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值