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
00061 namespace EMAN
00062 {
00063 class EMData;
00071 enum fp_flag {
00072 CIRCULANT = 1,
00073 CIRCULANT_NORMALIZED = 2,
00074 PADDED = 3,
00075 PADDED_NORMALIZED = 4,
00076 PADDED_LAG = 5,
00077 PADDED_NORMALIZED_LAG = 6
00078 };
00079
00080
00081 enum fp_type {
00082 CORRELATION,
00083 CONVOLUTION,
00084 SELF_CORRELATION,
00085 AUTOCORRELATION
00086 };
00087
00108 EMData* fourierproduct(EMData* f, EMData* g, fp_flag myflag,
00109 fp_type mytype, bool center);
00128 inline EMData* correlation(EMData* f, EMData* g, fp_flag myflag, bool center) {
00129 return fourierproduct(f, g, myflag, CORRELATION, center);
00130 }
00149 inline EMData* convolution(EMData* f, EMData* g, fp_flag myflag, bool center) {
00150 return fourierproduct(f, g, myflag, CONVOLUTION, center);
00151 }
00165 EMData* rsconvolution(EMData* f, EMData* K);
00175 EMData* rscp(EMData* f);
00192 inline EMData* autocorrelation(EMData* f, fp_flag myflag, bool center) {
00193 return fourierproduct(f, NULL, myflag, AUTOCORRELATION, center);
00194 }
00211 inline EMData* self_correlation(EMData* f, fp_flag myflag, bool center) {
00212 return fourierproduct(f, NULL, myflag, SELF_CORRELATION, center);
00213 }
00230 EMData* periodogram(EMData* f);
00231
00232 enum kernel_shape {
00233 BLOCK = 1,
00234 CIRCULAR = 2,
00235 CROSS = 3
00236 };
00237
00238 EMData* filt_median_(EMData* f, int nxk, int nyk, int nzk, kernel_shape myshape);
00259 enum morph_type {
00260 BINARY = 1,
00261 GRAYLEVEL = 2
00262 };
00263
00264 EMData* filt_dilation_(EMData* f, EMData* K, morph_type mydilation);
00281 EMData* filt_erosion_(EMData* f, EMData* K, morph_type myerosion);
00297 }
00298
00299
00300 #endif // eman_fundamentals_h
00301
00302