EMAN::MinMaxAverager Class Reference

ImageAverager averages a list of images. More...

#include <averager.h>

Inheritance diagram for EMAN::MinMaxAverager:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 MinMaxAverager ()
void add_image (EMData *image)
 To add an image to the Averager.
EMDatafinish ()
 Finish up the averaging and return the result.
string get_name () const
 Get the Averager's name.
string get_desc () const
TypeDict get_param_types () const
 Get Averager parameter information in a dictionary.
virtual void mult (const float &)
 Multiply the result image by some floating point constant This is useful when weighting the input images prior to calling add_image - a situation where it is likely you want to divide by the sum of the weights.

Static Public Member Functions

static AveragerNEW ()

Static Public Attributes

static const string NAME = "minmax"

Private Attributes

int max
int nimg

Detailed Description

ImageAverager averages a list of images.

It optionally makes a sigma image.

Parameters:
max If set, will find the max value, otherwise finds min

Definition at line 261 of file averager.h.


Constructor & Destructor Documentation

MinMaxAverager::MinMaxAverager (  ) 

Definition at line 412 of file averager.cpp.

References max.

Referenced by NEW().

00413         : nimg(0)
00414 {
00415         /*move max out of initializer list, since this max(0) is considered as a macro
00416          * in Visual Studio, which we defined somewhere else*/
00417         max = 0;
00418 }


Member Function Documentation

void MinMaxAverager::add_image ( EMData image  )  [virtual]

To add an image to the Averager.

This image will be averaged in this function.

Parameters:
image The image to be averaged.

Implements EMAN::Averager.

Definition at line 420 of file averager.cpp.

References EMAN::EMData::copy(), get_name(), EMAN::EMData::get_value_at(), EMAN::EMUtil::is_same_size(), LOGERR, max, nimg, EMAN::Averager::params, EMAN::Averager::result, EMAN::EMData::set_value_at(), x, and y.

00421 {
00422         if (!image) {
00423                 return;
00424         }
00425 
00426         if (nimg >= 1 && !EMUtil::is_same_size(image, result)) {
00427                 LOGERR("%sAverager can only process same-size Image",
00428                            get_name().c_str());
00429                 return;
00430         }
00431 
00432         nimg++;
00433 
00434         int nx = image->get_xsize();
00435         int ny = image->get_ysize();
00436         int nz = image->get_zsize();
00437 
00438         if (nimg == 1) {
00439                 result = image->copy();
00440                 max = params["max"];
00441                 return;
00442         }
00443 
00444         for (int z=0; z<nz; z++) {
00445                 for (int y=0; y<ny; y++) {
00446                         for (int x=0; x<nx; x++) {
00447                                 if (result->get_value_at(x,y,z)>image->get_value_at(x,y,z))
00448                                         { if (!max) result->set_value_at(x,y,z,image->get_value_at(x,y,z)); }
00449                                 else { if (max) result->set_value_at(x,y,z,image->get_value_at(x,y,z)); }
00450                         }
00451                 }
00452         }
00453 
00454 }

EMData * MinMaxAverager::finish (  )  [virtual]

Finish up the averaging and return the result.

Returns:
The averaged image.

Implements EMAN::Averager.

Definition at line 456 of file averager.cpp.

References nimg, EMAN::Averager::result, EMAN::EMData::set_attr(), and EMAN::EMData::update().

00457 {
00458         result->update();
00459         result->set_attr("ptcl_repr",nimg);
00460         
00461         if (result && nimg > 1) return result;
00462 
00463         return NULL;
00464 }

string EMAN::MinMaxAverager::get_desc (  )  const [inline, virtual]

Implements EMAN::Averager.

Definition at line 274 of file averager.h.

00275                 {
00276                         return "Finds the minimum or maximum value in each pixel";
00277                 }

string EMAN::MinMaxAverager::get_name (  )  const [inline, virtual]

Get the Averager's name.

Each Averager is identified by a unique name.

Returns:
The Averager's name.

Implements EMAN::Averager.

Definition at line 269 of file averager.h.

References NAME.

Referenced by add_image().

00270                 {
00271                         return NAME;
00272                 }

TypeDict EMAN::MinMaxAverager::get_param_types (  )  const [inline, virtual]

Get Averager 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::Averager.

Definition at line 284 of file averager.h.

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

00285                 {
00286                         TypeDict d;
00287                         d.put("max", EMObject::INT, "If set, will find the max value, otherwise finds min");
00288                         return d;
00289                 }

virtual void EMAN::MinMaxAverager::mult ( const float &   )  [inline, virtual]

Multiply the result image by some floating point constant This is useful when weighting the input images prior to calling add_image - a situation where it is likely you want to divide by the sum of the weights.

Hence call mult after all of the weighted images have been added.

Parameters:
s the scaling factor.
Exceptions:
NullPointerException if the EMData pointer (result) is NULL

Reimplemented from EMAN::Averager.

Definition at line 291 of file averager.h.

00291 { }

static Averager* EMAN::MinMaxAverager::NEW (  )  [inline, static]

Definition at line 279 of file averager.h.

References MinMaxAverager().

00280                 {
00281                         return new MinMaxAverager();
00282                 }


Member Data Documentation

int EMAN::MinMaxAverager::max [private]

Definition at line 296 of file averager.h.

Referenced by add_image(), and MinMaxAverager().

const string MinMaxAverager::NAME = "minmax" [static]

Definition at line 293 of file averager.h.

Referenced by get_name().

int EMAN::MinMaxAverager::nimg [private]

Definition at line 297 of file averager.h.

Referenced by add_image(), and finish().


The documentation for this class was generated from the following files:
Generated on Thu Nov 17 12:45:17 2011 for EMAN2 by  doxygen 1.4.7