如何使用buildticticalflowpyramid

How to use buildOpticalFlowPyramid?

本文关键字:buildticticalflowpyramid 何使用      更新时间:2023-10-16

我正在使用opencv 3.3.1。我想使用cv::calcOpticalFlowPyrLK进行半密集的光流操作,但是每当我的投资回报率很大时,我都会变得非常明显的放缓(部分是由于我让用户决定获胜应有的内容。是,从10到100 )。无论如何,cv::buildOpticalFlowPyramid似乎可以通过构建图像金字塔来减轻放缓吗?我有点熟悉什么图像金字塔是什么,但是在功能的背景下,我对传递的参数以及它如何影响我的功能调用cv::calcOpticalFlowPyrLK特别感到困惑。考虑到这一点,我现在有这些问题:

  • 根据文档,输出是OutputArrayOfArrays,我认为它可以是CV :: MAT对象的向量。如果是这样,对于prevImgnextImg,我该传递到cv::calcOpticalFlowPyrLK假设我需要为这两个
  • 根据cv::buildOpticalFlowPyramid的文档,您需要传递Winsize参数,以计算金字塔级别所需的填充。如果是这样,当您最终致电cv::calcOpticalFlowPyrLK时,您是否通过相同的胜利值?
  • pyrBorderderivBorder的论点到底是什么?
  • 最后,如果听起来很新,则表示歉意,但是此功能的目的是什么?我一直以为cv::calcOpticalFlowPyrLK在内部构建图像金字塔。只是为了加快光流操作吗?

我希望我的问题很清楚,我仍然是OpenCV和计算机视觉的新手,但是这个话题非常有趣。

谢谢您的时间。

编辑:

我使用该功能来查看我的猜测是否正确,到目前为止它已经起作用了,但是我没有明显的速度。以下是我的使用方式:

    // Building pyramids
    int maxLvl = 3;
    maxLvl = cv::buildOpticalFlowPyramid(imgPrev, imPyr1, cv::Size(searchSize, searchSize), maxLvl, true);
    maxLvl = cv::buildOpticalFlowPyramid(tmpImg, imPyr2, cv::Size(searchSize, searchSize), maxLvl, true);
    // LK optical flow call
    cv::calcOpticalFlowPyrLK(imPyr1, imPyr2, currentPoints, nextPts, status, err,
                             cv::Size(searchSize, searchSize), maxLvl, termCrit, 0, 0.00001); 

所以现在我想知道,如果钙质流质体内部,准备图像金字塔的目的是什么?

,因此问题的目的是您试图通过调谐输入参数来提高光流跟踪的速度。

如果您想要肮脏和快速的答案,则在这里是

 KTL (OpenCV's calcOpticalFlowPyrLK) define a e residual function which are sum of gradient of point inside search window .
The main purpose is to find vector of point that can minimize residual function
So if you increase search window size (winSize) then it is more difficult to find that set of points.

如果您真的很想这样做,请阅读官方论文。请参阅第2.4节

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1.1.185.585& rep; rep=rep = rep1&tep.type = pdf

我从官方文件中拿走了

希望帮助

相关文章:
  • 没有找到相关文章