00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef GEAOPTIMIZATION_H
00026 #define GEAOPTIMIZATION_H
00027
00028 #include <QHash>
00029 #include <QList>
00030 #include <QVCameraPose>
00031 #include <QVDirectedGraph>
00032 #include <qvprojective.h>
00033
00034 #define SO3_PARAMETRIZATION
00035
00036
00037
00038
00039 extern int gea_time_eval, gea_time_solve;
00040
00041
00042
00063 QList<QVCameraPose> globalEpipolarAdjustment(
00064 const int numIterations,
00065 const QList<QVCameraPose> &initialCameraPoses,
00066 const QVDirectedGraph<QVMatrix> &reducedMatricesGraph,
00067 const QVector<bool> &freeCameras,
00068 const double lambda = 1e-3,
00069 const bool adaptativeLambda = true,
00070 const TQVSparseSolve_Method solveMethod = DEFAULT_TQVSPARSESOLVE_METHOD,
00071 const int secondLevelIterations = 10
00072 );
00073
00093 QList<QVCameraPose> globalEpipolarAdjustment(
00094 const int numIterations,
00095 const QList<QVCameraPose> &initialCameraPoses,
00096 const QVDirectedGraph<QVMatrix> &reducedMatricesGraph,
00097 const double lambda = 1e-3,
00098 const bool adaptativeLambda = true,
00099 const TQVSparseSolve_Method solveMethod = DEFAULT_TQVSPARSESOLVE_METHOD,
00100 const int secondLevelIterations = 10
00101 );
00102
00103
00124 QList<QVCameraPose> incrementalGEA( const int numIterations,
00125 const QList<QVCameraPose> &initialCameraPoses,
00126 const QVDirectedGraph<QVMatrix> &reducedMatricesGraph,
00127 const int numFreeCameras = 1,
00128 const double lambda = 1e-3,
00129 const bool adaptativeLambda = true,
00130 const TQVSparseSolve_Method solveMethod = DEFAULT_TQVSPARSESOLVE_METHOD,
00131 const int secondLevelIterations = 10
00132 );
00133
00149 QVDirectedGraph<QVMatrix> getReducedMatrices( const QVDirectedGraph< QList<QPointFMatching> > &pointLists,
00150 const bool normalize = true,
00151 const TGEA_decomposition_method decomposition_method = GEA_CHOLESKY_DECOMPOSITION,
00152 const bool gsl = true,
00153 const double choleskyLambda = 0.0,
00154 const int minPointCorrespondences = 0
00155 );
00156
00172 QVDirectedGraph<QVMatrix> getReducedMatrices( const QVDirectedGraph< QVector<QPointFMatching> > &pointLists,
00173 const bool normalize = true,
00174 const TGEA_decomposition_method decomposition_method = GEA_CHOLESKY_DECOMPOSITION,
00175 const bool gsl = true,
00176 const double choleskyLambda = 0.0,
00177 const int minPointCorrespondences = 0
00178 );
00179
00180
00192 QVDirectedGraph< QList<QPointFMatching> > getPointMatchingsLists(const QList<QHash<int, QPointF> > pointProjections, const int numCams, const int minPointCorrespondences = 0);
00193
00205 QVDirectedGraph< QVector<QPointFMatching> > getPointMatchingsListsVec(const QList<QHash<int, QPointF> > pointProjections, const int numCams, const int minPointCorrespondences = 0);
00206
00207 #ifndef DOXYGEN_IGNORE_THIS
00208
00209 QVDirectedGraph< QList<QPointFMatching> > pointMatchingsListOld(const QList<QHash<int, QPointF> > pointProjections, const int numCams);
00210
00211 QList< QHash< int, QPointF > > storePointMatchingsInTrackingContainer(const QVDirectedGraph< QVector<QPointFMatching> > &matchingLists);
00212
00213 #endif // DOXYGEN_IGNORE_THIS
00214
00215 #endif // GEAOPTIMIZATION_H
00216