/* AutoCorrEstimator.h Mark Woolrich, FMRIB Image Analysis Group Copyright (C) 1999-2000 University of Oxford */ /* CCOPYRIGHT */ #include <iostream> #include <fstream> #define WANT_STREAM #define WANT_MATH #include "VolumeSeries.h" #include "Volume.h" #include "newmatap.h" #include "newmatio.h" #include "sigproc.h" using namespace NEWMAT; using namespace SIGPROC; using namespace TACO; namespace TACO { #if !defined(__AutoCorrEstimator_h) #define __AutoCorrEstimator_h class AutoCorrEstimator { public: AutoCorrEstimator(const VolumeSeries& pxdata) : xdata(pxdata), vrow(), xrow(), dummy(), realifft(), mn(pxdata.getNumSeries()), zeropad(0) { zeropad = SIGPROC::EstablishZeroPadding(pxdata.getNumVolumes()); vrow.ReSize(zeropad); xrow.ReSize(zeropad); dummy.ReSize(zeropad); realifft.ReSize(zeropad); } void calcRaw(); void spatiallySmooth(const string& usanfname, const Volume& epivol, int masksize, const string& epifname, const string& susanpath); void applyConstraints(); void filter(const ColumnVector& filterFFT); void fitAutoRegressiveModel(); void pava(); void preWhiten(VolumeSeries& in, VolumeSeries& ret); void preWhiten(ColumnVector& in, ColumnVector& ret, int i, Matrix& dmret); void setDesignMatrix(const Matrix& dm); int establishUsanThresh(const Volume& epivol); void getMeanEstimate(ColumnVector& ret); VolumeSeries& getEstimates() { return acEst; } private: AutoCorrEstimator(); const AutoCorrEstimator& operator=(AutoCorrEstimator&); AutoCorrEstimator(AutoCorrEstimator&); const VolumeSeries& xdata; VolumeSeries acEst; VolumeSeries dminFFTReal; VolumeSeries dminFFTImag; ColumnVector vrow; ColumnVector xrow; ColumnVector dm_fft_real, dm_fft_imag; ColumnVector x_fft_real, ac_fft_real; ColumnVector x_fft_im, ac_fft_im; ColumnVector dummy; ColumnVector realifft; ColumnVector mn; int zeropad; }; #endif }