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

Replace a source image as a circle or sphere depends on 2D or 3D of the source image. More...

#include <processor.h>

Inheritance diagram for EMAN::TestImageCirclesphere:
Inheritance graph
[legend]
Collaboration diagram for EMAN::TestImageCirclesphere:
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.circlesphere"
 

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 a source image as a circle or sphere depends on 2D or 3D of the source image.

Parameters
radiusradius of circle or sphere
axisspecify a major axis for asymmetric features
cdistance between focus and the center of an ellipse
fillanswer 'yes' or 'no' to specify if it's filled or hollow, default filled

Definition at line 8733 of file processor.h.

Member Function Documentation

◆ get_desc()

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

8744 {
8745 return "Replace a source image as a circle or sphere depends on 2D or 3D of the source image";
8746 }

◆ get_name()

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

8739 {
8740 return NAME;
8741 }
static const string NAME
Definition: processor.h:8763

References NAME.

◆ get_param_types()

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

8754 {
8755 TypeDict d;
8756 d.put("radius", EMObject::FLOAT, "radius of circle or sphere, unit: pixel");
8757 d.put("axis", EMObject::STRING, "specify a major axis for asymmetric features");
8758 d.put("c", EMObject::FLOAT, "distance between focus and the center of an ellipse");
8759 d.put("fill", EMObject::INT, "Flag indicating if image is filled, default filled, 1 for filled, 0 for blank.");
8760 return d;
8761 }
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, EMAN::EMObject::INT, EMAN::TypeDict::put(), and EMAN::EMObject::STRING.

◆ NEW()

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

Definition at line 8748 of file processor.h.

8749 {
8750 return new TestImageCirclesphere();
8751 }
Replace a source image as a circle or sphere depends on 2D or 3D of the source image.
Definition: processor.h:8734

◆ process_inplace()

void TestImageCirclesphere::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 9811 of file processor.cpp.

9812{
9813 preprocess(image);
9814
9815 float radius = params.set_default("radius",nx/2.0f);
9816 string axis = (const char*)params["axis"];
9817 float c = params.set_default("c",nx/2.0f);
9818 int fill = params.set_default("fill",1);
9819
9820 float *dat = image->get_data();
9821 float x2, y2, z2; //this is coordinates of this pixel from center
9822 float r = 0.0f;
9823 float asy = 0.0f;
9824 if(axis == ""){
9825 asy = radius;
9826 }
9827 else if(axis == "x" || axis == "y"){
9828 asy = c;
9829 }
9830 else if(axis=="z"){
9831 if( nz == 1 ){
9832 throw InvalidValueException(0, "This is a 2D image, no asymmetric feature for z axis");
9833 }
9834 asy = c;
9835 }
9836 else{
9837 throw InvalidValueException(0, "please specify a valid axis for asymmetric features");
9838 }
9839
9840 for (int k = 0; k < nz; ++k) {
9841 for (int j = 0; j < ny; ++j) {
9842 for (int i = 0; i < nx; ++i, ++dat) {
9843 x2 = fabs((float)i - nx/2);
9844 y2 = fabs((float)j - ny/2);
9845 z2 = fabs((float)k - nz/2);
9846 if( axis == "" ){
9847 r = (x2*x2)/(radius*radius) + (y2*y2)/(radius*radius) + (z2*z2)/(radius*radius);
9848 }
9849 else if (axis == "x"){
9850 r = (x2*x2)/(asy*asy) + (y2*y2)/(radius*radius) + (z2*z2)/(radius*radius);
9851 }
9852 else if(axis == "y"){
9853 r = (x2*x2)/(radius*radius) + (y2*y2)/(asy*asy) + (z2*z2)/(radius*radius);
9854 }
9855 else if(axis=="z"){
9856 r = (x2*x2)/(radius*radius) + (y2*y2)/(radius*radius) + (z2*z2)/(asy*asy);
9857 }
9858 if( r<=1 ) {
9859 if( !fill) {
9860 *dat = 0;
9861 }
9862 else {
9863 *dat = 1;
9864 }
9865 }
9866 else {
9867 if( !fill ) {
9868 *dat = 1;
9869 }
9870 else {
9871 *dat = 0;
9872 }
9873 }
9874 }
9875 }
9876 }
9877
9878 image->update();
9879}
type set_default(const string &key, type val)
Default setting behavior This can be achieved using a template - d.woolford Jan 2008 (before there wa...
Definition: emobject.h:569
void preprocess(EMData *image)
Definition: processor.cpp:8923
#define InvalidValueException(val, desc)
Definition: exception.h:285

References InvalidValueException, EMAN::TestImageProcessor::nx, EMAN::TestImageProcessor::ny, EMAN::TestImageProcessor::nz, EMAN::Processor::params, EMAN::TestImageProcessor::preprocess(), and EMAN::Dict::set_default().

Member Data Documentation

◆ NAME

const string TestImageCirclesphere::NAME = "testimage.circlesphere"
static

Definition at line 8763 of file processor.h.

Referenced by get_name().


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