00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef QVEPIPOLAR_H
00022 #define QVEPIPOLAR_H
00023
00024 #include <qvmath.h>
00025 #include <QVMatrix>
00026 #include <qvprojective.h>
00027
00028 #define MIN_FUNDAMENTAL_MATRIX_NORM 1e-16
00029
00030 #ifndef DOXYGEN_IGNORE_THIS
00031
00032 QVMatrix getDLTMatrix(const QVector<QPointFMatching> &matchings);
00033
00034
00035 QVMatrix getSquaredDLTMatrix(const QVector<QPointFMatching> &matchings,
00036 const QPointF &m0c = QPointF(0.0, 0.0),
00037 const QPointF &m1c = QPointF(0.0, 0.0),
00038 const double &scale0 = 1.0,
00039 const double &scale1 = 1.0);
00040 #endif // DOXYGEN_IGNORE_THIS
00041
00054 bool computeFundamentalMatrix(const QVector<QPointFMatching> &matchings, QVMatrix &F, const TQVSVD_Method svdMethod = DEFAULT_TQVSVD_METHOD);
00055
00070 double symmetricEpipolarDistance(const QVMatrix &F, const QPointFMatching &matching);
00071
00072
00087 QVVector symmetricEpipolarDistance(const QVMatrix &F, const QVector<QPointFMatching> &matchings);
00088
00109 bool iterativeLocalOptimization(const QList<QPointFMatching> &matchings, QList<QPointFMatching> &result, const double maxEE = 1.0, const int minInliers = 32);
00110
00111 #endif // QVEPIPOLAR_H
00112