EMAN2
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
EMAN::HistogramBin Class Reference

Bins pixel values, similar to calculating a histogram. More...

#include <processor.h>

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

Public Member Functions

 HistogramBin ()
 
void process_inplace (EMData *image)
 To process an image in-place. More...
 
string get_name () const
 Get the processor's name. More...
 
TypeDict get_param_types () const
 Get processor parameter information in a dictionary. More...
 
string get_desc () const
 Get the descrition of this specific processor. More...
 
- Public Member Functions inherited from EMAN::Processor
virtual ~Processor ()
 
virtual EMDataprocess (const EMData *const image)
 To proccess an image out-of-place. More...
 
virtual void process_list_inplace (vector< EMData * > &images)
 To process multiple images using the same algorithm. More...
 
virtual Dict get_params () const
 Get the processor parameters in a key/value dictionary. More...
 
virtual void set_params (const Dict &new_params)
 Set the processor parameters using a key/value dictionary. More...
 

Static Public Member Functions

static ProcessorNEW ()
 
- Static Public Member Functions inherited from EMAN::Processor
static string get_group_desc ()
 Get the description of this group of processors. More...
 
static void EMFourierFilterInPlace (EMData *fimage, Dict params)
 Compute a Fourier-filter processed image in place. More...
 
static EMDataEMFourierFilter (EMData *fimage, Dict params)
 Compute a Fourier-processor processed image without altering the original image. More...
 

Static Public Attributes

static const string NAME = "histogram.bin"
 

Protected Attributes

int default_bins
 
- Protected Attributes inherited from EMAN::Processor
Dict params
 

Additional Inherited Members

- Public Types inherited from EMAN::Processor
enum  fourier_filter_types {
  TOP_HAT_LOW_PASS , TOP_HAT_HIGH_PASS , TOP_HAT_BAND_PASS , TOP_HOMOMORPHIC ,
  GAUSS_LOW_PASS , GAUSS_HIGH_PASS , GAUSS_BAND_PASS , GAUSS_INVERSE ,
  GAUSS_HOMOMORPHIC , BUTTERWORTH_LOW_PASS , BUTTERWORTH_HIGH_PASS , BUTTERWORTH_HOMOMORPHIC ,
  KAISER_I0 , KAISER_SINH , KAISER_I0_INVERSE , KAISER_SINH_INVERSE ,
  SHIFT , TANH_LOW_PASS , TANH_HIGH_PASS , TANH_HOMOMORPHIC ,
  TANH_BAND_PASS , RADIAL_TABLE , CTF_
}
 Fourier filter Processor type enum. More...
 

Detailed Description

Bins pixel values, similar to calculating a histogram.

The histogram is comprised of 'nbins' bins, and the value assigned to each pixel in the bin is the midpoint of the bin's upper and lower limits. Defaults to 256 bins

Parameters
nbinsThe number of bins the pixel values will be compressed into
debugOutputs debugging information (number of pixels per bin)

Definition at line 9201 of file processor.h.

Constructor & Destructor Documentation

◆ HistogramBin()

EMAN::HistogramBin::HistogramBin ( )
inline

Definition at line 9204 of file processor.h.

9204: default_bins(1024) {}

Referenced by NEW().

Member Function Documentation

◆ get_desc()

string EMAN::HistogramBin::get_desc ( ) const
inlinevirtual

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

9227 {
9228 return "Bins pixel values, similar to calculating a histogram. The histogram is comprised of 'nbins' bins, and the value assigned to each pixel in the bin is the midpoint of the bin's upper and lower limits. Defaults to 256 bins";
9229 }

◆ get_name()

string EMAN::HistogramBin::get_name ( ) const
inlinevirtual

Get the processor's name.

Each processor is identified by a unique name.

Returns
The processor's name.

Implements EMAN::Processor.

Definition at line 9208 of file processor.h.

9209 {
9210 return NAME;
9211 }
static const string NAME
Definition: processor.h:9231

References NAME.

◆ get_param_types()

TypeDict EMAN::HistogramBin::get_param_types ( ) const
inlinevirtual

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

9219 {
9220 TypeDict d;
9221 d.put("nbins", EMObject::INT, "The number of bins the pixel values will be compressed into");
9222 d.put("debug", EMObject::BOOL, "Outputs debugging information (number of pixels per bin)");
9223 return d;
9224 }
TypeDict is a dictionary to store <string, EMObject::ObjectType> pair.
Definition: emobject.h:305
void put(const string &key, EMObject::ObjectType o, const string &desc="")
Definition: emobject.h:330

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

◆ NEW()

static Processor * EMAN::HistogramBin::NEW ( )
inlinestatic

Definition at line 9213 of file processor.h.

9214 {
9215 return new HistogramBin();
9216 }

References HistogramBin().

◆ process_inplace()

void HistogramBin::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
imageThe image to be processed.

Implements EMAN::Processor.

Definition at line 12635 of file processor.cpp.

12636{
12637 float min = image->get_attr("minimum");
12638 float max = image->get_attr("maximum");
12639 float nbins = (float)params.set_default("nbins",default_bins);
12640 bool debug = params.set_default("debug",false);
12641
12642 vector<int> debugscores;
12643 if ( debug ) {
12644 debugscores = vector<int>((int)nbins, 0);
12645 }
12646
12647 if ( nbins < 0 ) throw InvalidParameterException("nbins must be greater than 0");
12648
12649 float bin_width = (max-min)/nbins;
12650 float bin_val_offset = bin_width/2.0f;
12651
12652 size_t size = image->get_size();
12653 float* dat = image->get_data();
12654
12655 for(size_t i = 0; i < size; ++i ) {
12656 float val = dat[i];
12657 val -= min;
12658 int bin = (int) (val/bin_width);
12659
12660 // This makes the last interval [] and not [)
12661 if (bin == nbins) bin -= 1;
12662
12663 dat[i] = min + bin*bin_width + bin_val_offset;
12664 if ( debug ) {
12665 debugscores[bin]++;
12666 }
12667 }
12668
12669 if ( debug ) {
12670 int i = 0;
12671 for( vector<int>::const_iterator it = debugscores.begin(); it != debugscores.end(); ++it, ++i)
12672 cout << "Bin " << i << " has " << *it << " pixels in it" << endl;
12673 }
12674
12675}
type set_default(const string &key, type val)
Default setting behavior This can be achieved using a template - d.woolford Jan 2008 (before there wa...
Definition: emobject.h:569
#define InvalidParameterException(desc)
Definition: exception.h:361

References default_bins, InvalidParameterException, EMAN::Processor::params, and EMAN::Dict::set_default().

Member Data Documentation

◆ default_bins

int EMAN::HistogramBin::default_bins
protected

Definition at line 9234 of file processor.h.

Referenced by process_inplace().

◆ NAME

const string HistogramBin::NAME = "histogram.bin"
static

Definition at line 9231 of file processor.h.

Referenced by get_name().


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