EMAN::NormalizeProcessor Class Reference

Base class for normalization processors. More...

#include <processor.h>

Inheritance diagram for EMAN::NormalizeProcessor:

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

Collaboration graph
[legend]

List of all members.

Public Member Functions

void process_inplace (EMData *image)
 To process an image in-place.

Static Public Member Functions

static string get_group_desc ()
 Get the description of this group of processors.

Protected Member Functions

virtual float calc_sigma (EMData *image) const
virtual float calc_mean (EMData *image) const =0


Detailed Description

Base class for normalization processors.

Each specific normalization processor needs to define how to calculate mean and how to calculate sigma.

Definition at line 3967 of file processor.h.


Member Function Documentation

void NormalizeProcessor::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:
image The image to be processed.

Implements EMAN::Processor.

Definition at line 3322 of file processor.cpp.

References calc_mean(), calc_sigma(), EMAN::EMData::get_data(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), EMAN::Util::goodf(), EMAN::EMData::is_complex(), LOGWARN, and EMAN::EMData::update().

03323 {
03324         if (!image) {
03325                 LOGWARN("cannot do normalization on NULL image");
03326                 return;
03327         }
03328 
03329         if (image->is_complex()) {
03330                 LOGWARN("cannot do normalization on complex image");
03331                 return;
03332         }
03333 
03334         float sigma = calc_sigma(image);
03335         if (sigma == 0 || !Util::goodf(&sigma)) {
03336                 LOGWARN("cannot do normalization on image with sigma = 0");
03337                 return;
03338         }
03339 
03340         float mean = calc_mean(image);
03341 
03342         size_t size = (size_t)image->get_xsize() * (size_t)image->get_ysize() *
03343                           (size_t)image->get_zsize();
03344         float *data = image->get_data();
03345 
03346         for (size_t i = 0; i < size; i++) {
03347                 data[i] = (data[i] - mean) / sigma;
03348         }
03349 
03350         image->update();
03351 }

static string EMAN::NormalizeProcessor::get_group_desc (  )  [inline, static]

Get the description of this group of processors.

This function is defined in a parent class. It gives a introduction to a group of processors.

Returns:
The description of this group of processors.

Reimplemented from EMAN::Processor.

Definition at line 3972 of file processor.h.

03973                 {
03974                         return "Base class for normalization processors. Each specific normalization processor needs to define how to calculate mean and how to calculate sigma.";
03975                 }

float NormalizeProcessor::calc_sigma ( EMData image  )  const [protected, virtual]

Reimplemented in EMAN::NormalizeUnitProcessor, EMAN::NormalizeUnitSumProcessor, EMAN::NormalizeMaskProcessor, and EMAN::NormalizeMaxMinProcessor.

Definition at line 3317 of file processor.cpp.

References EMAN::EMData::get_attr().

Referenced by process_inplace().

03318 {
03319         return image->get_attr("sigma");
03320 }

virtual float EMAN::NormalizeProcessor::calc_mean ( EMData image  )  const [protected, pure virtual]


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

Generated on Sat Mar 20 02:20:40 2010 for EMAN2 by  doxygen 1.5.6