#include <processor.h>
Inheritance diagram for EMAN::NormalizeProcessor:


Public Member Functions | |
| void | process_inplace (EMData *image) |
| To process an image in-place. | |
Static Public Member Functions | |
| 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 |
Each specific normalization processor needs to define how to calculate mean and how to calculate sigma.
Definition at line 4030 of file processor.h.
|
|
|
Reimplemented in EMAN::NormalizeUnitProcessor, EMAN::NormalizeUnitSumProcessor, EMAN::NormalizeMaskProcessor, and EMAN::NormalizeMaxMinProcessor. Definition at line 3455 of file processor.cpp. References EMAN::EMData::get_attr(). Referenced by process_inplace(). 03456 {
03457 return image->get_attr("sigma");
03458 }
|
|
|
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.
Reimplemented from EMAN::Processor. Definition at line 4035 of file processor.h. 04036 {
04037 return "Base class for normalization processors. Each specific normalization processor needs to define how to calculate mean and how to calculate sigma.";
04038 }
|
|
|
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.
Implements EMAN::Processor. Definition at line 3460 of file processor.cpp. References calc_mean(), calc_sigma(), data, 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(). 03461 {
03462 if (!image) {
03463 LOGWARN("cannot do normalization on NULL image");
03464 return;
03465 }
03466
03467 if (image->is_complex()) {
03468 LOGWARN("cannot do normalization on complex image");
03469 return;
03470 }
03471
03472 float sigma = calc_sigma(image);
03473 if (sigma == 0 || !Util::goodf(&sigma)) {
03474 LOGWARN("cannot do normalization on image with sigma = 0");
03475 return;
03476 }
03477
03478 float mean = calc_mean(image);
03479
03480 size_t size = (size_t)image->get_xsize() * image->get_ysize() * image->get_zsize();
03481 float *data = image->get_data();
03482
03483 for (size_t i = 0; i < size; ++i) {
03484 data[i] = (data[i] - mean) / sigma;
03485 }
03486
03487 image->update();
03488 }
|
1.3.9.1