45 program->
addParamsLine(
" [--N_AR <N=24>] : N order of the AR model");
46 program->
addParamsLine(
" [--M_AR <N=24>] : M order of the AR model");
47 program->
addParamsLine(
" [--N_MA <N=20>] : N order of the MA model");
48 program->
addParamsLine(
" [--M_MA <N=20>] : M order of the MA model");
54 long NumberOfPoints = (N + 1) * M;
56 Neighbors.
resize(NumberOfPoints, 3);
60 for (
int p = N; p >= 0; p--)
62 for (
int q = M; q > 0; q--)
64 A2D_ELEM(Neighbors,n, 0) = (double)p;
65 A2D_ELEM(Neighbors,n, 1) = (double)q;
74 long NumberOfPoints = N * (M + 1);
76 Neighbors.
resize(NumberOfPoints, 3);
80 for (
int p = N; p >= 1; p--)
82 for (
int q = 0; q >= -M; q--)
84 A2D_ELEM(Neighbors,n, 0) = (double)p;
85 A2D_ELEM(Neighbors,n, 1) = (double)q;
117 Coeficients.
resizeNoCopy(NumberOfARParameters, NumberOfARParameters);
122 for (
long eq = 0 ;
eq < NumberOfARParameters;
eq++)
131 for (
long co = 0 ; co < NumberOfARParameters; co++)
148 for (
long n = 0 ;
n < NumberOfARParameters;
n++)
155 for (
long n = 0 ;
n < NumberOfARParameters;
n++)
164 double idSigma = 1.0 / prm.
dSigma;
170 for (
long n = 0 ;
n < NumberOfMAParameters;
n++)
175 for (
long m = 0 ;
m < NumberOfARParameters;
m++)
179 auto alpha1 = (int)(MAn0 - ARm0);
180 auto alpha2 = (int)(MAn1 - ARm1);
181 auto beta1 = (int)(MAn0 + ARm0);
182 auto beta2 = (int)(MAn1 + ARm1);
197 bool apply_final_median_filter =
false;
205 int sizeX =
XSIZE(Img);
206 int sizeY =
YSIZE(Img);
210 iARParameters(NumberOfARParameters, 2);
211 for (
long n = 0 ;
n < NumberOfMAParameters;
n++)
216 for (
long n = 0 ;
n < NumberOfARParameters;
n++)
221 for (
int i = 0;
i < sizeY;
i++)
222 for (
int j = 0;
j < (sizeX / 2);
j++)
225 XX(dDigitalFreq) =
j / (double)sizeX;
226 YY(dDigitalFreq) =
i / (double)sizeY;
230 for (
long n = 0 ;
n < NumberOfMAParameters;
n++)
235 cos((-2) *
PI * (p *
YY(dDigitalFreq) + q *
XX(dDigitalFreq)));
241 for (
long n = 0 ;
n < NumberOfARParameters;
n++)
246 cos((-2) *
PI * (p *
YY(dDigitalFreq) + q *
XX(dDigitalFreq)));
253 apply_final_median_filter =
true;
258 double val2 = prm.
dSigma * B / A;
265 if (apply_final_median_filter)
270 for (
size_t i = 1;
i <
YSIZE(Filter) - 1;
i++)
271 for (
size_t j = 1;
j <
XSIZE(Filter) - 1;
j++)
MultidimArray< double > MAParameters
#define A2D_ELEM(v, i, j)
void resize(size_t Ndim, size_t Zdim, size_t Ydim, size_t Xdim, bool copy=true)
void Second_Quadrant_Neighbors(int N, int M, MultidimArray< double > &Neighbors)
void First_Quadrant_Neighbors(int N, int M, MultidimArray< double > &Neighbors)
#define DIRECT_A2D_ELEM(v, i, j)
void auto_correlation_matrix(const MultidimArray< double > &Img, MultidimArray< double > &R, CorrelationAux &aux)
void resizeNoCopy(int Ydim, int Xdim)
MultidimArray< double > ARParameters
#define MAT_ELEM(m, i, j)
void CausalARMA(MultidimArray< double > &Img, ARMA_parameters &prm)
void eq(Image< double > &op1, const Image< double > &op2)
Be careful with integer images for relational operations...due to double comparisons.
void ARMAFilter(MultidimArray< double > &Img, MultidimArray< double > &Filter, ARMA_parameters &prm)
void medianFilter3x3(MultidimArray< T > &m, MultidimArray< T > &out)
void readParams(XmippProgram *program)
Read parameters from command line.
static void defineParams(XmippProgram *program)
Define parameters.
void resizeNoCopy(int Xdim)
void initZeros(const MultidimArray< T1 > &op)
int getIntParam(const char *param, int arg=0)
void addParamsLine(const String &line)