28#ifndef UTIL3D_MOTION_ESTIMATION_H_
29#define UTIL3D_MOTION_ESTIMATION_H_
31#include <rtabmap/core/rtabmap_core_export.h>
33#include <rtabmap/core/Transform.h>
34#include <rtabmap/core/CameraModel.h>
100void RTABMAP_CORE_EXPORT setRansacDeterministicSeed(
bool enable);
103bool RTABMAP_CORE_EXPORT ransacDeterministicSeedEnabled();
105Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
106 const std::map<int, cv::Point3f> & words3A,
107 const std::map<int, cv::KeyPoint> & words2B,
108 const CameraModel & cameraModel,
110 int iterations = 100,
111 double reprojError = 5.,
113 int pnpRefineIterations = 1,
114 int varianceMedianRatio = 4,
115 float maxVariance = 0,
117 const std::map<int, cv::Point3f> & words3B = std::map<int, cv::Point3f>(),
118 cv::Mat * covariance = 0,
119 std::vector<int> * matchesOut = 0,
120 std::vector<int> * inliersOut = 0,
121 bool splitLinearCovarianceComponents =
false);
157Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
158 const std::map<int, cv::Point3f> & words3A,
159 const std::map<int, cv::KeyPoint> & words2B,
160 const std::vector<CameraModel> & cameraModels,
161 unsigned int samplingPolicy,
166 int refineIterations,
167 int varianceMedianRatio,
169 const Transform & guess,
170 const std::map<int, cv::Point3f> & words3B,
171 cv::Mat * covariance,
172 std::vector<std::vector<int> > * matchesOut,
173 std::vector<std::vector<int> > * inliersOut,
174 bool splitLinearCovarianceComponents);
179Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
180 const std::map<int, cv::Point3f> & words3A,
181 const std::map<int, cv::KeyPoint> & words2B,
182 const std::vector<CameraModel> & cameraModels,
183 unsigned int samplingPolicy = 0,
185 int iterations = 100,
186 double reprojError = 5.,
188 int pnpRefineIterations = 1,
189 int varianceMedianRatio = 4,
190 float maxVariance = 0,
192 const std::map<int, cv::Point3f> & words3B = std::map<int, cv::Point3f>(),
193 cv::Mat * covariance = 0,
194 std::vector<int> * matchesOut = 0,
195 std::vector<int> * inliersOut = 0,
196 bool splitLinearCovarianceComponents =
false);
219Transform RTABMAP_CORE_EXPORT estimateMotion3DTo3D(
220 const std::map<int, cv::Point3f> & words3A,
221 const std::map<int, cv::Point3f> & words3B,
223 double inliersDistance = 0.1,
224 int iterations = 100,
225 int refineIterations = 5,
226 cv::Mat * covariance = 0,
227 std::vector<int> * matchesOut = 0,
228 std::vector<int> * inliersOut = 0);
260void RTABMAP_CORE_EXPORT solvePnPRansac(
261 const std::vector<cv::Point3f> & objectPoints,
262 const std::vector<cv::Point2f> & imagePoints,
263 const cv::Mat & cameraMatrix,
264 const cv::Mat & distCoeffs,
267 bool useExtrinsicGuess,
269 float reprojectionError,
271 std::vector<int> & inliers,
273 int refineIterations = 1,
274 float refineSigma = 3.0f);