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


Public Member Functions | |
| void | process_inplace (EMData *image) |
| To process an image in-place. | |
| virtual string | get_name () const |
| Get the processor's name. | |
| virtual string | get_desc () const |
| Get the descrition of this specific processor. | |
| virtual TypeDict | get_param_types () const |
| Get processor parameter information in a dictionary. | |
Static Public Member Functions | |
| Processor * | NEW () |
Static Public Attributes | |
| const string | NAME = "normalize.local" |
threshold is an isosurface threshold at which all desired features are visible, radius is a normalization size similar to an lp= value.
| threshold | an isosurface threshold at which all desired features are visible | |
| radius | a normalization size similar to an lp= value | |
| apix | Angstrom per pixel ratio |
Definition at line 5268 of file processor.h.
|
|
Get the descrition of this specific processor. This function must be overwritten by a subclass.
Implements EMAN::Processor. Definition at line 5283 of file processor.h. 05284 {
05285 return "This processor attempts to perform a 'local normalization' so low density and high density features will be on a more even playing field in an isosurface display. threshold is an isosurface threshold at which all desired features are visible, radius is a feature size over which to equalize.";
05286 }
|
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 5273 of file processor.h. 05274 {
05275 return NAME;
05276 }
|
|
|
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 5288 of file processor.h. References EMAN::TypeDict::put(). 05289 {
05290 TypeDict d;
05291 d.put("threshold", EMObject::FLOAT, "an isosurface threshold at which all desired features are visible");
05292 d.put("radius", EMObject::FLOAT, "a normalization size similar to an lp= value");
05293 d.put("apix", EMObject::FLOAT, "Angstrom per pixel ratio");
05294 return d;
05295 }
|
|
|
Definition at line 5278 of file processor.h. 05279 {
05280 return new LocalNormProcessor();
05281 }
|
|
|
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 5828 of file processor.cpp. References EMAN::EMData::copy(), EMAN::EMData::div(), EMAN::EMData::get_ysize(), LOGWARN, EMAN::EMData::mult(), ny, and EMAN::EMData::process_inplace(). 05829 {
05830 if (!image) {
05831 LOGWARN("NULL Image");
05832 return;
05833 }
05834 float apix = params["apix"];
05835 float threshold = params["threshold"];
05836 float radius = params["radius"];
05837
05838 if (apix > 0) {
05839 int ny = image->get_ysize();
05840 radius = ny * apix / radius;
05841 //printf("Norm filter radius=%1.1f\n", radius);
05842 }
05843
05844 EMData *blur = image->copy();
05845 EMData *maskblur = image->copy();
05846
05847 maskblur->process_inplace("threshold.binary", Dict("value", threshold));
05848 maskblur->process_inplace("filter.lowpass.gauss", Dict("cutoff_pixels", radius));
05849 // maskblur->process_inplace("filter.highpass.tanh", Dict("highpass", -10.0f));
05850 maskblur->process_inplace("threshold.belowtozero", Dict("minval", 0.001f));
05851 // maskblur->process_inplace("threshold.belowtozero", Dict("minval", 0.001f));
05852
05853
05854 blur->process_inplace("threshold.belowtozero", Dict("minval", threshold));
05855 blur->process_inplace("filter.lowpass.gauss", Dict("cutoff_pixels", radius));
05856 // blur->process_inplace("filter.highpass.tanh", Dict("cutoff_abs", -10.0f));
05857
05858 maskblur->div(*blur);
05859 image->mult(*maskblur);
05860 // maskblur->write_image("norm.mrc", 0, EMUtil::IMAGE_MRC);
05861
05862 if( maskblur )
05863 {
05864 delete maskblur;
05865 maskblur = 0;
05866 }
05867
05868 if( blur )
05869 {
05870 delete blur;
05871 blur = 0;
05872 }
05873 }
|
|
|
Definition at line 182 of file processor.cpp. |
1.3.9.1