Skip to content
Snippets Groups Projects
Volume.h 2.08 KiB
/*  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