Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/* 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
}