#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 765 of file processor.h.
string EMAN::Wiener2DFourierProcessor::get_desc | ( | ) | const [inline, virtual] |
Get the descrition of this specific processor.
This function must be overwritten by a subclass.
Implements EMAN::Processor.
Definition at line 796 of file processor.h.
string EMAN::Wiener2DFourierProcessor::get_name | ( | ) | const [inline, virtual] |
Get the processor's name.
Each processor is identified by a unique name.
Implements EMAN::Processor.
Definition at line 768 of file processor.h.
References NAME.
00769 { 00770 return NAME; 00771 }
TypeDict EMAN::Wiener2DFourierProcessor::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.
Definition at line 784 of file processor.h.
References EMAN::EMObject::EMDATA, and EMAN::TypeDict::put().
00785 { 00786 TypeDict d; 00787 d.put("ctf", EMObject::EMDATA, "Ctf object to use for Wiener filter parameters"); 00788 return d; 00789 }
static Processor* EMAN::Wiener2DFourierProcessor::NEW | ( | ) | [inline, static] |
Definition at line 791 of file processor.h.
00792 { 00793 return new Wiener2DFourierProcessor(); 00794 }
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.
image | The image will be copied, actual process happen on copy of image. |
Reimplemented from EMAN::Processor.
Definition at line 1103 of file processor.cpp.
References EMAN::Ctf::compute_2d_complex(), ctf, EMAN::Ctf::CTF_WIENER_FILTER, EMAN::EMData::do_ift(), in, and EMAN::EMData::mult().
Referenced by process_inplace().
01104 { 01105 const EMData *in2 = 0; 01106 if (in->is_complex()) in2=in; 01107 else in=in->do_fft(); 01108 01109 EMData *filt = in->copy_head(); 01110 Ctf *ictf = ctf; 01111 01112 if (!ictf) ctf=(Ctf *)in->get_attr("ctf"); 01113 01114 ictf->compute_2d_complex(filt,Ctf::CTF_WIENER_FILTER); 01115 filt->mult(*in2); 01116 EMData *ret=filt->do_ift(); 01117 01118 delete filt; 01119 if (!in->is_complex()) delete in2; 01120 01121 if(!ictf && ctf) {delete ctf; ctf=0;} 01122 return(ret); 01123 /* const EMData *fft; 01124 float *fftd; 01125 int f=0; 01126 01127 if (!image) { 01128 LOGWARN("NULL Image"); 01129 return ret; 01130 } 01131 01132 if (!image->is_complex()) { 01133 fft = image->do_fft(); 01134 fftd = fft->get_data(); 01135 f=1; 01136 } 01137 else { 01138 fft=image; 01139 fftd=image->get_data(); 01140 } 01141 powd=image->get_data(); 01142 01143 int bad=0; 01144 for (int i=0; i<image->get_xsize()*image->get_ysize(); i+=2) { 01145 snr=(fftd[i]*fftd[i]+fftd[i+1]*fftd[i+1]-powd[i])/powd[i]; 01146 if (snr<0) { bad++; snr=0; } 01147 01148 } 01149 01150 print("%d bad pixels\n",snr); 01151 */ return ret; 01152 01153 }
void Wiener2DFourierProcessor::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 1155 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().
01155 { 01156 EMData *tmp=process(image); 01157 memcpy(image->get_data(),tmp->get_data(),image->get_xsize()*image->get_ysize()*image->get_zsize()*sizeof(float)); 01158 delete tmp; 01159 image->update(); 01160 return; 01161 }
void EMAN::Wiener2DFourierProcessor::set_params | ( | const Dict & | new_params | ) | [inline, virtual] |
Set the processor parameters using a key/value dictionary.
new_params | A dictionary containing the new parameters. |
Reimplemented from EMAN::Processor.
Definition at line 777 of file processor.h.
References ctf, and EMAN::Processor::params.
00778 { 00779 params = new_params; 00780 ctf = params["ctf"]; 00781 // printf("%s %f\n",params.keys()[0].c_str(),lowpass); 00782 }
Ctf* EMAN::Wiener2DFourierProcessor::ctf [protected] |
const string Wiener2DFourierProcessor::NAME = "filter.wiener2d" [static] |