Forums - fcvTrackBMOpticalFlow16x16u8

2 posts / 0 new
Last post
fcvTrackBMOpticalFlow16x16u8
sagiv
Join Date: 2 Sep 12
Posts: 12
Posted: Fri, 2013-01-25 03:56

I was looking for a "block-matching" implementation for Android, and I came across the FactCV function fcvTrackBMOpticalFlow16x16u8
The documentation gives information on the inputs and outputs of the function, but I have some more general questions regarding the implementation etc.

1. What is the block matching criteria? Meaning, how does the function measure the similarity of the block of pixels in frame k to the block of pixels in frame k+1. Does the function estimate the displacement of the center pixel of the block as the values that minimize the mean square error (MSE), or maybe the mean absolute differences?
2. The function generates Motion Vectors for blocks where motion is detected. Does it mean that the function estimates the displacement of EVERY block, but only returns the motion vectors (dx, dy) where (dx > 0)||(dy>0)?
3. From few tests that I did, it looks like the influence of the ShiftSize or the Number of Blocks on the running time is not linear, I guess it's because the implementation is not naive and uses memory optimization. If so, is there any rule of thumb for tuning the ShiftSize parameter assuming the SearchWidth(and searchHeight) parameters are given in order to achieve the largest spatial coverage and on the other hand good performance?

Thanks!

  • Up0
  • Down0
jeff4s Moderator
Join Date: 4 Nov 12
Posts: 106
Posted: Fri, 2013-02-08 00:39
Answers to your questions: 1. The matching uses sum of absolute difference between two blocks. 2. The function only returns motion vectors when |dx|>0 || |dy|>0, and if some other heuristics are satisfied. 3. Complexity should be roughly proportional to the number of returned motion vectors (numMv).
  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.