#include <processor.h>
Inheritance diagram for EMAN::FourierProcessor:
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 | |
static string | get_group_desc () |
Get the description of this group of processors. | |
Protected Member Functions | |
virtual void | preprocess (EMData *) |
virtual void | create_radial_func (vector< float > &radial_mask) 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 336 of file processor.h.
virtual void EMAN::FourierProcessor::create_radial_func | ( | vector< float > & | radial_mask | ) | const [protected, pure virtual] |
Implemented in EMAN::LinearRampFourierProcessor, EMAN::LinearRampProcessor, EMAN::LoGFourierProcessor, and EMAN::DoGFourierProcessor.
Referenced by process_inplace().
static string EMAN::FourierProcessor::get_group_desc | ( | ) | [inline, static] |
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 341 of file processor.h.
00342 { 00343 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]. "; 00344 }
TypeDict EMAN::FourierProcessor::get_param_types | ( | ) | const [inline, virtual] |
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::LinearRampProcessor, EMAN::LoGFourierProcessor, and EMAN::DoGFourierProcessor.
Definition at line 346 of file processor.h.
References EMAN::EMObject::FLOAT, and EMAN::TypeDict::put().
00347 { 00348 TypeDict d; 00349 d.put("cutoff_abs", EMObject::FLOAT, "Processor radius in terms of Nyquist (0-.5)"); 00350 d.put("cutoff_pixels", EMObject::FLOAT, " Width in Fourier pixels (0 - size()/2)"); 00351 d.put("cutoff_freq", EMObject::FLOAT, "Resolution in 1/A (0 - 1 / size*apix)"); 00352 d.put("apix", EMObject::FLOAT, " Override A/pix in the image header (changes x,y and z)"); 00353 return d; 00354 }
virtual void EMAN::FourierProcessor::preprocess | ( | EMData * | ) | [inline, protected, virtual] |
void FourierProcessor::process_inplace | ( | EMData * | image | ) | [virtual] |
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.
image | The image to be processed. |
Implements EMAN::Processor.
Definition at line 539 of file processor.cpp.
References EMAN::EMData::apply_radial_func(), create_radial_func(), EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), FFTRADIALOVERSAMPLE, 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().
00540 { 00541 if (!image) { 00542 LOGWARN("NULL Image"); 00543 return; 00544 } 00545 00546 preprocess(image); 00547 00548 int array_size = FFTRADIALOVERSAMPLE * image->get_ysize(); 00549 float step=0.5f/array_size; 00550 00551 vector < float >yarray(array_size); 00552 00553 create_radial_func(yarray); 00554 00555 if (image->is_complex()) { 00556 image->apply_radial_func(0, step, yarray); 00557 } 00558 else { 00559 EMData *fft = image->do_fft(); 00560 fft->apply_radial_func(0, step, yarray); 00561 EMData *ift = fft->do_ift(); 00562 00563 memcpy(image->get_data(),ift->get_data(),ift->get_xsize()*ift->get_ysize()*ift->get_zsize()*sizeof(float)); 00564 00565 //ift->update(); Unecessary 00566 00567 if( fft ) 00568 { 00569 delete fft; 00570 fft = 0; 00571 } 00572 00573 if( ift ) 00574 { 00575 delete ift; 00576 ift = 0; 00577 } 00578 } 00579 00580 image->update(); 00581 }