Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

EMAN::NormalizeMaskProcessor Class Reference

Uses a 1/0 mask defining a region to use for the zero-normalization.if no_sigma is 1, standard deviation not modified. More...

#include <processor.h>

Inheritance diagram for EMAN::NormalizeMaskProcessor:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

string get_name () const
 Get the processor's name.
string get_desc () const
 Get the descrition of this specific processor.
TypeDict get_param_types () const
 Get processor parameter information in a dictionary.

Static Public Member Functions

ProcessorNEW ()

Static Public Attributes

const string NAME = "normalize.mask"

Protected Member Functions

float calc_sigma (EMData *image) const
float calc_mean (EMData *image) const

Detailed Description

Uses a 1/0 mask defining a region to use for the zero-normalization.if no_sigma is 1, standard deviation not modified.

Parameters:
mask the 1/0 mask defining a region to use for the zero-normalization
no_sigma if this flag is zero, only average under the mask will be substracted. set this flag to 1, standard deviation not modified

Definition at line 4134 of file processor.h.


Member Function Documentation

float NormalizeMaskProcessor::calc_mean EMData image  )  const [protected, virtual]
 

Implements EMAN::NormalizeProcessor.

Definition at line 3546 of file processor.cpp.

References data, EMAN::EMData::get_data(), EMAN::EMData::get_edge_mean(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), ImageDimensionException, EMAN::EMUtil::is_same_size(), LOGERR, and LOGWARN.

03547 {
03548         if (!image) {
03549                 LOGWARN("NULL Image");
03550                 return 0;
03551         }
03552         EMData *mask = params["mask"];
03553 
03554         if (!EMUtil::is_same_size(mask, image)) {
03555                 LOGERR("normalize.maskProcessor: mask and image must be the same size");
03556                 throw ImageDimensionException("mask and image must be the same size");
03557         }
03558 
03559         float *data = image->get_data();
03560         float *mask_data = mask->get_data();
03561         size_t size = (size_t)image->get_xsize() * image->get_ysize() * image->get_zsize();
03562         double sum = 0;
03563         size_t n_norm = 0;
03564 
03565         for (size_t i = 0; i < size; ++i) {
03566                 if (mask_data[i] > 0.5f) {
03567                         sum += data[i];
03568                         n_norm++;
03569                 }
03570         }
03571 
03572         float mean = 0;
03573         if (n_norm == 0) {
03574                 mean = image->get_edge_mean();
03575         }
03576         else {
03577                 mean = (float) sum / n_norm;
03578         }
03579 
03580         return mean;
03581 }

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

Reimplemented from EMAN::NormalizeProcessor.

Definition at line 3510 of file processor.cpp.

References data, EMAN::EMData::get_data(), EMAN::EMData::get_xsize(), EMAN::EMData::get_ysize(), EMAN::EMData::get_zsize(), ImageDimensionException, EMAN::EMUtil::is_same_size(), LOGERR, LOGWARN, and sqrt().

03511 {
03512         if (!image) {
03513                 LOGWARN("NULL Image");
03514                 return 0;
03515         }
03516         EMData *mask = params["mask"];
03517         int no_sigma = params["no_sigma"];
03518 
03519         if(no_sigma == 0) {
03520                 return 1;
03521         }
03522         else {
03523                 if (!EMUtil::is_same_size(mask, image)) {
03524                         LOGERR("normalize.maskProcessor: mask and image must be the same size");
03525                         throw ImageDimensionException("mask and image must be the same size");
03526                 }
03527 
03528                 float *data = image->get_data();
03529                 float *mask_data = mask->get_data();
03530                 size_t size = (size_t)image->get_xsize() * image->get_ysize() * image->get_zsize();
03531                 double sum = 0;
03532                 double sq2 = 0;
03533                 size_t n_norm = 0;
03534 
03535                 for (size_t i = 0; i < size; ++i) {
03536                         if (mask_data[i] > 0.5f) {
03537                                 sum += data[i];
03538                                 sq2 += data[i]*double (data[i]);
03539                                 n_norm++;
03540                         }
03541                 }
03542                 return sqrt(static_cast<float>((sq2 - sum * sum /n_norm)/(n_norm -1))) ;
03543         }
03544 }

string EMAN::NormalizeMaskProcessor::get_desc  )  const [inline, virtual]
 

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 4142 of file processor.h.

04143                 {
04144                         return "Uses a 1/0 mask defining a region to use for the zero-normalization.if no_sigma is 1, standard deviation not modified.";
04145                 }

string EMAN::NormalizeMaskProcessor::get_name  )  const [inline, virtual]
 

Get the processor's name.

Each processor is identified by a unique name.

Returns:
The processor's name.

Implements EMAN::Processor.

Definition at line 4137 of file processor.h.

04138                 {
04139                         return NAME;
04140                 }

TypeDict EMAN::NormalizeMaskProcessor::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.

Returns:
A dictionary containing the parameter info.

Reimplemented from EMAN::Processor.

Definition at line 4152 of file processor.h.

References EMAN::TypeDict::put().

04153                 {
04154                         TypeDict d;
04155                         d.put("mask", EMObject::EMDATA, "the 1/0 mask defining a region to use for the zero-normalization");
04156                         d.put("no_sigma", EMObject::INT, "if this flag is zero, only average under the mask will be substracted. set this flag to 1, standard deviation not modified");
04157                         return d;
04158                 }

Processor* EMAN::NormalizeMaskProcessor::NEW  )  [inline, static]
 

Definition at line 4147 of file processor.h.

04148                 {
04149                         return new NormalizeMaskProcessor();
04150                 }


Member Data Documentation

const string NormalizeMaskProcessor::NAME = "normalize.mask" [static]
 

Definition at line 151 of file processor.cpp.


The documentation for this class was generated from the following files:
Generated on Tue Jul 12 13:51:14 2011 for EMAN2 by  doxygen 1.3.9.1