Skip to content
Snippets Groups Projects
Volume.h 2.08 KiB
Newer Older
Stephen Smith's avatar
Stephen Smith committed
/*  Volume.h

    Mark Woolrich, FMRIB Image Analysis Group

    Copyright (C) 1999-2000 University of Oxford  */

/*  CCOPYRIGHT  */

Mark Woolrich's avatar
Mark Woolrich committed
#if !defined(__Volume_h)
#define __Volume_h

#include <iostream>
#include <fstream>
Stephen Smith's avatar
Stephen Smith committed
#define WANT_STREAM
#define WANT_MATH

#include "newmatap.h"
#include "newmatio.h"
Stephen Smith's avatar
Stephen Smith committed
#include "VolumeSeries.h"
#include <string>
Stephen Smith's avatar
Stephen Smith committed

using namespace NEWMAT;
Mark Woolrich's avatar
Mark Woolrich committed
namespace FILM {
Stephen Smith's avatar
Stephen Smith committed
  
  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();
Mark Woolrich's avatar
Mark Woolrich committed
      void unthreshold(const VolumeSeries::Dims& pdims, const ColumnVector& in);
Stephen Smith's avatar
Stephen Smith committed

      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;       
    };

}

Mark Woolrich's avatar
Mark Woolrich committed
#endif