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:
matlabbe
2014-11-12 15:25:15 +00:00
parent 6608ee5ef6
commit af31410590
9 changed files with 793 additions and 224 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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;}

View File

@@ -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();