#include <processor.h>
Inheritance diagram for EMAN::HistogramBin:
Public Member Functions | |
HistogramBin () | |
void | process_inplace (EMData *image) |
To process an image in-place. | |
string | get_name () const |
Get the processor's name. | |
TypeDict | get_param_types () const |
Get processor parameter information in a dictionary. | |
string | get_desc () const |
Get the descrition of this specific processor. | |
Static Public Member Functions | |
Processor * | NEW () |
Static Public Attributes | |
const string | NAME = "histogram.bin" |
Protected Attributes | |
int | default_bins |
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
nbins | The number of bins the pixel values will be compressed into | |
debug | Outputs debugging information (number of pixels per bin) |
Definition at line 6819 of file processor.h.
|
Definition at line 6822 of file processor.h. References default_bins. Referenced by NEW(). 06822 : default_bins(1024) {}
|
|
Get the descrition of this specific processor. This function must be overwritten by a subclass.
Implements EMAN::Processor. Definition at line 6844 of file processor.h. 06845 { 06846 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"; 06847 }
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 6826 of file processor.h. 06827 {
06828 return NAME;
06829 }
|
|
Get processor parameter information in a dictionary. Each parameter has one record in the dictionary. Each record contains its name, data-type, and description.
Reimplemented from EMAN::Processor. Definition at line 6836 of file processor.h. References EMAN::TypeDict::put(). 06837 { 06838 TypeDict d; 06839 d.put("nbins", EMObject::INT, "The number of bins the pixel values will be compressed into"); 06840 d.put("debug", EMObject::BOOL, "Outputs debugging information (number of pixels per bin)"); 06841 return d; 06842 }
|
|
Definition at line 6831 of file processor.h. References HistogramBin(). 06832 { 06833 return new HistogramBin(); 06834 }
|
|
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 9168 of file processor.cpp. References default_bins, EMAN::EMData::get_attr(), EMAN::EMData::get_data(), EMAN::EMData::get_size(), InvalidParameterException, max, min, and EMAN::Dict::set_default(). 09169 { 09170 float min = image->get_attr("minimum"); 09171 float max = image->get_attr("maximum"); 09172 float nbins = (float)params.set_default("nbins",default_bins); 09173 bool debug = params.set_default("debug",false); 09174 09175 vector<int> debugscores; 09176 if ( debug ) { 09177 debugscores = vector<int>((int)nbins, 0); 09178 } 09179 09180 if ( nbins < 0 ) throw InvalidParameterException("nbins must be greater than 0"); 09181 09182 float bin_width = (max-min)/nbins; 09183 float bin_val_offset = bin_width/2.0f; 09184 09185 size_t size = image->get_size(); 09186 float* dat = image->get_data(); 09187 09188 for(size_t i = 0; i < size; ++i ) { 09189 float val = dat[i]; 09190 val -= min; 09191 int bin = (int) (val/bin_width); 09192 09193 // This makes the last interval [] and not [) 09194 if (bin == nbins) bin -= 1; 09195 09196 dat[i] = min + bin*bin_width + bin_val_offset; 09197 if ( debug ) { 09198 debugscores[bin]++; 09199 } 09200 } 09201 09202 if ( debug ) { 09203 int i = 0; 09204 for( vector<int>::const_iterator it = debugscores.begin(); it != debugscores.end(); ++it, ++i) 09205 cout << "Bin " << i << " has " << *it << " pixels in it" << endl; 09206 } 09207 09208 }
|
|
Definition at line 6852 of file processor.h. Referenced by HistogramBin(), and process_inplace(). |
|
Definition at line 221 of file processor.cpp. |