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

Performs a morphological dilation operation on an image. More...

#include <processor.h>

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

Public Member Functions

 BinaryDilationProcessor ()
 
string get_name () const
 Get the processor's name. More...
 
virtual EMDataprocess (const EMData *const image)
 To proccess an image out-of-place. More...
 
void process_inplace (EMData *image)
 To process an image in-place. More...
 
string get_desc () const
 Get the descrition of this specific processor. More...
 
TypeDict get_param_types () const
 Get processor parameter information in a dictionary. More...
 
- Public Member Functions inherited from EMAN::Processor
virtual ~Processor ()
 
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 = "morph.dilate.binary"
 

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

Performs a morphological dilation operation on an image.

Author
James Michael Bell
Date
06/27/2015

Definition at line 1233 of file processor.h.

Constructor & Destructor Documentation

◆ BinaryDilationProcessor()

EMAN::BinaryDilationProcessor::BinaryDilationProcessor ( )
inline

Definition at line 1236 of file processor.h.

1236{}

Referenced by NEW().

Member Function Documentation

◆ get_desc()

string EMAN::BinaryDilationProcessor::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 1252 of file processor.h.

1253 {
1254 return "Performs a morphological dilation of a (binary) image.";
1255 }

◆ get_name()

string EMAN::BinaryDilationProcessor::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 1238 of file processor.h.

1239 {
1240 return NAME;
1241 }
static const string NAME
Definition: processor.h:1266

References NAME.

◆ get_param_types()

TypeDict EMAN::BinaryDilationProcessor::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 1257 of file processor.h.

1258 {
1259 TypeDict d;
1260 d.put("radius", EMObject::INT, "The number of pixels (radius) to dilate the input image.");
1261 d.put("iters",EMObject::INT, "The number of times to apply this process to the input image.");
1262 d.put("thresh", EMObject::FLOAT,"Only considers densities above the threshold");
1263 return d;
1264 }
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, and EMAN::TypeDict::put().

◆ NEW()

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

Definition at line 1247 of file processor.h.

1248 {
1249 return new BinaryDilationProcessor();
1250 }

References BinaryDilationProcessor().

◆ process()

EMData * BinaryDilationProcessor::process ( const EMData *const  image)
virtual

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.

Parameters
imageThe image will be copied, actual process happen on copy of image.
Returns
the image processing result, may or may not be the same size of the input image

Reimplemented from EMAN::Processor.

Definition at line 15155 of file processor.cpp.

15156{
15157 EMData* proc = image->copy();
15158 proc->process_inplace("morph.dilate.binary",params);
15159 return proc;
15160}
EMData stores an image's data and defines core image processing routines.
Definition: emdata.h:82

References EMAN::Processor::params.

◆ process_inplace()

void BinaryDilationProcessor::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 15162 of file processor.cpp.

15163{
15164 int iters = params.set_default("iters",1);
15165 int radius = params.set_default("radius",1);
15166 float thresh = params.set_default("threshold",0.01);
15167
15168 if (!image) {
15169 LOGWARN("NULL Image");
15170 return;
15171 }
15172
15173 int nx = image->get_xsize();
15174 int ny = image->get_ysize();
15175 int nz = image->get_zsize();
15176 int imsize = nx*ny*nz;
15177
15178 EMData *binarized = image->process("threshold.binary",Dict("value",thresh));
15179 memcpy(image->get_data(),binarized->get_data(),imsize*sizeof(float));
15180 delete binarized;
15181 image->update();
15182
15183 if ( radius == 0 || iters == 0) {
15184 return;
15185 }
15186
15187 image->mult(-1);
15188 image->add(1);
15189 for (int iter = 0; iter < iters; iter++) {
15190 image->process_inplace("math.distance.manhattan");
15191 for (int i=0; i < nx; i++){
15192 for (int j=0; j < ny; j++){
15193 for ( int k=0; k < nz; k++) {
15194 image->set_value_at_fast(i,j,k,(image->get_value_at(i,j,k)<=radius)?1:0);
15195 }
15196 }
15197 }
15198 }
15199 image->sub(1);
15200 image->mult(-1);
15201}
Dict is a dictionary to store <string, EMObject> pair.
Definition: emobject.h:385
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
#define LOGWARN
Definition: log.h:53

References LOGWARN, EMAN::Processor::params, and EMAN::Dict::set_default().

Member Data Documentation

◆ NAME

const string BinaryDilationProcessor::NAME = "morph.dilate.binary"
static

Definition at line 1266 of file processor.h.

Referenced by get_name().


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