1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*!
 * \file OxTestImage.h
 * \author Konrad Werys
 * \date 2018/07/30
 */

#ifndef Tomato_OXTESTImage_H
#define Tomato_OXTESTImage_H

#include "OxTestData.h"


namespace Ox {

    template< typename MeasureType >
    class TestImage {

    public:

        TestImage(int nCols, int nRows, std::vector <std::string> filesPaths, std::vector<int> invTimesOrder);
        TestImage(int nCols, int nRows, std::vector <std::string> filesPaths);
        virtual ~TestImage();

        int init(int nCols, int nRows, std::vector <std::string> filesPaths, std::vector<int> invTimesOrder);

        virtual MeasureType *getInvTimesPtr() ;
        virtual std::vector<MeasureType> getInvTimes() const;

        virtual MeasureType *getImageMagPtr() const;
        virtual MeasureType *getImagePhaPtr() const;
        virtual MeasureType *getImageResultsMolliPtr() const;
        virtual MeasureType *getImageResultsShmolliPtr() const;

        virtual int getNCols() const { return _nCols; }
        virtual int getNRows() const { return _nRows; }
        virtual int getNSamples() const { return _nSamples; }

    protected:

        int _nCols;
        int _nRows;
        int _nSamples;

        std::vector<MeasureType> _invTimes;
        std::vector<int> _invTimesOrder;

        MeasureType *_imageMag; // nRows * nCols * nSamples, address [iRow][iCol][iSam] iSample * (nRows*nCols) + iCol * nRows + iRow
        MeasureType *_imagePha; // nRows * nCols * nSamples, address [iRow][iCol][iSam] iSample * (nRows*nCols) + iCol * nRows + iRow

        MeasureType *_imageResultsMolli; // nCols * nRows * 3
        MeasureType *_imageResultsShmolli; // nCols * nRows * 3

    };
} // namespace Ox

#include "OxTestImage.hxx"

#endif //Tomato_OXTESTImage_H