I'm trying to estimate a motion from a video, however based on my finding, those methods usually meant for large motion and sparse in nature.

Optical flow: Sparse and fail to detect sub-pixel motion

Phase-based: Only applicable to global shutter camera for accurate displacement

Welcome any suggestion/discussion you guys have in mind that would allow me to determine sub-pixel motion for every pixel that applicable to rolling shutter camera! Thanks in advance!

  • $\begingroup$ I'm afraid that what you're asking for doesn't compute. You want the "sub-pixel motion for every pixel" -- does this mean you have as many objects as pixels, or that you have a few super-small objects, or what? You need to give more information. As to correcting for rolling shutter -- I think you'll need to estimate the object's speed and position, and then correct for the rolling shutter. This may be an iterative process, and it's certainly going to difficult as the object's speed approaches the speed of the shutter (and impossible when it reaches it). $\endgroup$
    – TimWescott
    Commented Dec 11, 2019 at 20:27
  • $\begingroup$ Traditional Lukas-Kanade optical flow is dense and estimates sub-pixel displacements. $\endgroup$ Commented Dec 1, 2021 at 4:04

1 Answer 1


You can use Farneback to estimate dense flow. In OpenCV, the function call is calcOpticalFlowFarneback().

Please note that the initial flow is important and you can use one of OPTFLOW_FARNEBACK_GAUSSIAN or OPTFLOW_USE_INITIAL_FLOW.

It depends on the depth of the pre calculation to estimate the segmentation before calculating the frame to frame flow.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.