#include <processor.h>
Inheritance diagram for EMAN::ClampingProcessor:
Public Member Functions | |
ClampingProcessor () | |
string | get_name () const |
Get the processor's name. | |
void | process_inplace (EMData *image) |
To process an image in-place. | |
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 = "threshold.clampminmax" |
Protected Attributes | |
float | default_max |
float | default_min |
minval | the minimum value to clamp to | |
maxval | the maximum value to clamp to Replace outlying pixels values with the mean pixel value instead |
Definition at line 1709 of file processor.h.
EMAN::ClampingProcessor::ClampingProcessor | ( | ) | [inline] |
Definition at line 1712 of file processor.h.
Referenced by NEW().
01712 : default_max(1.0), default_min(0.0) {}
string EMAN::ClampingProcessor::get_desc | ( | ) | const [inline, virtual] |
Get the descrition of this specific processor.
This function must be overwritten by a subclass.
Implements EMAN::Processor.
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 1735 of file processor.h.
01736 { 01737 return "This function clamps the min and max vals in the image at minval and maxval, respectively. In a sense this a bi-truncation of the data."; 01738 }
string EMAN::ClampingProcessor::get_name | ( | ) | const [inline, virtual] |
Get the processor's name.
Each processor is identified by a unique name.
Implements EMAN::Processor.
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 1714 of file processor.h.
References NAME.
01715 { 01716 return NAME; 01717 }
TypeDict EMAN::ClampingProcessor::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.
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 1725 of file processor.h.
References EMAN::EMObject::BOOL, EMAN::EMObject::FLOAT, and EMAN::TypeDict::put().
01726 { 01727 TypeDict d; 01728 d.put("minval", EMObject::FLOAT, "The pixel values that bounds the smallest pixel value in the output image" ); 01729 d.put("maxval", EMObject::FLOAT, "The pixel values that bounds the largest pixel value in the output image" ); 01730 d.put("tomean", EMObject::BOOL, "Replace outlying pixels values with the mean pixel value instead" ); 01731 d.put("tozero", EMObject::BOOL, "Replace outlying pixels values with zero" ); 01732 return d; 01733 }
static Processor* EMAN::ClampingProcessor::NEW | ( | ) | [inline, static] |
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 1718 of file processor.h.
References ClampingProcessor().
01719 { 01720 return new ClampingProcessor(); 01721 }
void ClampingProcessor::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.
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 8979 of file processor.cpp.
References default_max, default_min, EMAN::EMData::get_attr(), EMAN::EMData::get_data(), EMAN::EMData::get_size(), ImageFormatException, InvalidParameterException, EMAN::EMData::is_complex(), max, min, EMAN::Processor::params, EMAN::Dict::set_default(), and EMAN::EMData::update().
08980 { 08981 08982 if ( image->is_complex() ) throw ImageFormatException("Error: clamping processor does not work on complex images"); 08983 08984 float min = params.set_default("minval",default_min); 08985 float max = params.set_default("maxval",default_max); 08986 bool tomean = params.set_default("tomean",false); 08987 bool tozero = params.set_default("tozero",false); 08988 float new_min_vals = min; 08989 float new_max_vals = max; 08990 if (tomean) new_min_vals = new_max_vals = image->get_attr("mean"); 08991 if (tozero) new_min_vals = new_max_vals = 0.0; 08992 08993 // Okay, throwing such an error is probably overkill - but atleast the user will get a loud message 08994 // saying what went wrong. 08995 if ( max < min ) throw InvalidParameterException("Error: minval was greater than maxval, aborting"); 08996 08997 size_t size = image->get_size(); 08998 for(size_t i = 0; i < size; ++i ) 08999 { 09000 float * data = &image->get_data()[i]; 09001 if ( *data < min ) *data = new_min_vals; 09002 else if ( *data > max ) *data = new_max_vals; 09003 } 09004 image->update(); 09005 }
float EMAN::ClampingProcessor::default_max [protected] |
float EMAN::ClampingProcessor::default_min [protected] |
const string ClampingProcessor::NAME = "threshold.clampminmax" [static] |
Reimplemented in EMAN::NSigmaClampingProcessor.
Definition at line 1740 of file processor.h.
Referenced by get_name().