Ask Your Question

Revision history [back]

Fast and robust 2D 3D Feature Matching

Hi,

I'm currently working on PoseEstimation based on 2D 3D matches. My current state is:

  • a 3D PointCloud is given, each point has some descriptors and a reprojection error
  • a 2D Image with a rough pose estimation is provided

My question is the following: What is the best way to refine the pose of the input image. Let me explain my current idea:

  1. cv::projectPoints() project 3D points into 2D space based on the rough pose estimation (calibration is known) this will result in a std::vector<cv::point2f> estimated2DProjection
  2. now match the descriptors from 3D projection and the ones from the new image by taking the euclidean distance into account. (How can this be done fast?)
  3. get pose estimation by using cv::solvePnPRansac

But is there such a matcher in OpenCV? I only find matchers which compare only descriptors but not euclidean distance. Or is there a simple way to take constraints provided by epipolar geometry into account?

Do you have a hint for me? I'm trying to find a fast (and robust) solution since i'm developing for mobile devices.

Thanks in advance!