#include <processor.h>
Inheritance diagram for EMAN::FourierAnlProcessor:
Public Member Functions | |
void | process_inplace (EMData *image) |
To process an image in-place. | |
TypeDict | get_param_types () const |
Get processor parameter information in a dictionary. | |
Static Public Member Functions | |
string | get_group_desc () |
Get the description of this group of processors. | |
Protected Member Functions | |
virtual void | preprocess (EMData *image) |
virtual void | create_radial_func (vector< float > &radial_mask, EMData *image) const =0 |
cutoff_abs | Processor radius in terms of Nyquist (0-.5). | |
cutoff_pixels | Width in Fourier pixels (0 - size()/2). | |
cutoff_freq | Resolution in 1/A (0 - 1 / size*apix). | |
apix | Override A/pix in the image header (changes x,y and z). |
Definition at line 368 of file processor.h.
|
Implemented in EMAN::LowpassAutoBProcessor, EMAN::HighpassAutoPeakProcessor, EMAN::MatchSFProcessor, and EMAN::SetSFProcessor. Referenced by process_inplace(). |
|
Get the description of this group of processors. This function is defined in a parent class. It gives a introduction to a group of processors.
Reimplemented from EMAN::Processor. Definition at line 373 of file processor.h. 00374 { 00375 return "Fourier Filter processors are a group of processor in the frequency domain. Before using such processors on an image, the image must be transformed from real space to the fourier space. FourierProcessor class is the base class of fourier space processors. Each specific processor is either a lowpass filter processor, or a highpass filter processor, or neighter. The unit of lowpass and highpass parameters are in terms of Nyquist, valid range is [0,0.5]. "; 00376 }
|
|
Get processor parameter information in a dictionary. Each parameter has one record in the dictionary. Each record contains its name, data-type, and description.
Reimplemented from EMAN::Processor. Reimplemented in EMAN::LowpassAutoBProcessor, EMAN::MatchSFProcessor, and EMAN::SetSFProcessor. Definition at line 378 of file processor.h. References EMAN::TypeDict::put(). 00379 { 00380 TypeDict d; 00381 d.put("cutoff_abs", EMObject::FLOAT, "Processor radius in terms of Nyquist (0-.5)"); 00382 d.put("cutoff_pixels", EMObject::FLOAT, " Width in Fourier pixels (0 - size()/2)"); 00383 d.put("cutoff_freq", EMObject::FLOAT, "Resolution in 1/A (0 - 1 / size*apix)"); 00384 d.put("apix", EMObject::FLOAT, " Override A/pix in the image header (changes x,y and z)"); 00385 return d; 00386 }
|
|
Reimplemented in EMAN::LowpassAutoBProcessor, and EMAN::HighpassAutoPeakProcessor. Definition at line 389 of file processor.h. Referenced by process_inplace(). 00389 {}
|
|
To process an image in-place. For those processors which can only be processed out-of-place, override this function to just print out some error message to remind user call the out-of-place version.
Implements EMAN::Processor. Definition at line 582 of file processor.cpp. References EMAN::EMData::apply_radial_func(), EMAN::EMData::calc_radial_dist(), create_radial_func(), EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), EMAN::EMData::get_data(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), EMAN::EMData::is_complex(), LOGWARN, preprocess(), and EMAN::EMData::update(). 00583 { 00584 if (!image) { 00585 LOGWARN("NULL Image"); 00586 return; 00587 } 00588 00589 preprocess(image); 00590 00591 // int array_size = FFTRADIALOVERSAMPLE * image->get_ysize(); 00592 // float step=0.5f/array_size; 00593 // 00594 // vector < float >yarray(array_size); 00595 00596 00597 if (image->is_complex()) { 00598 vector <float>yarray = image->calc_radial_dist(image->get_ysize()/2,0,1.0,1); 00599 create_radial_func(yarray,image); 00600 image->apply_radial_func(0, 0.5f/yarray.size(), yarray); 00601 } 00602 else { 00603 EMData *fft = image->do_fft(); 00604 vector <float>yarray = fft->calc_radial_dist(fft->get_ysize()/2,0,1.0,1); 00605 create_radial_func(yarray,image); 00606 fft->apply_radial_func(0, 0.5f/yarray.size(), yarray,0); // 4/30/10 stevel turned off interpolation to fix problem with matched filter 00607 EMData *ift = fft->do_ift(); 00608 00609 memcpy(image->get_data(),ift->get_data(),ift->get_xsize()*ift->get_ysize()*ift->get_zsize()*sizeof(float)); 00610 00611 //ift->update(); Unecessary 00612 00613 delete fft; 00614 delete ift; 00615 00616 } 00617 00618 image->update(); 00619 }
|