EMAN2
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
EMAN::GridKernelFixProcessor Class Reference

Multiplies image by a 'linear pyramid' 1-(|x-xsize/2|*|y-ysize/2|*4/(xsize*ysize)) This is useful in averaging together boxed out regions with 50% overlap. More...

#include <processor.h>

Inheritance diagram for EMAN::GridKernelFixProcessor:
Inheritance graph
[legend]
Collaboration diagram for EMAN::GridKernelFixProcessor:
Collaboration graph
[legend]

Public Member Functions

string get_name () const
 Get the processor's name. More...
 
void process_inplace (EMData *image)
 To process an image in-place. More...
 
virtual TypeDict get_param_types () const
 Get processor parameter information in a dictionary. More...
 
string get_desc () const
 Get the descrition of this specific processor. More...
 
- Public Member Functions inherited from EMAN::Processor
virtual ~Processor ()
 
virtual EMDataprocess (const EMData *const image)
 To proccess an image out-of-place. More...
 
virtual void process_list_inplace (vector< EMData * > &images)
 To process multiple images using the same algorithm. More...
 
virtual Dict get_params () const
 Get the processor parameters in a key/value dictionary. More...
 
virtual void set_params (const Dict &new_params)
 Set the processor parameters using a key/value dictionary. More...
 

Static Public Member Functions

static ProcessorNEW ()
 
- Static Public Member Functions inherited from EMAN::Processor
static string get_group_desc ()
 Get the description of this group of processors. More...
 
static void EMFourierFilterInPlace (EMData *fimage, Dict params)
 Compute a Fourier-filter processed image in place. More...
 
static EMDataEMFourierFilter (EMData *fimage, Dict params)
 Compute a Fourier-processor processed image without altering the original image. More...
 

Static Public Attributes

static const string NAME = "math.gridkernelfix"
 

Additional Inherited Members

- Public Types inherited from EMAN::Processor
enum  fourier_filter_types {
  TOP_HAT_LOW_PASS , TOP_HAT_HIGH_PASS , TOP_HAT_BAND_PASS , TOP_HOMOMORPHIC ,
  GAUSS_LOW_PASS , GAUSS_HIGH_PASS , GAUSS_BAND_PASS , GAUSS_INVERSE ,
  GAUSS_HOMOMORPHIC , BUTTERWORTH_LOW_PASS , BUTTERWORTH_HIGH_PASS , BUTTERWORTH_HOMOMORPHIC ,
  KAISER_I0 , KAISER_SINH , KAISER_I0_INVERSE , KAISER_SINH_INVERSE ,
  SHIFT , TANH_LOW_PASS , TANH_HIGH_PASS , TANH_HOMOMORPHIC ,
  TANH_BAND_PASS , RADIAL_TABLE , CTF_
}
 Fourier filter Processor type enum. More...
 
- Protected Attributes inherited from EMAN::Processor
Dict params
 

Detailed Description

Multiplies image by a 'linear pyramid' 1-(|x-xsize/2|*|y-ysize/2|*4/(xsize*ysize)) This is useful in averaging together boxed out regions with 50% overlap.

Definition at line 4182 of file processor.h.

Member Function Documentation

◆ get_desc()

string EMAN::GridKernelFixProcessor::get_desc ( ) const
inlinevirtual

Get the descrition of this specific processor.

This function must be overwritten by a subclass.

Returns
The description of this processor.

Implements EMAN::Processor.

Definition at line 4204 of file processor.h.

4205 {
4206 return "This corrects the real-space effects of using one of the gridding insertion functions on the Fourier reconstructor. Valid options for mode are 'gridding_5' and 'gridding7'.";
4207 }

◆ get_name()

string EMAN::GridKernelFixProcessor::get_name ( ) const
inlinevirtual

Get the processor's name.

Each processor is identified by a unique name.

Returns
The processor's name.

Implements EMAN::Processor.

Definition at line 4185 of file processor.h.

4186 {
4187 return NAME;
4188 }
static const string NAME
Definition: processor.h:4209

References NAME.

◆ get_param_types()

virtual TypeDict EMAN::GridKernelFixProcessor::get_param_types ( ) const
inlinevirtual

Get processor parameter information in a dictionary.

