Subversion Repositories seema-scanner

Rev

Rev 176 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef SMCALIBRATIONPARAMETERS_H
#define SMCALIBRATIONPARAMETERS_H

#include <QObject>
#include <QDataStream>
#include <QMetaType>
#include <QTextStream>
#include <opencv2/opencv.hpp>

class SMCalibrationParameters{

    public:

        SMCalibrationParameters() : frameHeight(0), frameWidth(0),
                                  K0(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), k0(0.0), cam0_error(0.0),
                                  K1(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), k1(0.0), cam1_error(0.0),
                                  R1(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), T1(0.0), stereo_error(0.0),
                                  Rr(1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0), Tr(0.0), rot_axis_error(0.0),
                                  E(0.0), F(0.0){

        }

        ~SMCalibrationParameters(){}

        unsigned int frameHeight;
        unsigned int frameWidth;

        cv::Matx33f K0; // intrinsic camera matrix
        cv::Vec<float, 5> k0; // distortion coefficients
        double cam0_error; // overall reprojection error
        std::vector<double> cam0_errors_per_view; // per view reprojection errors
        std::vector<double> cam0_intrinsic_std;
        std::vector<double> cam0_extrinsic_std;

        cv::Matx33f K1;
        cv::Vec<float, 5> k1;
        double cam1_error;
        std::vector<double> cam1_errors_per_view; // per view reprojection errors
        std::vector<double> cam1_intrinsic_std;
        std::vector<double> cam1_extrinsic_std;

        cv::Matx33f R1; // extrinsic rotation matrix camera 1
        cv::Vec3f   T1; // extrinsic translation vector camera 1
        double stereo_error; // stereo calibration reprojection error

        cv::Matx33f Rr; // extrinsic rotation rotation stage
        cv::Vec3f   Tr; // extrinsic translation vector rotation stage
        double rot_axis_error; // 3d error of rotation axis fit

        cv::Matx33f E; // essential matrix
        cv::Matx33f F; // fundamental matrix


        void print(std::ostream &stream);
        void printCamera(std::ostream &stream);
        void printRotationStage(std::ostream &stream);
        void exportToXML(QString fileName);
        void importFromXML(QString fileName);
};

QDataStream& operator>>(QDataStream& in, SMCalibrationParameters& data);
QDataStream& operator<<(QDataStream& out, const SMCalibrationParameters& data);

Q_DECLARE_METATYPE(SMCalibrationParameters)


#endif // SMCALIBRATIONPARAMETERS_H