#include <processor.h>
Inheritance diagram for EMAN::Wiener2DFourierProcessor:
Public Member Functions | |
string | get_name () const |
Get the processor's name. | |
virtual EMData * | process (const EMData *const image) |
To proccess an image out-of-place. | |
void | process_inplace (EMData *image) |
To process an image in-place. | |
void | set_params (const Dict &new_params) |
Set the processor parameters using a key/value dictionary. | |
TypeDict | get_param_types () const |
Get processor parameter information in a dictionary. | |
string | get_desc () const |
Get the descrition of this specific processor. | |
Static Public Member Functions | |
static Processor * | NEW () |
Static Public Attributes | |
static const string | NAME = "filter.wiener2d" |
Protected Attributes | |
Ctf * | ctf |
ctf[in] | A Ctf object to use |
Definition at line 725 of file processor.h.
|
Get the descrition of this specific processor. This function must be overwritten by a subclass.
Implements EMAN::Processor. Definition at line 756 of file processor.h.
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 728 of file processor.h. References NAME. 00729 { 00730 return NAME; 00731 }
|
|
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. Definition at line 744 of file processor.h. References EMAN::EMObject::EMDATA, and EMAN::TypeDict::put(). 00745 { 00746 TypeDict d; 00747 d.put("ctf", EMObject::EMDATA, "Ctf object to use for Wiener filter parameters"); 00748 return d; 00749 }
|
|
Definition at line 751 of file processor.h. 00752 { 00753 return new Wiener2DFourierProcessor(); 00754 }
|
|
To proccess an image out-of-place. For those processors which can only be processed out-of-place, override this function to give the right behavior.
Reimplemented from EMAN::Processor. Definition at line 996 of file processor.cpp. References EMAN::Ctf::compute_2d_complex(), EMAN::EMData::copy_head(), ctf, EMAN::Ctf::CTF_WIENER_FILTER, EMAN::EMData::do_fft(), EMAN::EMData::do_ift(), EMAN::EMData::get_attr(), EMAN::EMData::is_complex(), and EMAN::EMData::mult(). Referenced by process_inplace(). 00997 { 00998 const EMData *in2 = 0; 00999 if (in->is_complex()) in2=in; 01000 else in=in->do_fft(); 01001 01002 EMData *filt = in->copy_head(); 01003 Ctf *ictf = ctf; 01004 01005 if (!ictf) ctf=(Ctf *)in->get_attr("ctf"); 01006 01007 ictf->compute_2d_complex(filt,Ctf::CTF_WIENER_FILTER); 01008 filt->mult(*in2); 01009 EMData *ret=filt->do_ift(); 01010 01011 delete filt; 01012 if (!in->is_complex()) delete in2; 01013 01014 if(!ictf && ctf) {delete ctf; ctf=0;} 01015 return(ret); 01016 /* const EMData *fft; 01017 float *fftd; 01018 int f=0; 01019 01020 if (!image) { 01021 LOGWARN("NULL Image"); 01022 return ret; 01023 } 01024 01025 if (!image->is_complex()) { 01026 fft = image->do_fft(); 01027 fftd = fft->get_data(); 01028 f=1; 01029 } 01030 else { 01031 fft=image; 01032 fftd=image->get_data(); 01033 } 01034 powd=image->get_data(); 01035 01036 int bad=0; 01037 for (int i=0; i<image->get_xsize()*image->get_ysize(); i+=2) { 01038 snr=(fftd[i]*fftd[i]+fftd[i+1]*fftd[i+1]-powd[i])/powd[i]; 01039 if (snr<0) { bad++; snr=0; } 01040 01041 } 01042 01043 print("%d bad pixels\n",snr); 01044 */ return ret; 01045 01046 }
|
|
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 1048 of file processor.cpp. References EMAN::EMData::get_data(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), process(), and EMAN::EMData::update(). 01048 { 01049 EMData *tmp=process(image); 01050 memcpy(image->get_data(),tmp->get_data(),image->get_xsize()*image->get_ysize()*image->get_zsize()*sizeof(float)); 01051 delete tmp; 01052 image->update(); 01053 return; 01054 }
|
|
Set the processor parameters using a key/value dictionary.
Reimplemented from EMAN::Processor. Definition at line 737 of file processor.h. References ctf, and EMAN::Processor::params. 00738 { 00739 params = new_params; 00740 ctf = params["ctf"]; 00741 // printf("%s %f\n",params.keys()[0].c_str(),lowpass); 00742 }
|
|
Definition at line 764 of file processor.h. Referenced by process(), and set_params(). |
|
Definition at line 761 of file processor.h. Referenced by get_name(). |