#include <processor.h>
Inheritance diagram for EMAN::ImageProcessor:
Public Member Functions | |
void | process_inplace (EMData *image) |
To process an image in-place. | |
Static Public Member Functions | |
static string | get_group_desc () |
Get the description of this group of processors. | |
Protected Member Functions | |
virtual EMData * | create_processor_image () const =0 |
Definition at line 316 of file processor.h.
virtual EMData* EMAN::ImageProcessor::create_processor_image | ( | ) | const [protected, pure virtual] |
Referenced by process_inplace().
static string EMAN::ImageProcessor::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 321 of file processor.h.
00322 { 00323 return "An Image Processor defines a way to create a processor image. The processor image is used to multiply the input-image in the fourier space. ImageFilter class is the base class. Each specific ImageFilter class must define function create_processor_image(). "; 00324 }
void ImageProcessor::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 490 of file processor.cpp.
References create_processor_image(), data, EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), EMAN::EMData::get_data(), EMAN::EMData::is_complex(), LOGWARN, t, and EMAN::EMData::update().
00491 { 00492 if (!image) { 00493 LOGWARN("NULL image"); 00494 return; 00495 } 00496 00497 EMData *processor_image = create_processor_image(); 00498 00499 if (image->is_complex()) { 00500 (*image) *= *processor_image; 00501 } 00502 else { 00503 EMData *fft = image->do_fft(); 00504 (*fft) *= (*processor_image); 00505 EMData *ift = fft->do_ift(); 00506 00507 float *data = image->get_data(); 00508 float *t = data; 00509 float *ift_data = ift->get_data(); 00510 00511 data = ift_data; 00512 ift_data = t; 00513 00514 ift->update(); 00515 00516 if( fft ) 00517 { 00518 delete fft; 00519 fft = 0; 00520 } 00521 00522 if( ift ) 00523 { 00524 delete ift; 00525 ift = 0; 00526 } 00527 } 00528 00529 image->update(); 00530 }