Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef UTIL3D_FEATURES_H_
00029 #define UTIL3D_FEATURES_H_
00030
00031 #include <rtabmap/core/RtabmapExp.h>
00032
00033 #include <opencv2/calib3d/calib3d.hpp>
00034 #include <rtabmap/core/Transform.h>
00035 #include <rtabmap/core/CameraModel.h>
00036 #include <rtabmap/core/StereoCameraModel.h>
00037 #include <list>
00038 #include <map>
00039
00040 namespace rtabmap
00041 {
00042
00043 namespace util3d
00044 {
00045
00046
00047 std::vector<cv::Point3f> RTABMAP_EXP generateKeypoints3DDepth(
00048 const std::vector<cv::KeyPoint> & keypoints,
00049 const cv::Mat & depth,
00050 const CameraModel & cameraModel,
00051 float minDepth = 0,
00052 float maxDepth = 0);
00053
00054 std::vector<cv::Point3f> RTABMAP_EXP generateKeypoints3DDepth(
00055 const std::vector<cv::KeyPoint> & keypoints,
00056 const cv::Mat & depth,
00057 const std::vector<CameraModel> & cameraModels,
00058 float minDepth = 0,
00059 float maxDepth = 0);
00060
00061 std::vector<cv::Point3f> RTABMAP_EXP generateKeypoints3DDisparity(
00062 const std::vector<cv::KeyPoint> & keypoints,
00063 const cv::Mat & disparity,
00064 const StereoCameraModel & stereoCameraModel,
00065 float minDepth = 0,
00066 float maxDepth = 0);
00067
00068 std::vector<cv::Point3f> RTABMAP_EXP generateKeypoints3DStereo(
00069 const std::vector<cv::Point2f> & leftCorners,
00070 const std::vector<cv::Point2f> & rightCorners,
00071 const StereoCameraModel & model,
00072 const std::vector<unsigned char> & mask = std::vector<unsigned char>(),
00073 float minDepth = 0,
00074 float maxDepth = 0);
00075
00076 std::map<int, cv::Point3f> RTABMAP_EXP generateWords3DMono(
00077 const std::map<int, cv::KeyPoint> & kpts,
00078 const std::map<int, cv::KeyPoint> & previousKpts,
00079 const CameraModel & cameraModel,
00080 Transform & cameraTransform,
00081 int pnpIterations = 100,
00082 float pnpReprojError = 8.0f,
00083 int pnpFlags = 0,
00084 int pnpRefineIterations = 1,
00085 float ransacParam1 = 3.0f,
00086 float ransacParam2 = 0.99f,
00087 const std::map<int, cv::Point3f> & refGuess3D = std::map<int, cv::Point3f>(),
00088 double * variance = 0);
00089
00090 std::multimap<int, cv::KeyPoint> RTABMAP_EXP aggregate(
00091 const std::list<int> & wordIds,
00092 const std::vector<cv::KeyPoint> & keypoints);
00093
00094 }
00095 }
00096
00097 #endif