Each parameter has one record in the dictionary. Each record contains its name, data-type, and description.

Returns
A dictionary containing the parameter info.

Reimplemented from EMAN::Processor.

Definition at line 4197 of file processor.h.

4198 {
4199 TypeDict d;
4200 d.put("mode", EMObject::STRING);
4201 return d;
4202 }
TypeDict is a dictionary to store <string, EMObject::ObjectType> pair.
Definition: emobject.h:305
void put(const string &key, EMObject::ObjectType o, const string &desc="")
Definition: emobject.h:330

References EMAN::TypeDict::put(), and EMAN::EMObject::STRING.

◆ NEW()

static Processor * EMAN::GridKernelFixProcessor::NEW ( )
inlinestatic

Definition at line 4192 of file processor.h.

4193 {
4194 return new GridKernelFixProcessor();
4195 }
Multiplies image by a 'linear pyramid' 1-(|x-xsize/2|*|y-ysize/2|*4/(xsize*ysize)) This is useful in ...
Definition: processor.h:4183

◆ process_inplace()

void GridKernelFixProcessor::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.

Parameters
imageThe image to be processed.

Implements EMAN::Processor.

Definition at line 818 of file processor.cpp.

819{
820 if (!image) {
821 LOGWARN("NULL Image");
822 return;
823 }
824
825 string mode=(string)params["mode"];
826
827 int nx = image->get_xsize();
828 int ny = image->get_ysize();
829 int nz = image->get_zsize();
830
831 // make an empty FFT object.
832 EMData *fft=new EMData((nx&0xfffffffe)+2,ny,nz);
833 fft->set_complex(1);
834 fft->set_ri(1);
835 if (nx&1) fft->set_fftpad(1);
836 fft->to_zero();
837
838 // Copy the kernel. Note that the kernel is 3x oversampled, so we are just computing an approximate kernel locally
839 if (mode=="gridding_5") {
840 for (int z=-2; z<3; z++) {
841 for (int y=-2; y<3; y++) {
842 for (int x=0; x<3; x++) {
843 fft->set_complex_at(x,y,z,FourierInserter3DMode7::kernel[x*3][abs(y)*3][abs(z)*3]);
844 }
845 }
846 }
847 }
848 else if (mode=="gridding_7") {
849 for (int z=-3; z<4; z++) {
850 for (int y=-3; y<4; y++) {
851 for (int x=0; x<4; x++) {
852 fft->set_complex_at(x,y,z,FourierInserter3DMode11::kernel[x*3][abs(y)*3][abs(z)*3]);
853 }
854 }
855 }
856 }
857 else throw InvalidParameterException("Gridding kernel correction of unknown mode, only gridding_5 or gridding_7 allowed");
858
859 EMData *real=fft->do_ift(); // this is the kernel ift
860 real->process_inplace("xform.phaseorigin.tocenter");
861 real->mult(2.0f/(float)real->get_attr("maximum"));
862 real->process_inplace("math.reciprocal"); // reciprocal to make a correction volume
863 real->process_inplace("threshold.clampminmax",Dict("minval",-4.0f,"maxval",4.0f)); // block overcorrection of noise near the edges
864// real->write_image("invkernel.hdf");
865
866 image->mult(*real); // apply the correction
867 delete real;
868 delete fft;
869}
Dict is a dictionary to store <string, EMObject> pair.
Definition: emobject.h:385
EMData stores an image's data and defines core image processing routines.
Definition: emdata.h:82
static const float kernel[12][12][12]
static const float kernel[9][9][9]
EMData * real() const
return real part of a complex image as a real image format, if this image is a real image,...
#define InvalidParameterException(desc)
Definition: exception.h:361
#define LOGWARN
Definition: log.h:53
#define y(i, j)
Definition: projector.cpp:1516
#define x(i)
Definition: projector.cpp:1517

References InvalidParameterException, EMAN::FourierInserter3DMode11::kernel, EMAN::FourierInserter3DMode7::kernel, LOGWARN, EMAN::Processor::params, real(), x, and y.

Member Data Documentation

◆ NAME

const string GridKernelFixProcessor::NAME = "math.gridkernelfix"
static

Definition at line 4209 of file processor.h.

Referenced by get_name().


The documentation for this class was generated from the following files: