00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVSFM_H
00026 #define QVSFM_H
00027
00028 #include <QVIndexPair>
00029 #include <qvprojective.h>
00030 #include <qvsfm/qvgea/geaoptimization.h>
00031 #include <qvsfm/laSBA/laSBAWrapper.h>
00032
00039 QList< QHash< int, QPointF> > correctIntrinsics(const QList< QVMatrix > &Ks, const QList< QHash< int, QPointF> > &pointsProjections);
00040
00041
00048 bool testCheirality(const QList<QVCameraPose> cameraPoses, const QList< QHash< int, QPointF> > calibratedPointsProjections);
00049
00056 void invertCheirality(QList<QVCameraPose> &cameraPoses, QList<QV3DPointF> &points3D);
00057
00064 double reconstructionError( const QList<QVCameraPose> &cameraPoses,
00065 const QList<QV3DPointF> &points3D,
00066 const QList< QHash<int, QPointF> > &pointProjections);
00067
00068
00077 double reconstructionError( const QList<QVCameraPose> &cameraPoses, const QList< QHash<int, QPointF> > &pointProjections);
00078 double reconstructionError( const QList<QVCameraPose> &cameraPoses, const QList< QHash<int, QPointF> > &pointProjections, const QVector<bool> &evaluateTracking);
00079
00086 double reconstructionError( const QList<QVCameraPose> &cameraPoses,
00087 const QList<QV3DPointF> &points3D,
00088 const QList< QHash<int, QPointF> > &pointProjections,
00089 const QVector<bool> &evaluateTracking);
00090
00097 double reconstructionError(const QVMatrix &Rt1, const QVMatrix &Rt2, const QList<QV3DPointF> &points3D, const QVector<QPointFMatching> &matchings);
00098
00105 QVVector reconstructionErrorResiduals( const QList<QVCameraPose> &cameraPoses,
00106 const QList<QV3DPointF> &points3D,
00107 const QList< QHash<int, QPointF> > &pointTrackings);
00108
00116 bool checkForNaNValues(const QList<QVCameraPose> &cameraPoses);
00117
00125 bool checkForNaNValues(const QList<QV3DPointF> &points3D);
00126
00134 bool checkForNaNValues(const QList< QHash< int, QPointF > > &pointTrackings);
00135
00146 bool linearCameraPairInitialization(const QVector<QPointFMatching> &matchings, QVMatrix &Rt1, QVMatrix &Rt2);
00147
00148 #ifndef DOXYGEN_IGNORE_THIS
00149
00150
00151 QVector<QVIndexPair> combineMatchingLists(const QVector<QVIndexPair> &matchingsAB, const QVector<QVIndexPair> &matchingsBC);
00152 void estimate3DPointsMeanAndVariance(const QList<QV3DPointF> &points3D, QV3DPointF &mean, double &variance);
00153
00154 double squaredReprojectionErrorResiduals( const QV3DPointF &point3D,
00155 const QList<QVCameraPose> &cameraPoses,
00156 const QHash<int, QPointF> &pointProjections);
00157
00158 QVVector squaredReprojectionErrorResidualsNew( const QV3DPointF &point3D,
00159 const QList<QVCameraPose> &cameraPoses,
00160 const QHash<int, QPointF> &pointProjections);
00161
00162 double squaredReprojectionErrorResiduals( const QV3DPointF &point3D,
00163 const QVCameraPose &cameraPose,
00164 const QPointF &pointProjection);
00165 #endif // DOXYGEN_IGNORE_THIS
00166
00167 #endif