OpenCV和光流的旋转和位置跟踪

时间:2013-07-08 15:25:17

标签: opencv opticalflow

我想使用Optical Flow跟踪OpenCV中对象的旋转和平移。到目前为止,我有这样的事情:

  1. 调用goodFeaturesToTrack查找初始功能
  2. 调用calcOpticalFlowPyrLK以跟踪要素点的移动
  3. 调用findHomography查找图像A中的点如何移动到图像B
  4. 调用perspectiveTransform根据单应性移动点
  5. 调用solvePnPRansac以查找旋转矩阵和平移 向量
  6. 此时我正试图区分图像之间的旋转和平移Mat,并将它们添加到初始旋转和平移矩阵中。

    cv::solvePnPRansac(pattern.points3d, _points2d, calibration.getIntrinsic(), calibration.getDistorsion(), raux, taux);
    raux.convertTo(Rvec, CV_32F);
    taux.convertTo(Tvec, CV_32F);
    
    cv::Mat_<float> rotMat(3, 3);
    cv::Rodrigues(Rvec, rotMat);
    cv::Mat_<float> transDiff   = _prevTranslation - Tvec;
    cv::Mat_<float> rotDiff     = _prevRotation    - rotMat;
    _absRotation                += rotDiff;
    _absTranslation             += transDiff;
    

    这种方法的问题是翻译矢量不遵循图像。向量倾向于保持在该范围内 [0.02 0.2 -1.5]

    它并不偏离这个位置。

    感谢。

0 个答案:

没有答案