28 #ifndef CORE_WAVELET_H 29 #define CORE_WAVELET_H 85 unsigned long int nn[3];
86 unsigned long int *ptr_nn = nn - 1;
94 else if (
ZSIZE(v) == 1)
101 wtn(ptr_result, ptr_nn, dim, isign,
pwt);
122 #define DWT_Imin(s, smax, l) static_cast< int >(((l == '0') ? 0 : \ 123 pow(2.0, smax - s - 1))) 124 #define DWT_Imax(s, smax, l) static_cast< int>(((l == '0') ? \ 125 pow(2.0, smax - s - 1) - 1 : pow(2.0, smax - s) - 1)) 136 const std::string& quadrant,
155 const std::string& quadrant,
164 x1 =
DWT_Imin(scale, Nx, quadrant[0]);
165 y1 =
DWT_Imin(scale, Ny, quadrant[1]);
166 x2 =
DWT_Imax(scale, Nx, quadrant[0]);
167 y2 =
DWT_Imax(scale, Ny, quadrant[1]);
184 const std::string& quadrant,
196 x1 =
DWT_Imin(scale, Nx, quadrant[0]);
197 y1 =
DWT_Imin(scale, Ny, quadrant[1]);
198 z1 =
DWT_Imin(scale, Nz, quadrant[2]);
199 x2 =
DWT_Imax(scale, Nx, quadrant[0]);
200 y2 =
DWT_Imax(scale, Ny, quadrant[1]);
201 z2 =
DWT_Imax(scale, Nz, quadrant[2]);
237 std::string& quadrant);
251 std::string& quadrant);
261 const std::string& quadrant);
267 const std::string& quadrant);
302 bool white_noise =
false,
304 bool denoise =
true);
328 bool white_noise =
false,
330 bool denoise =
true);
382 double minWaveLength,
void phaseCongMono(MultidimArray< double > &I, MultidimArray< double > &PC, MultidimArray< double > &FT, MultidimArray< double > &Energy, MultidimArray< double > &lowPass, MultidimArray< double > &Radius, MultidimArray< std::complex< double > > &H, int nScale, double minWaveLength, double mult, double sigmaOnf)
void Bilib_DWT(const MultidimArray< double > &input, MultidimArray< double > &result, int iterations, int isign=1)
void set_DWT_type(int DWT_type)
int Get_Max_Scale(int size)
void wtn(double a[], unsigned long nn[], int ndim, int isign, void(*wtstep)(double [], unsigned long, int))
void DWT_lowpass2D(const MultidimArray< double > &v, MultidimArray< double > &result)
#define DWT_Imax(s, smax, l)
void clean_quadrant3D(MultidimArray< double > &I, int scale, const std::string &quadrant)
#define MULTIDIM_ARRAY(v)
i<=ncnstr;i++) cs[i].mult=0.e0;if(nfsip) for(i=1;i<=nob;i++) { ob[i].mult=0.e0;ob[i].mult_L=0.e0;} for(i=1;i<=nqpram;i++) { ii=k+i;if(clamda[ii]==0.e0 &&clamda[ii+nqpram]==0.e0) continue;else if(clamda[ii] !=0.e0) clamda[ii]=-clamda[ii];else clamda[ii]=clamda[ii+nqpram];} nqnp=nqpram+ncnstr;for(i=1;i<=nqpram;i++) param-> mult[i]
void clean_quadrant2D(MultidimArray< double > &I, int scale, const std::string &quadrant)
Matrix1D< double > bayesian_wiener_filtering2D(MultidimArray< double > &WI, int allowed_scale, double SNR0=0.1, double SNRF=0.2, bool white_noise=false, int tell=0, bool denoise=true)
#define DWT_Imin(s, smax, l)
std::string Quadrant3D(int q)
void DWT(const MultidimArray< T > &v, MultidimArray< double > &result, int isign=1)
void adaptive_soft_thresholding2D(MultidimArray< double > &I, int scale)
void log10(Image< double > &op)
void SelectDWTBlock(int scale, const MultidimArray< T > &I, const std::string &quadrant, int &x1, int &x2)
Matrix1D< double > bayesian_wiener_filtering3D(MultidimArray< double > &WI, int allowed_scale, double SNR0=0.1, double SNRF=0.2, bool white_noise=false, int tell=0, bool denoise=true)
void toLogical(int k_phys, int i_phys, int j_phys, int &k_log, int &i_log, int &j_log) const
void typeCast(const Matrix1D< T1 > &v1, Matrix1D< T2 > &v2)
std::string Quadrant2D(int q)
void DWT_keep_central_part(MultidimArray< double > &I, double R)
void IDWT(const MultidimArray< double > &v, MultidimArray< double > &result)
void soft_thresholding(MultidimArray< double > &I, double th)
void pwt(double a[], unsigned long n, int isign)
void Get_Scale_Quadrant(int size_x, int x, int &scale, std::string &quadrant)