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

Replace source image with a disc (generalized cylinder) More...

#include <processor.h>

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

Public Member Functions

virtual void process_inplace (EMData *image)
 To process an image in-place. More...
 
virtual string get_name () const
 Get the processor's name. More...
 
virtual string get_desc () const
 Get the descrition of this specific processor. More...
 
virtual TypeDict get_param_types () const
 Get processor parameter information in a dictionary. 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::TestImageProcessor
static string get_group_desc ()
 
- 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 = "testimage.disc"
 

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 Member Functions inherited from EMAN::TestImageProcessor
void preprocess (EMData *image)
 
- Protected Attributes inherited from EMAN::TestImageProcessor
int nx
 
int ny
 
int nz
 
- Protected Attributes inherited from EMAN::Processor
Dict params
 

Detailed Description

Replace source image with a disc (generalized cylinder)

Parameters
amajor axis length for face of disc
bminor axis length for face of disc
heightheight for the cylinder, by default it's the nz

Definition at line 8884 of file processor.h.

Member Function Documentation

◆ get_desc()

virtual string EMAN::TestImageDisc::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 8894 of file processor.h.

8895 {
8896 return "Replace source image with a disc";
8897 }

◆ get_name()

virtual string EMAN::TestImageDisc::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 8889 of file processor.h.

8890 {
8891 return NAME;
8892 }
static const string NAME
Definition: processor.h:8913

References NAME.

◆ get_param_types()

virtual TypeDict EMAN::TestImageDisc::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 8904 of file processor.h.

8905 {
8906 TypeDict d;
8907 d.put("major", EMObject::FLOAT, "major axis length for face of disc");
8908 d.put("minor", EMObject::FLOAT, "major axis length for face of disc");
8909 d.put("height", EMObject::FLOAT, "height of disc, by default it's nz");
8910 return d;
8911 }
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::EMObject::FLOAT, and EMAN::TypeDict::put().

◆ NEW()

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

Definition at line 8899 of file processor.h.

8900 {
8901 return new TestImageDisc();
8902 }
Replace source image with a disc (generalized cylinder)
Definition: processor.h:8885

◆ process_inplace()

void TestImageDisc::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 10130 of file processor.cpp.

10131{
10132 preprocess(image);
10133
10134 int nx = image->get_xsize();
10135 int ny = image->get_ysize();
10136 int nz = image->get_zsize();
10137
10138 if(nz == 1) {
10139 throw ImageDimensionException("This processor only works on 3D images");
10140 }
10141
10142 float a = params["major"];
10143
10144 if(a > Util::get_min(nx, ny)/2.0) {
10145 throw InvalidValueException(a, "major must be <= min(nx, ny)/2");
10146 }
10147
10148 float b = params["minor"];
10149
10150 if(b > Util::get_min(nx, ny)/2.0) {
10151 throw InvalidValueException(b, "minor must be <= min(nx, ny)/2");
10152 }
10153
10154 float h;
10155 if(params.has_key("height")) {
10156 h = params["height"];
10157 if(h > nz) {
10158 throw InvalidValueException(h, "height must be <= nz");
10159 }
10160 }
10161 else {
10162 h = static_cast<float>(nz);
10163 }
10164
10165 float *dat = image->get_data();
10166 float x2, y2; //this is coordinates of this pixel from center axle
10167 float r = 0.0f;
10168 for (int k = 0; k < nz; ++k) {
10169 for (int j = 0; j < ny; ++j) {
10170 for (int i = 0; i < nx; ++i, ++dat) {
10171 x2 = fabs((float)i - nx/2);
10172 y2 = fabs((float)j - ny/2);
10173 r = (x2*x2)/(a*a) + (y2*y2)/(b*b);
10174 if(r<=1 && k>=(nz-h)/2 && k<=(nz+h)/2) {
10175 *dat = 1;
10176 }
10177 else {
10178 *dat = 0;
10179 }
10180 }
10181 }
10182 }
10183
10184 image->update();
10185}
bool has_key(const string &key) const
Ask the Dictionary if it as a particular key.
Definition: emobject.h:511
void preprocess(EMData *image)
Definition: processor.cpp:8923
static int get_min(int f1, int f2)
Get the minimum of 2 numbers.
Definition: util.h:922
#define InvalidValueException(val, desc)
Definition: exception.h:285
#define ImageDimensionException(desc)
Definition: exception.h:166

References EMAN::Util::get_min(), EMAN::Dict::has_key(), ImageDimensionException, InvalidValueException, EMAN::TestImageProcessor::nx, EMAN::TestImageProcessor::ny, EMAN::TestImageProcessor::nz, EMAN::Processor::params, and EMAN::TestImageProcessor::preprocess().

Member Data Documentation

◆ NAME

const string TestImageDisc::NAME = "testimage.disc"
static

Definition at line 8913 of file processor.h.

Referenced by get_name().


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