00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef eman_fundamentals_h
00037 #define eman_fundamentals_h
00038
00039 #include <cstddef>
00040
00041
00056 namespace EMAN
00057 {
00058 class EMData;
00066 enum fp_flag {
00067 CIRCULANT = 1,
00068 CIRCULANT_NORMALIZED = 2,
00069 PADDED = 3,
00070 PADDED_NORMALIZED = 4,
00071 PADDED_LAG = 5,
00072 PADDED_NORMALIZED_LAG = 6
00073 };
00074
00075
00076 enum fp_type {
00077 CORRELATION,
00078 CONVOLUTION,
00079 SELF_CORRELATION,
00080 AUTOCORRELATION
00081 };
00082
00103 EMData* fourierproduct(EMData* f, EMData* g, fp_flag myflag,
00104 fp_type mytype, bool center);
00123 inline EMData* correlation(EMData* f, EMData* g, fp_flag myflag, bool center) {
00124 return fourierproduct(f, g, myflag, CORRELATION, center);
00125 }
00144 inline EMData* convolution(EMData* f, EMData* g, fp_flag myflag, bool center) {
00145 return fourierproduct(f, g, myflag, CONVOLUTION, center);
00146 }
00160 EMData* rsconvolution(EMData* f, EMData* K);
00170 EMData* rscp(EMData* f);
00187 inline EMData* autocorrelation(EMData* f, fp_flag myflag, bool center) {
00188 return fourierproduct(f, NULL, myflag, AUTOCORRELATION, center);
00189 }
00206 inline EMData* self_correlation(EMData* f, fp_flag myflag, bool center) {
00207 return fourierproduct(f, NULL, myflag, SELF_CORRELATION, center);
00208 }
00225 EMData* periodogram(EMData* f);
00226
00227 enum kernel_shape {
00228 BLOCK = 1,
00229 CIRCULAR = 2,
00230 CROSS = 3
00231 };
00232
00233 EMData* filt_median_(EMData* f, int nxk, int nyk, int nzk, kernel_shape myshape);
00254 enum morph_type {
00255 BINARY = 1,
00256 GRAYLEVEL = 2
00257 };
00258
00259 EMData* filt_dilation_(EMData* f, EMData* K, morph_type mydilation);
00276 EMData* filt_erosion_(EMData* f, EMData* K, morph_type myerosion);
00292 }
00293
00294
00295 #endif // eman_fundamentals_h
00296
00297