Need to clear up some confusion on buildOpticalFlowPyramid
I'm using OpenCV 3.3.1. I want to do a semi-dense optical flow operation using cv::calcOpticalFlowPyrLK
, but I've been getting some really noticeable slowdown whenever my ROI is pretty big (Partly due to the fact that I am letting the user decide what the winSize should be, ranging from from 10 to 100). Anyways, it seems like cv::buildOpticalFlowPyramid
can mitigate the slowdown by building image pyramids? I'm sorta familiar what image pyramids are, but in context of the function, I'm especially confused about what parameters I pass in, and how it impacts my function call to cv::calcOpticalFlowPyrLK
. With that in mind, I now have these set of questions:
- The output is, according to the documentation, is an
OutputArrayOfArrays
, which I take it can be a vector of cv::Mat objects. If so, what do I pass in tocv::calcOpticalFlowPyrLK
forprevImg
andnextImg
(assuming that I need to make image pyramids for both)? - According to the docs for
cv::buildOpticalFlowPyramid
, you need to pass in a winSize parameter in order to calculate required padding for pyramid levels. If so, do you pass in the same winSize value when you eventually callcv::calcOpticalFlowPyrLK
? - What exactly are the arguments for
pyrBorder
andderivBorder
doing? - Lastly, and apologies if it sounds newbish, but what is the purpose of this function? I always assumed that
cv::calcOpticalFlowPyrLK
internally builds the image pyramids. Is it just to speed up the optical flow operation?
I hope my questions were clear, I'm still very new to OpenCV, and computer vision, but this topic is very interesting.
Thank you all for your time.