Classes | |
class | CameraSimulator |
class | CircleCameraSimulator |
struct | HomographyDecomposition |
class | HowardDescriptorExtractor |
class | HowardStereoMatcher |
class | PoseEstimator |
A class that estimates camera pose from features in image frames. More... | |
class | PoseEstimator2d |
class | PoseEstimator3d |
class | PoseEstimatorH |
Functions | |
void | _filterInliers (const vector< Point3f > &obj_pts, const vector< Point2f > &img_pts, const Mat &R, const Mat &T, const Mat &intrinsics, const Mat &distortion, double reprojectionError, vector< bool > &valid) |
void | addLinkNoise (std::vector< cv::DMatch > &indices, double ratio=0.05) |
void | addLinkNoise (vector< int > &indices, double ratio=0.05) |
void | addLinkNoise (vector< cv::DMatch > &indices, double ratio) |
void | addPointNoise (vector< Point2f > &points, double sigma=3.0) |
void | applyRT (const Mat &R, const Mat &T, const vector< Point3f > &points, vector< Point3f > &pointsRT) |
double | avgSampsonusError (const cv::Mat &essential, const std::vector< cv::Point2f > &points1, const std::vector< cv::Point2f > &points2, double max_error=1.0, bool verbose=false) |
double | avgSampsonusError (const Mat &essential, const vector< Point2f > &points1, const vector< Point2f > &points2, double max_error, bool verbose) |
double | calcCamProjCost (sba::SysSBA &sba, int cam) |
cv::Mat | calcEssentialMatrix (const cv::Mat &intrinsics_inv, const cv::Mat &R, const cv::Mat &T) |
Mat | calcEssentialMatrix (const Mat &intrinsics_inv, const Mat &R, const Mat &T) |
double | calcNodeErr (sba::Proj &prj, const sba::Node &nd, const sba::Point &pt) |
float | calcOptimalPointCloudScale (const vector< Point3f > &points1, const vector< Point3f > &points2) |
void | calcRelativeRT (const cv::Mat &R1, const cv::Mat &T1, const cv::Mat &R2, const cv::Mat &T2, cv::Mat &dR, cv::Mat &dT) |
void | calcRelativeRT (const Mat &R1, const Mat &T1, const Mat &R2, const Mat &T2, Mat &dR, Mat &dT) |
float | calcScaledPointCloudDistance (const std::vector< cv::Point3f > &points1, const std::vector< cv::Point3f > &points2) |
float | calcScaledPointCloudDistance (const vector< Point3f > &points1, const vector< Point3f > &points2) |
void | calcVisible (const cv::Mat &intrinsics, const cv::Mat &R, const cv::Mat &T, const std::vector< cv::Point3f > &objectPoints, const std::vector< cv::Point2f > &imagePoints, std::vector< bool > &visible) |
void | calcVisible (const Mat &intrinsics, const Mat &R, const Mat &T, const vector< Point3f > &objectPoints, const vector< cv::KeyPoint > &imagePoints, vector< int > &visible) |
void | computeEpipolarInliers (const cv::Mat &essential, const std::vector< cv::Point2f > &points1, const std::vector< cv::Point2f > &points2, std::vector< bool > &inliers, double maxError=3.0) |
void | computeEpipolarInliers (const Mat &essential, const vector< Point2f > &points1, const vector< Point2f > &points2, vector< bool > &inliers, double maxError) |
Computes epipolar inliers. | |
void | computeHomographyInliers (const vector< Point2f > &src1, const vector< Point2f > &src2, const Mat &H, vector< Point2f > &inliers1, vector< Point2f > &inliers2, float maxProjError=2.0f) |
cv::Point3f | crossProduct (cv::Point3f &p1, cv::Point3f &p2) |
void | drawMatches (const Mat &img, const vector< KeyPoint > &kpts1, const vector< KeyPoint > &kpts2, const vector< cv::DMatch > &matches, Mat &display) |
void | dumpDecomposition (const HomographyDecomposition &d) |
void | dumpDecompositions (const vector< HomographyDecomposition > &decompositions) |
void | dumpFltMat (const char *name, const cv::Mat &mat) |
void | dumpFltMat (const char *name, const Mat &mat) |
void | extractPnPData (const fc::Frame &frame1, const fc::Frame &frame2, const std::vector< cv::DMatch > &matches, vector< cv::Point2f > &imagePoints, vector< cv::Point3f > &objectPoints) |
double | filterDecompositionsEpipolar (const Mat &intrinsics, const Mat &intrinsics_inv, vector< HomographyDecomposition > &decompositions, const vector< Point2f > &points1, const vector< Point2f > &points2) |
void | filterDecompositionsVisibility (vector< HomographyDecomposition > &decompositions, const Mat &H, const vector< Point2f > &inliers1, const vector< Point2f > &inliers2) |
double | filterDecompositionsZ (vector< HomographyDecomposition > &decompositions, const vector< Point2f > &points1, const vector< Point2f > &points2, const Mat &intrinsics, const Mat &intrinsics_inv) |
void | filterInliers (const std::vector< cv::Point3f > &obj_pts, const std::vector< cv::Point2f > &img1_pts, const std::vector< cv::Point2f > &img2_pts, const cv::Mat &R, const cv::Mat &T, const cv::Mat &intrinsics, double reprojectionError, std::vector< bool > &valid) |
void | filterInliers (const vector< Point3f > &obj_pts, const vector< Point2f > &img1_pts, const vector< Point2f > &img2_pts, const Mat &R, const Mat &T, const Mat &intrinsics, double reprojectionError, vector< bool > &valid) |
void | filterMatchesByDistance (std::vector< cv::DMatch > &matches, float percentile=0.1f) |
void | filterMatchesOpticalFlow (const fc::Frame &frame1, const fc::Frame &frame2, std::vector< cv::DMatch > &matches) |
template<class T > | |
void | filterVector (const std::vector< T > &src, const std::vector< bool > &valid, std::vector< T > &dst) |
template<class T > | |
void | filterVector (const std::vector< T > &src, const std::vector< int > &valid, std::vector< T > &dst) |
template<class T > | |
void | filterVector (std::vector< T > &v, const std::vector< bool > &valid) |
void | findNaNPoints (const std::vector< cv::Point3f > &points, std::vector< bool > &valid) |
void | findNaNPoints (const vector< Point3f > &points, vector< bool > &valid) |
void | findRayIntersection (Point3f k1, Point3f b1, Point3f k2, Point3f b2, Point3f &p) |
void | generate3DPointCloud (std::vector< cv::Point3f > &points, cv::Point3f pmin=cv::Point3f(-1,-1, 5), cv::Point3f pmax=cv::Point3f(1, 1, 10)) |
void | generate3DPointCloud (vector< Point3f > &points, Point3f pmin, Point3f pmax) |
void | generateCube (std::vector< cv::Point3f > &cloud) |
void | generateData (cv::Mat &intrinsics, cv::Mat &R, cv::Mat &T, std::vector< cv::KeyPoint > &points1, std::vector< cv::KeyPoint > &points2, std::vector< int > &indices, std::vector< cv::Point3f > &points) |
void | generateData (Mat &intrinsics, Mat &R, Mat &T, vector< KeyPoint > &points1, vector< KeyPoint > &points2, vector< int > &indices, vector< Point3f > &points) |
void | generateIntrinsics (Mat &intrinsics) |
void | generatePlanarObject (vector< Point3f > &points, Point3f N, float d) |
void | generatePlanarObject (std::vector< cv::Point3f > &points, cv::Point3f N=cv::Point3f(0.0f, 0.0f, 1.0f), float d=10.0f) |
void | generatePlanarObject (vector< Point3f > &points, Point3f v1, Point3f v2, Vec2f limits1, Vec2f limits2, Point3f t) |
void | generateProjections (const cv::Mat &intrinsics, const cv::Mat &rvec, const cv::Mat &tvec, const std::vector< cv::Point3f > &cloud, std::vector< cv::KeyPoint > &keypoints) |
void | generateProjections (const Mat &intrinsics, const Mat &rvec, const Mat &tvec, const vector< Point3f > &cloud, vector< KeyPoint > &keypoints) |
void | generateRing (std::vector< cv::Point3f > &cloud, cv::Point3f center=cv::Point3f(0, 0, 0)) |
bool | homographyDecompose (const Mat &intrinsics, const Mat &_H, vector< HomographyDecomposition > &hd) |
Mat | homographyFromDecomposition (const HomographyDecomposition &decomposition) |
void | initNode (const Mat &intrinsics, const Mat &rvec, const Mat &tvec, sba::Node &node) |
void | invert (Mat &rvec, Mat &tvec) |
void | keyPoints2Point2f (const cv::vector< cv::KeyPoint > &src, std::vector< cv::Point2f > &dst) |
void | keyPoints2Point2f (const vector< KeyPoint > &src, vector< Point2f > &dst) |
void | keyPoints2Point2f (const std::vector< cv::KeyPoint > &src, std::vector< cv::Point2f > &dst) |
void | logDecompositions (std::string filename, const vector< HomographyDecomposition > &decompositions) |
void | matchesFromIndices (const std::vector< cv::KeyPoint > &_set1, const std::vector< cv::KeyPoint > &_set2, const std::vector< int > &indices, std::vector< cv::Point2f > &points1, std::vector< cv::Point2f > &points2) |
void | matchesFromIndices (const std::vector< cv::KeyPoint > &src1, const std::vector< cv::KeyPoint > &src2, const std::vector< cv::DMatch > &indices, std::vector< cv::Point2f > &dst1, std::vector< cv::Point2f > &dst2) |
void | matchesFromIndices (const vector< KeyPoint > &src1, const vector< KeyPoint > &src2, const vector< cv::DMatch > &indices, vector< Point2f > &dst1, vector< Point2f > &dst2) |
void | matchesFromIndices (const vector< Point2f > &set1, const vector< Point2f > &set2, const vector< int > &indices, vector< Point2f > &points1, vector< Point2f > &points2) |
void | matchesFromIndices (const vector< KeyPoint > &_set1, const vector< KeyPoint > &_set2, const vector< int > &indices, vector< Point2f > &points1, vector< Point2f > &points2) |
cv::Point3f | mult (const cv::Mat &M, const cv::Point3f &p) |
Point3f | mult (const Mat &M, const Point3f &p) |
Point3f | multh (const Mat &M, const Point2f &p) |
bool | operator< (const HomographyDecomposition lhs, const HomographyDecomposition rhs) |
void | planarSFM (const cv::Mat &intrinsics, const std::vector< cv::KeyPoint > &set1, const std::vector< cv::KeyPoint > &set2, const std::vector< int > &indices, cv::Mat &H, cv::Mat &R, cv::Mat &T, double reprojectionError=6.0) |
void | planarSFM (Mat &intrinsics, const vector< KeyPoint > &set1, const vector< KeyPoint > &set2, const vector< int > &indices, Mat &H, Mat &R, Mat &T, double reprojectionError) |
void | project3dPoints (const vector< Point3f > &points, const Mat &rvec, const Mat &tvec, vector< Point3f > &modif_points) |
Mat | randomHomography (const vector< Point2f > &points1, const vector< Point2f > &points2, vector< Point2f > &sample1, vector< Point2f > &sample2) |
void | reprojectPoint (const Mat &R, const Mat &T, Point3f p1, Point3f p2, Point3f &p) |
void | reprojectPoints (const cv::Mat &intrinsics, const cv::Mat &R, const cv::Mat &T, const std::vector< cv::Point2f > &p1, const std::vector< cv::Point2f > &p2, std::vector< cv::Point3f > &p, std::vector< bool > &valid) |
void | reprojectPoints (const Mat &intrinsics, const Mat &R, const Mat &T, const vector< Point2f > &p1, const vector< Point2f > &p2, vector< Point3f > &p, vector< bool > &valid) |
void | sample (int max_index, int count, std::vector< int > &sample_indices) |
void | sample (int max_index, int count, vector< int > &sample_indices) |
static double | SampsonusError (const Mat &essential, Point2f pl, Point2f pr) |
void | sba (const cv::Mat &intrinsics, cv::Mat &rvec, cv::Mat &tvec, std::vector< cv::Point3f > &points, const std::vector< cv::Point2f > &points1, const std::vector< cv::Point2f > &points2) |
void | sba (const Mat &intrinsics, Mat &rvec, Mat &tvec, vector< Point3f > &points, const vector< Point2f > &points1, const vector< Point2f > &points2) |
void | selectDecomposition (vector< HomographyDecomposition > &decompositions, const Mat &H, const vector< Point2f > &points1, const vector< Point2f > &points2, const vector< Point2f > &inliers1, const vector< Point2f > &inliers2, const Mat &intrinsics, const Mat &intrinsics_inv) |
double | SFM (const cv::Mat &intrinsics, const std::vector< cv::KeyPoint > &set1, const std::vector< cv::KeyPoint > &set2, const std::vector< int > &indices, cv::Mat &R, cv::Mat &T, double reprojectionError=6.0) |
double | SFM (const cv::Mat &intrinsics, const std::vector< cv::Point2f > &points1, const std::vector< cv::Point2f > &points2, cv::Mat &R, cv::Mat &T, double reprojectionError=6.0) |
double | SFM (const Mat &intrinsics, const vector< KeyPoint > &set1, const vector< KeyPoint > &set2, const vector< int > &indices, Mat &R, Mat &T, double reprojectionError) |
double | SFM (const Mat &intrinsics, const vector< Point2f > &points1, const vector< Point2f > &points2, Mat &R, Mat &T, double reprojectionError) |
double | SFMwithSBA (const cv::Mat &intrinsics, const std::vector< cv::KeyPoint > &points1, const std::vector< cv::KeyPoint > &points2, const std::vector< int > &indices, cv::Mat &rvec, cv::Mat &T, double reprojectionError) |
double | SFMwithSBA (const cv::Mat &intrinsics, std::vector< cv::Point2f > &points1, std::vector< cv::Point2f > &points2, cv::Mat &rvec, cv::Mat &T, double reprojectionError) |
double | SFMwithSBA (const Mat &intrinsics, const vector< KeyPoint > &set1, const vector< KeyPoint > &set2, const vector< int > &indices, Mat &rvec, Mat &T, double reprojectionError) |
double | SFMwithSBA (const Mat &intrinsics, vector< Point2f > &points1, vector< Point2f > &points2, Mat &rvec, Mat &T, double reprojectionError) |
void | test () |
void | testReprojectPoints () |
template<class T > | |
void | vectorSubset (const std::vector< T > &src, const std::vector< int > &indices, std::vector< T > &dst) |
void pe::_filterInliers | ( | const vector< Point3f > & | obj_pts, |
const vector< Point2f > & | img_pts, | ||
const Mat & | R, | ||
const Mat & | T, | ||
const Mat & | intrinsics, | ||
const Mat & | distortion, | ||
double | reprojectionError, | ||
vector< bool > & | valid | ||
) |
Definition at line 680 of file planarSFM.cpp.
void pe::addLinkNoise | ( | std::vector< cv::DMatch > & | indices, |
double | ratio = 0.05 |
||
) |
void pe::addLinkNoise | ( | vector< int > & | indices, |
double | ratio = 0.05 |
||
) |
Definition at line 99 of file simulated.cpp.
void pe::addLinkNoise | ( | vector< cv::DMatch > & | indices, |
double | ratio | ||
) |
Definition at line 110 of file simulated.cpp.
void pe::addPointNoise | ( | vector< Point2f > & | points, |
double | sigma = 3.0 |
||
) |
Definition at line 89 of file simulated.cpp.
void pe::applyRT | ( | const Mat & | R, |
const Mat & | T, | ||
const vector< Point3f > & | points, | ||
vector< Point3f > & | pointsRT | ||
) |
Definition at line 227 of file simulated.cpp.
double pe::avgSampsonusError | ( | const cv::Mat & | essential, |
const std::vector< cv::Point2f > & | points1, | ||
const std::vector< cv::Point2f > & | points2, | ||
double | max_error = 1.0 , |
||
bool | verbose = false |
||
) |
double pe::avgSampsonusError | ( | const Mat & | essential, |
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2, | ||
double | max_error, | ||
bool | verbose | ||
) |
Definition at line 479 of file planarSFM.cpp.
double pe::calcCamProjCost | ( | sba::SysSBA & | sba, |
int | cam | ||
) |
Definition at line 1071 of file planarSFM.cpp.
cv::Mat pe::calcEssentialMatrix | ( | const cv::Mat & | intrinsics_inv, |
const cv::Mat & | R, | ||
const cv::Mat & | T | ||
) |
Mat pe::calcEssentialMatrix | ( | const Mat & | intrinsics_inv, |
const Mat & | R, | ||
const Mat & | T | ||
) |
Definition at line 441 of file planarSFM.cpp.
double pe::calcNodeErr | ( | sba::Proj & | prj, |
const sba::Node & | nd, | ||
const sba::Point & | pt | ||
) | [inline] |
Definition at line 1056 of file planarSFM.cpp.
float pe::calcOptimalPointCloudScale | ( | const vector< Point3f > & | points1, |
const vector< Point3f > & | points2 | ||
) |
Definition at line 1186 of file planarSFM.cpp.
void pe::calcRelativeRT | ( | const cv::Mat & | R1, |
const cv::Mat & | T1, | ||
const cv::Mat & | R2, | ||
const cv::Mat & | T2, | ||
cv::Mat & | dR, | ||
cv::Mat & | dT | ||
) |
void pe::calcRelativeRT | ( | const Mat & | R1, |
const Mat & | T1, | ||
const Mat & | R2, | ||
const Mat & | T2, | ||
Mat & | dR, | ||
Mat & | dT | ||
) |
Definition at line 1236 of file planarSFM.cpp.
float pe::calcScaledPointCloudDistance | ( | const std::vector< cv::Point3f > & | points1, |
const std::vector< cv::Point3f > & | points2 | ||
) |
float pe::calcScaledPointCloudDistance | ( | const vector< Point3f > & | points1, |
const vector< Point3f > & | points2 | ||
) |
Definition at line 1200 of file planarSFM.cpp.
void pe::calcVisible | ( | const cv::Mat & | intrinsics, |
const cv::Mat & | R, | ||
const cv::Mat & | T, | ||
const std::vector< cv::Point3f > & | objectPoints, | ||
const std::vector< cv::Point2f > & | imagePoints, | ||
std::vector< bool > & | visible | ||
) |
void pe::calcVisible | ( | const Mat & | intrinsics, |
const Mat & | R, | ||
const Mat & | T, | ||
const vector< Point3f > & | objectPoints, | ||
const vector< cv::KeyPoint > & | imagePoints, | ||
vector< int > & | visible | ||
) |
Definition at line 241 of file simulated.cpp.
void pe::computeEpipolarInliers | ( | const cv::Mat & | essential, |
const std::vector< cv::Point2f > & | points1, | ||
const std::vector< cv::Point2f > & | points2, | ||
std::vector< bool > & | inliers, | ||
double | maxError = 3.0 |
||
) |
void pe::computeEpipolarInliers | ( | const Mat & | essential, |
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2, | ||
vector< bool > & | inliers, | ||
double | maxError | ||
) |
Computes epipolar inliers.
Definition at line 340 of file planarSFM.cpp.
void pe::computeHomographyInliers | ( | const vector< Point2f > & | src1, |
const vector< Point2f > & | src2, | ||
const Mat & | H, | ||
vector< Point2f > & | inliers1, | ||
vector< Point2f > & | inliers2, | ||
float | maxProjError = 2.0f |
||
) |
Computes homography inliers
src1 | First set of points |
src2 | Second set of points |
H | 3x3 homography matrix |
inliers1 | First set of inliers |
inliers2 | Second set of inliers |
maxProjError | Maximum reprojection error of an inlier |
Definition at line 298 of file planarSFM.cpp.
cv::Point3f pe::crossProduct | ( | cv::Point3f & | p1, |
cv::Point3f & | p2 | ||
) | [inline] |
Definition at line 77 of file planarSFM.h.
void pe::drawMatches | ( | const Mat & | img, |
const vector< KeyPoint > & | kpts1, | ||
const vector< KeyPoint > & | kpts2, | ||
const vector< cv::DMatch > & | matches, | ||
Mat & | display | ||
) |
void pe::dumpDecomposition | ( | const HomographyDecomposition & | d | ) |
Definition at line 96 of file planarSFM.cpp.
void pe::dumpDecompositions | ( | const vector< HomographyDecomposition > & | decompositions | ) |
Definition at line 103 of file planarSFM.cpp.
void pe::dumpFltMat | ( | const char * | name, |
const cv::Mat & | mat | ||
) |
void pe::dumpFltMat | ( | const char * | name, |
const Mat & | mat | ||
) |
Definition at line 82 of file planarSFM.cpp.
void pe::extractPnPData | ( | const fc::Frame & | frame1, |
const fc::Frame & | frame2, | ||
const std::vector< cv::DMatch > & | matches, | ||
vector< cv::Point2f > & | imagePoints, | ||
vector< cv::Point3f > & | objectPoints | ||
) |
double pe::filterDecompositionsEpipolar | ( | const Mat & | intrinsics, |
const Mat & | intrinsics_inv, | ||
vector< HomographyDecomposition > & | decompositions, | ||
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2 | ||
) |
Definition at line 535 of file planarSFM.cpp.
void pe::filterDecompositionsVisibility | ( | vector< HomographyDecomposition > & | decompositions, |
const Mat & | H, | ||
const vector< Point2f > & | inliers1, | ||
const vector< Point2f > & | inliers2 | ||
) |
Definition at line 363 of file planarSFM.cpp.
double pe::filterDecompositionsZ | ( | vector< HomographyDecomposition > & | decompositions, |
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2, | ||
const Mat & | intrinsics, | ||
const Mat & | intrinsics_inv | ||
) |
Definition at line 500 of file planarSFM.cpp.
void pe::filterInliers | ( | const std::vector< cv::Point3f > & | obj_pts, |
const std::vector< cv::Point2f > & | img1_pts, | ||
const std::vector< cv::Point2f > & | img2_pts, | ||
const cv::Mat & | R, | ||
const cv::Mat & | T, | ||
const cv::Mat & | intrinsics, | ||
double | reprojectionError, | ||
std::vector< bool > & | valid | ||
) |
void pe::filterInliers | ( | const vector< Point3f > & | obj_pts, |
const vector< Point2f > & | img1_pts, | ||
const vector< Point2f > & | img2_pts, | ||
const Mat & | R, | ||
const Mat & | T, | ||
const Mat & | intrinsics, | ||
double | reprojectionError, | ||
vector< bool > & | valid | ||
) |
Definition at line 710 of file planarSFM.cpp.
void pe::filterMatchesByDistance | ( | std::vector< cv::DMatch > & | matches, |
float | percentile = 0.1f |
||
) |
void pe::filterMatchesOpticalFlow | ( | const fc::Frame & | frame1, |
const fc::Frame & | frame2, | ||
std::vector< cv::DMatch > & | matches | ||
) |
void pe::filterVector | ( | const std::vector< T > & | src, |
const std::vector< bool > & | valid, | ||
std::vector< T > & | dst | ||
) |
Definition at line 102 of file planarSFM.h.
void pe::filterVector | ( | const std::vector< T > & | src, |
const std::vector< int > & | valid, | ||
std::vector< T > & | dst | ||
) |
Definition at line 115 of file planarSFM.h.
void pe::filterVector | ( | std::vector< T > & | v, |
const std::vector< bool > & | valid | ||
) |
Definition at line 128 of file planarSFM.h.
void pe::findNaNPoints | ( | const std::vector< cv::Point3f > & | points, |
std::vector< bool > & | valid | ||
) |
void pe::findNaNPoints | ( | const vector< Point3f > & | points, |
vector< bool > & | valid | ||
) |
Definition at line 1220 of file planarSFM.cpp.
void pe::findRayIntersection | ( | Point3f | k1, |
Point3f | b1, | ||
Point3f | k2, | ||
Point3f | b2, | ||
Point3f & | p | ||
) |
Definition at line 976 of file planarSFM.cpp.
void pe::generate3DPointCloud | ( | std::vector< cv::Point3f > & | points, |
cv::Point3f | pmin = cv::Point3f(-1,-1, 5) , |
||
cv::Point3f | pmax = cv::Point3f(1, 1, 10) |
||
) |
void pe::generate3DPointCloud | ( | vector< Point3f > & | points, |
Point3f | pmin, | ||
Point3f | pmax | ||
) |
Definition at line 74 of file simulated.cpp.
void pe::generateCube | ( | std::vector< cv::Point3f > & | cloud | ) |
Definition at line 268 of file simulated.cpp.
void pe::generateData | ( | cv::Mat & | intrinsics, |
cv::Mat & | R, | ||
cv::Mat & | T, | ||
std::vector< cv::KeyPoint > & | points1, | ||
std::vector< cv::KeyPoint > & | points2, | ||
std::vector< int > & | indices, | ||
std::vector< cv::Point3f > & | points | ||
) |
void pe::generateData | ( | Mat & | intrinsics, |
Mat & | R, | ||
Mat & | T, | ||
vector< KeyPoint > & | points1, | ||
vector< KeyPoint > & | points2, | ||
vector< int > & | indices, | ||
vector< Point3f > & | points | ||
) |
Definition at line 130 of file simulated.cpp.
void pe::generateIntrinsics | ( | Mat & | intrinsics | ) |
Definition at line 121 of file simulated.cpp.
void pe::generatePlanarObject | ( | vector< Point3f > & | points, |
Point3f | N, | ||
float | d | ||
) |
Definition at line 47 of file simulated.cpp.
void pe::generatePlanarObject | ( | std::vector< cv::Point3f > & | points, |
cv::Point3f | N = cv::Point3f(0.0f, 0.0f, 1.0f) , |
||
float | d = 10.0f |
||
) |
void pe::generatePlanarObject | ( | vector< Point3f > & | points, |
Point3f | v1, | ||
Point3f | v2, | ||
Vec2f | limits1, | ||
Vec2f | limits2, | ||
Point3f | t | ||
) |
Definition at line 63 of file simulated.cpp.
void pe::generateProjections | ( | const cv::Mat & | intrinsics, |
const cv::Mat & | rvec, | ||
const cv::Mat & | tvec, | ||
const std::vector< cv::Point3f > & | cloud, | ||
std::vector< cv::KeyPoint > & | keypoints | ||
) |
void pe::generateProjections | ( | const Mat & | intrinsics, |
const Mat & | rvec, | ||
const Mat & | tvec, | ||
const vector< Point3f > & | cloud, | ||
vector< KeyPoint > & | keypoints | ||
) |
Definition at line 214 of file simulated.cpp.
void pe::generateRing | ( | std::vector< cv::Point3f > & | cloud, |
cv::Point3f | center = cv::Point3f(0, 0, 0) |
||
) |
Definition at line 287 of file simulated.cpp.
bool pe::homographyDecompose | ( | const Mat & | intrinsics, |
const Mat & | _H, | ||
vector< HomographyDecomposition > & | hd | ||
) |
Calculates 8 possible decompositions of a homography
H | Homography matrix |
hd | Output decompositions |
Definition at line 163 of file planarSFM.cpp.
Mat pe::homographyFromDecomposition | ( | const HomographyDecomposition & | decomposition | ) |
Definition at line 154 of file planarSFM.cpp.
void pe::initNode | ( | const Mat & | intrinsics, |
const Mat & | rvec, | ||
const Mat & | tvec, | ||
sba::Node & | node | ||
) |
Definition at line 932 of file planarSFM.cpp.
void pe::invert | ( | Mat & | rvec, |
Mat & | tvec | ||
) |
void pe::keyPoints2Point2f | ( | const cv::vector< cv::KeyPoint > & | src, |
std::vector< cv::Point2f > & | dst | ||
) |
void pe::keyPoints2Point2f | ( | const vector< KeyPoint > & | src, |
vector< Point2f > & | dst | ||
) |
Definition at line 112 of file planarSFM.cpp.
void pe::keyPoints2Point2f | ( | const std::vector< cv::KeyPoint > & | src, |
std::vector< cv::Point2f > & | dst | ||
) |
void pe::logDecompositions | ( | std::string | filename, |
const vector< HomographyDecomposition > & | decompositions | ||
) |
Definition at line 616 of file planarSFM.cpp.
void pe::matchesFromIndices | ( | const std::vector< cv::KeyPoint > & | _set1, |
const std::vector< cv::KeyPoint > & | _set2, | ||
const std::vector< int > & | indices, | ||
std::vector< cv::Point2f > & | points1, | ||
std::vector< cv::Point2f > & | points2 | ||
) |
void pe::matchesFromIndices | ( | const std::vector< cv::KeyPoint > & | src1, |
const std::vector< cv::KeyPoint > & | src2, | ||
const std::vector< cv::DMatch > & | indices, | ||
std::vector< cv::Point2f > & | dst1, | ||
std::vector< cv::Point2f > & | dst2 | ||
) |
void pe::matchesFromIndices | ( | const vector< KeyPoint > & | src1, |
const vector< KeyPoint > & | src2, | ||
const vector< cv::DMatch > & | indices, | ||
vector< Point2f > & | dst1, | ||
vector< Point2f > & | dst2 | ||
) |
Definition at line 121 of file planarSFM.cpp.
void pe::matchesFromIndices | ( | const vector< Point2f > & | set1, |
const vector< Point2f > & | set2, | ||
const vector< int > & | indices, | ||
vector< Point2f > & | points1, | ||
vector< Point2f > & | points2 | ||
) |
Definition at line 133 of file planarSFM.cpp.
void pe::matchesFromIndices | ( | const vector< KeyPoint > & | _set1, |
const vector< KeyPoint > & | _set2, | ||
const vector< int > & | indices, | ||
vector< Point2f > & | points1, | ||
vector< Point2f > & | points2 | ||
) |
Definition at line 140 of file planarSFM.cpp.
cv::Point3f pe::mult | ( | const cv::Mat & | M, |
const cv::Point3f & | p | ||
) |
Point3f pe::mult | ( | const Mat & | M, |
const Point3f & | p | ||
) |
Definition at line 964 of file planarSFM.cpp.
Point3f pe::multh | ( | const Mat & | M, |
const Point2f & | p | ||
) |
Definition at line 970 of file planarSFM.cpp.
bool pe::operator< | ( | const HomographyDecomposition | lhs, |
const HomographyDecomposition | rhs | ||
) |
Definition at line 626 of file planarSFM.cpp.
void pe::planarSFM | ( | const cv::Mat & | intrinsics, |
const std::vector< cv::KeyPoint > & | set1, | ||
const std::vector< cv::KeyPoint > & | set2, | ||
const std::vector< int > & | indices, | ||
cv::Mat & | H, | ||
cv::Mat & | R, | ||
cv::Mat & | T, | ||
double | reprojectionError = 6.0 |
||
) |
Implements the algorithm for structure from motion on planar data from the paper by Faugeras and Lustman "Motion and Structure from Motion in a Piecewise Planar Environment, PRAI(2), 1988, pp. 485-508
intrinsics | Intrinsics matrix |
set1 | First set of keypoints |
set2 | Second set of keypoints |
indices | Mapping from the first set to the second |
H | Output 3x3 homography matrix |
R | Output 3x3 rotation matrix |
T | Output 3x1 translation matrix |
reprojectionError | Reprojection error for homography used to find inliers. |
void pe::planarSFM | ( | Mat & | intrinsics, |
const vector< KeyPoint > & | set1, | ||
const vector< KeyPoint > & | set2, | ||
const vector< int > & | indices, | ||
Mat & | H, | ||
Mat & | R, | ||
Mat & | T, | ||
double | reprojectionError | ||
) |
Definition at line 898 of file planarSFM.cpp.
void pe::project3dPoints | ( | const vector< Point3f > & | points, |
const Mat & | rvec, | ||
const Mat & | tvec, | ||
vector< Point3f > & | modif_points | ||
) |
Mat pe::randomHomography | ( | const vector< Point2f > & | points1, |
const vector< Point2f > & | points2, | ||
vector< Point2f > & | sample1, | ||
vector< Point2f > & | sample2 | ||
) |
Definition at line 656 of file planarSFM.cpp.
void pe::reprojectPoint | ( | const Mat & | R, |
const Mat & | T, | ||
Point3f | p1, | ||
Point3f | p2, | ||
Point3f & | p | ||
) |
reprojects points to 3d p1 and p2 are uniform coordinates in 2d, identity intrinsics matrix assumed
Definition at line 1010 of file planarSFM.cpp.
void pe::reprojectPoints | ( | const cv::Mat & | intrinsics, |
const cv::Mat & | R, | ||
const cv::Mat & | T, | ||
const std::vector< cv::Point2f > & | p1, | ||
const std::vector< cv::Point2f > & | p2, | ||
std::vector< cv::Point3f > & | p, | ||
std::vector< bool > & | valid | ||
) |
void pe::reprojectPoints | ( | const Mat & | intrinsics, |
const Mat & | R, | ||
const Mat & | T, | ||
const vector< Point2f > & | p1, | ||
const vector< Point2f > & | p2, | ||
vector< Point3f > & | p, | ||
vector< bool > & | valid | ||
) |
Definition at line 1025 of file planarSFM.cpp.
void pe::sample | ( | int | max_index, |
int | count, | ||
std::vector< int > & | sample_indices | ||
) |
void pe::sample | ( | int | max_index, |
int | count, | ||
vector< int > & | sample_indices | ||
) |
Definition at line 632 of file planarSFM.cpp.
static double pe::SampsonusError | ( | const Mat & | essential, |
Point2f | pl, | ||
Point2f | pr | ||
) | [static] |
Calculates the epipolar reprojection error pl*E*pr
essential | Essential matrix |
pl | A point from the first image |
pr | A point from the second image |
Definition at line 320 of file planarSFM.cpp.
void pe::sba | ( | const cv::Mat & | intrinsics, |
cv::Mat & | rvec, | ||
cv::Mat & | tvec, | ||
std::vector< cv::Point3f > & | points, | ||
const std::vector< cv::Point2f > & | points1, | ||
const std::vector< cv::Point2f > & | points2 | ||
) |
void pe::sba | ( | const Mat & | intrinsics, |
Mat & | rvec, | ||
Mat & | tvec, | ||
vector< Point3f > & | points, | ||
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2 | ||
) |
Definition at line 1098 of file planarSFM.cpp.
void pe::selectDecomposition | ( | vector< HomographyDecomposition > & | decompositions, |
const Mat & | H, | ||
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2, | ||
const vector< Point2f > & | inliers1, | ||
const vector< Point2f > & | inliers2, | ||
const Mat & | intrinsics, | ||
const Mat & | intrinsics_inv | ||
) |
Filters out decompositions
decompositions | A set of decompositions of a homography matrix |
H | Homography patrix |
points1 | First set of points |
points2 | Second set of points |
inliers1 | First set of inliers |
inliers2 | Second set of inliers |
Definition at line 606 of file planarSFM.cpp.
double pe::SFM | ( | const cv::Mat & | intrinsics, |
const std::vector< cv::KeyPoint > & | set1, | ||
const std::vector< cv::KeyPoint > & | set2, | ||
const std::vector< int > & | indices, | ||
cv::Mat & | R, | ||
cv::Mat & | T, | ||
double | reprojectionError = 6.0 |
||
) |
double pe::SFM | ( | const cv::Mat & | intrinsics, |
const std::vector< cv::Point2f > & | points1, | ||
const std::vector< cv::Point2f > & | points2, | ||
cv::Mat & | R, | ||
cv::Mat & | T, | ||
double | reprojectionError = 6.0 |
||
) |
double pe::SFM | ( | const Mat & | intrinsics, |
const vector< KeyPoint > & | set1, | ||
const vector< KeyPoint > & | set2, | ||
const vector< int > & | indices, | ||
Mat & | R, | ||
Mat & | T, | ||
double | reprojectionError | ||
) |
Definition at line 784 of file planarSFM.cpp.
double pe::SFM | ( | const Mat & | intrinsics, |
const vector< Point2f > & | points1, | ||
const vector< Point2f > & | points2, | ||
Mat & | R, | ||
Mat & | T, | ||
double | reprojectionError | ||
) |
Definition at line 793 of file planarSFM.cpp.
double pe::SFMwithSBA | ( | const cv::Mat & | intrinsics, |
const std::vector< cv::KeyPoint > & | points1, | ||
const std::vector< cv::KeyPoint > & | points2, | ||
const std::vector< int > & | indices, | ||
cv::Mat & | rvec, | ||
cv::Mat & | T, | ||
double | reprojectionError | ||
) |
double pe::SFMwithSBA | ( | const cv::Mat & | intrinsics, |
std::vector< cv::Point2f > & | points1, | ||
std::vector< cv::Point2f > & | points2, | ||
cv::Mat & | rvec, | ||
cv::Mat & | T, | ||
double | reprojectionError | ||
) |
double pe::SFMwithSBA | ( | const Mat & | intrinsics, |
const vector< KeyPoint > & | set1, | ||
const vector< KeyPoint > & | set2, | ||
const vector< int > & | indices, | ||
Mat & | rvec, | ||
Mat & | T, | ||
double | reprojectionError | ||
) |
Definition at line 671 of file planarSFM.cpp.
double pe::SFMwithSBA | ( | const Mat & | intrinsics, |
vector< Point2f > & | points1, | ||
vector< Point2f > & | points2, | ||
Mat & | rvec, | ||
Mat & | T, | ||
double | reprojectionError | ||
) |
Definition at line 721 of file planarSFM.cpp.
void pe::test | ( | ) |
Definition at line 23 of file simulated.cpp.
void pe::testReprojectPoints | ( | ) |
Definition at line 189 of file simulated.cpp.
void pe::vectorSubset | ( | const std::vector< T > & | src, |
const std::vector< int > & | indices, | ||
std::vector< T > & | dst | ||
) |
Definition at line 147 of file planarSFM.h.