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:
- 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
- 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?)
- 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!