Go to the documentation of this file.00001
00006 #ifndef NRRDDATA_H_
00007 #define NRRDDATA_H_
00008
00009 #include "ISignalData.h"
00010
00011 #include <iostream>
00012 #include <string>
00013 #include <vector>
00014 #include <teem/nrrd.h>
00015 #include "linalg.h"
00016
00017 #include <vnl/vnl_matrix.h>
00018
00025 class NrrdData : public ISignalData
00026 {
00027 public:
00028
00030 NrrdData(double sigma_signal, double sigma_mask);
00031
00033 ~NrrdData();
00034
00036 virtual void Interp3Signal(const vec_t& pos, std::vector<double>& signal) const;
00037
00039 virtual double Interp3ScalarMask(const vec_t& pos) const;
00040
00049 virtual void GetSeeds(const std::vector<int>& labels, std::vector<vec_t>& seeds) const;
00050
00052 virtual const std::vector<vec_t>& gradients() const {
00053 return _gradients;
00054 }
00055
00061 virtual const std::vector<double>& GetBValues() const {
00062 return _b_values;
00063 }
00064
00069 virtual int GetSignalDimension() const {
00070 return _num_gradients;
00071 }
00072
00083 virtual bool LoadData(const std::string& data_file,
00084 const std::string& seed_file,
00085 const std::string& mask_file,
00086 const bool normalizedDWIData,
00087 const bool outputNormalizedDWIData
00088 );
00089
00094 virtual bool LoadSignal(const std::string& data_file, const bool normalizedDWIData);
00095
00097 virtual vec_t dim() const {
00098 return _dim;
00099 }
00100
00101 private:
00102
00104 vec_t _dim;
00105
00106 int _num_gradients;
00107
00109 std::vector<vec_t> _gradients;
00110
00112 std::vector<double> _b_values;
00113
00115 float *_data;
00117 void *_seed_data;
00119 int _seed_data_type;
00121 void *_mask_data;
00123 int _mask_num_bytes;
00124
00126 Nrrd *_data_nrrd;
00128 Nrrd *_seed_nrrd;
00130 Nrrd *_mask_nrrd;
00131 };
00132
00133
00134 #endif // NRRDDATA_H_