Subversion Repositories seema-scanner

Rev

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


#ifndef SMReconstructionWorker_H
#define SMReconstructionWorker_H

#include "SMTypes.h"
#include "SMCalibrationParameters.h"
#include "Codec.h"

#include <QObject>
#include <QTime>

#include <opencv2/opencv.hpp>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

class SMReconstructionWorker : public QObject {
    Q_OBJECT

    public:
        SMReconstructionWorker(){}
        ~SMReconstructionWorker(){}
    public slots:
        void setup();
        void reconstructPointCloud(SMFrameSequence frameSequence);
        void reconstructPointClouds(std::vector<SMFrameSequence> frameSequences);
    signals:
        void newPointCloud(pcl::PointCloud<pcl::PointXYZRGB>::Ptr pointCloud);
        void error(QString err);
        void done();
    private:
        void triangulateFromUp(cv::Mat up0, cv::Mat mask0,cv::Mat up1, cv::Mat mask1,cv::Mat &xyz);
        void triangulateFromVp(cv::Mat vp0, cv::Mat mask0, cv::Mat vp1, cv::Mat mask1, cv::Mat &xyz);
        void triangulateFromUpVp(cv::Mat up0, cv::Mat vp0, cv::Mat mask0, cv::Mat up1, cv::Mat vp1, cv::Mat mask1, cv::Mat &xyz);

    private:
        SMCalibrationParameters calibration;
        CodecDir dir;
        QTime time;
        Decoder *decoder;
        cv::Mat lensMap0Horz, lensMap0Vert, lensMap1Horz, lensMap1Vert;
};

#endif