Go to the documentation of this file.00001
00008 #ifndef ISIGNALDATA_H_
00009 #define ISIGNALDATA_H_
00010
00011 #include <iostream>
00012 #include <string>
00013 #include <vector>
00014 #include <teem/nrrd.h>
00015 #include "linalg.h"
00016 #include <vnl/vnl_matrix.h>
00017
00025 class ISignalData
00026 {
00027 public:
00028
00034 ISignalData(double sigma_signal, double sigma_mask)
00035 : _sigma_signal(sigma_signal), _sigma_mask(sigma_mask) {
00036
00037 }
00038
00040 virtual ~ISignalData() { }
00041
00043 virtual void Interp3Signal(const vec_t& pos,
00044 std::vector<double>& signal) const = 0;
00045
00047 virtual double Interp3ScalarMask(const vec_t& pos) const = 0;
00048
00050 virtual void GetSeeds(const std::vector<int>& labels,
00051 std::vector<vec_t>& seeds) const = 0;
00052
00054 virtual const std::vector<vec_t>& gradients() const = 0;
00055
00057 virtual const std::vector<double>& GetBValues() const = 0;
00058
00060 virtual int GetSignalDimension() const = 0;
00061
00072 virtual bool LoadData(const std::string& data_file,
00073 const std::string& seed_file,
00074 const std::string& mask_file,
00075 const bool normalizedDWIData,
00076 const bool outputNormalizedDWIData
00077 ) = 0;
00078
00083 virtual bool LoadSignal(const std::string& data_file, const bool normalizedDWIData) = 0;
00084
00086 vec_t voxel() const {
00087 return _voxel;
00088 }
00089
00091 virtual vec_t dim() const = 0;
00092
00094 const vnl_matrix<double> i2r() const {
00095 return _i2r;
00096 }
00097
00099 const vnl_matrix<double> r2i() const {
00100 return _r2i;
00101 }
00102
00103 protected:
00104
00106 const double _sigma_signal;
00108 const double _sigma_mask;
00109
00111 vec_t _voxel;
00112
00114 vnl_matrix<double> _r2i;
00115
00117 vnl_matrix<double> _i2r;
00118 };
00119
00120 #endif // ISIGNALDATA_H