/* Volume.h Mark Woolrich, FMRIB Image Analysis Group Copyright (C) 1999-2000 University of Oxford */ /* CCOPYRIGHT */ #if !defined(__Volume_h) #define __Volume_h #include <iostream> #include <fstream> #define WANT_STREAM #define WANT_MATH #include "newmatap.h" #include "newmatio.h" #include "VolumeSeries.h" #include <string> using namespace NEWMAT; namespace FILM { class Volume : public ColumnVector { public: Volume() : ColumnVector() {} Volume(const VolumeSeries::Dims& pdims, const ColumnVector& in) : ColumnVector(), dims(pdims), preThresholdPositions(in) {} Volume(int psize) : ColumnVector (psize) {} Volume(int psize,const VolumeSeries::Dims& pdims, const ColumnVector& in) : ColumnVector (psize), dims(pdims), preThresholdPositions(in){} Volume& operator=(const Volume& vol) { ColumnVector::operator=(vol); preThresholdPositions = vol.preThresholdPositions; dims = vol.dims; return *this; } Volume& operator=(const ColumnVector& pvec) { ColumnVector::operator=(pvec); return *this; } Volume& operator=(float pin) { ColumnVector::operator=(pin); return *this; } Volume(const ColumnVector& pvec) {ColumnVector::operator=(pvec);} void read(const string& fname); void threshold(float thresh); void threshold(); void unthreshold(); void unthreshold(const VolumeSeries::Dims& pdims, const ColumnVector& in); void writeAsInt(const string& fname); void writeAsFloat(const string& fname); const VolumeSeries::Dims& getDims() const { return dims; } void setDims(const VolumeSeries::Dims& pdims) { dims = pdims; } int getUnthresholdSize() const { return dims.x*dims.y*dims.z; } int getVolumeSize() const { return Nrows(); } const ColumnVector& getPreThresholdPositions() const { return preThresholdPositions; } void setPreThresholdPositions(const ColumnVector& in) { preThresholdPositions = in; } protected: VolumeSeries::Dims dims; ColumnVector preThresholdPositions; }; } #endif