mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Updated EpipolarGeometry methods
Experimental: added OdometryMono in epipolar geometry test git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@1982 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
@@ -65,10 +65,10 @@ public:
|
||||
cv::Vec3d & e1,
|
||||
cv::Vec3d & e2);
|
||||
|
||||
static cv::Mat findPFromF(
|
||||
const cv::Mat & fundamentalMatrix,
|
||||
const cv::Mat & x1,
|
||||
const cv::Mat & x2);
|
||||
static cv::Mat findPFromE(
|
||||
const cv::Mat & E,
|
||||
const cv::Mat & x,
|
||||
const cv::Mat & xp);
|
||||
|
||||
// return fundamental matrix
|
||||
// status -> inliers = 1, outliers = 0
|
||||
@@ -126,8 +126,8 @@ public:
|
||||
const cv::Matx34d & P1); //camera 2 matrix 3x4 double
|
||||
|
||||
static double triangulatePoints(
|
||||
const std::vector<cv::Point2f>& pt_set1,
|
||||
const std::vector<cv::Point2f>& pt_set2,
|
||||
const cv::Mat& pt_set1, //2xN double
|
||||
const cv::Mat& pt_set2, //2xN double
|
||||
const cv::Mat& P, // 3x4 double
|
||||
const cv::Mat& P1, // 3x4 double
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr & pointcloud,
|
||||
|
||||
@@ -127,16 +127,15 @@ public:
|
||||
|
||||
virtual void reset(const Transform & initialPose = Transform::getIdentity());
|
||||
|
||||
const cv::Mat & getLastFrame() const {return lastFrame_;}
|
||||
const std::vector<cv::Point2f> & getLastCorners() const {return lastCorners_;}
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & getLastCorners3D() const {return lastCorners3D_;}
|
||||
|
||||
cv::Mat imgMatches_;
|
||||
const cv::Mat & getLastFrame() const {return refFrame_;}
|
||||
const std::vector<cv::Point2f> & getLastCorners() const {return refCorners_;}
|
||||
const pcl::PointCloud<pcl::PointXYZ>::Ptr & getLastCorners3D() const {return refCorners3D_;}
|
||||
|
||||
private:
|
||||
virtual Transform computeTransform(const SensorData & image, int * quality = 0, int * features = 0, int * localMapSize = 0);
|
||||
Transform computeTransformStereo(const SensorData & image, int * quality, int * features);
|
||||
Transform computeTransformRGBD(const SensorData & image, int * quality, int * features);
|
||||
Transform computeTransformMono(const SensorData & image, int * quality, int * features);
|
||||
private:
|
||||
//Parameters:
|
||||
int flowWinSize_;
|
||||
@@ -151,11 +150,10 @@ private:
|
||||
|
||||
Feature2D * feature2D_;
|
||||
|
||||
cv::Mat lastFrame_;
|
||||
cv::Mat lastRightFrame_;
|
||||
std::vector<cv::Point2f> lastCorners_;
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr lastCorners3D_;
|
||||
Transform savedLastRefFrameTransform_;
|
||||
cv::Mat refFrame_;
|
||||
cv::Mat refRightFrame_;
|
||||
std::vector<cv::Point2f> refCorners_;
|
||||
pcl::PointCloud<pcl::PointXYZ>::Ptr refCorners3D_;
|
||||
};
|
||||
|
||||
class RTABMAP_EXP OdometryICP : public Odometry
|
||||
|
||||
@@ -86,7 +86,7 @@ public:
|
||||
const cv::Mat & depthOrRightImage() const {return _depthOrRightImage;}
|
||||
const cv::Mat & depth2d() const {return _depth2d;}
|
||||
float fx() const {return _fx;}
|
||||
float fy() const {return (_depthOrRightImage.type()==CV_32FC1 || _depthOrRightImage.type()==CV_16UC1)?_fyOrBaseline:0;}
|
||||
float fy() const {return (_depthOrRightImage.type()==CV_8UC1)?0:_fyOrBaseline;}
|
||||
float cx() const {return _cx;}
|
||||
float cy() const {return _cy;}
|
||||
float baseline() const {return _depthOrRightImage.type()==CV_8UC1?_fyOrBaseline:0;}
|
||||
|
||||
@@ -86,6 +86,7 @@ public:
|
||||
std::vector<int> getUnusedWordIds() const;
|
||||
unsigned int getUnusedWordsSize() const {return (int)_unusedWords.size();}
|
||||
void removeWords(const std::vector<VisualWord*> & words); // caller must delete the words
|
||||
void deleteUnusedWords();
|
||||
|
||||
protected:
|
||||
int getNextId();
|
||||
|
||||
Reference in New Issue
Block a user