Subversion Repositories seema-scanner

Rev

Rev 78 | Rev 225 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef SMCalibrationWorker_H
#define SMCalibrationWorker_H

#include <QObject>

#include "SMTypes.h"

// fwd decl
class SMCalibrationParameters;

namespace Ui {
    class SMCalibrationWorker;
}

class SMCalibrationWorker : public QObject{
    Q_OBJECT

    public:
        SMCalibrationWorker(){}
        ~SMCalibrationWorker(){}
        void performStageCalibration(
                const std::vector< std::vector<cv::Point2f> > &qc0Stereo,
                const std::vector< std::vector<cv::Point2f> > &qc1Stereo,
        SMCalibrationParameters& cal);

        
public slots:
        void performCameraCalibration(std::vector< SMCalibrationSet > calibrationData);
    private slots:
    signals:
        void newFrameResult(int idx, int camID, bool success, cv::Mat frameResult);
        void newSetProcessed(int idx);
        void done();

    private:
        void perViewReprojError(const std::vector<bool> &success0,
                               const std::vector< std::vector<cv::Point3f> > &Q0,
                               const std::vector<cv::Mat> &cam_tvecs0,
                               const std::vector<cv::Mat> &cam_rvecs0,
                               const std::vector< std::vector<cv::Point2f> > &qc0,
                                const cv::Matx33f &K0,
                                const cv::Vec<float, 5> &k0,
                               std::vector<float> &camX_errors_per_view);
        std::vector<cv::Point3f> generateObjCoordsInWorldCS(const cv::Size checkerCount, const float checkerSize);
};

#endif // SMCalibrationWorker_H