#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 5230 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 5245 of file processor.h. 05246 {
05247 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.";
05248 }
|
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 5235 of file processor.h. 05236 {
05237 return NAME;
05238 }
|
|
|
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 5250 of file processor.h. References EMAN::TypeDict::put(). 05251 {
05252 TypeDict d;
05253 d.put("threshold", EMObject::FLOAT, "an isosurface threshold at which all desired features are visible");
05254 d.put("radius", EMObject::FLOAT, "a normalization size similar to an lp= value");
05255 d.put("apix", EMObject::FLOAT, "Angstrom per pixel ratio");
05256 return d;
05257 }
|
|
|
Definition at line 5240 of file processor.h. 05241 {
05242 return new LocalNormProcessor();
05243 }
|
|
|
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 5800 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(). 05801 {
05802 if (!image) {
05803 LOGWARN("NULL Image");
05804 return;
05805 }
05806 float apix = params["apix"];
05807 float threshold = params["threshold"];
05808 float radius = params["radius"];
05809
05810 if (apix > 0) {
05811 int ny = image->get_ysize();
05812 radius = ny * apix / radius;
05813 //printf("Norm filter radius=%1.1f\n", radius);
05814 }
05815
05816 EMData *blur = image->copy();
05817 EMData *maskblur = image->copy();
05818
05819 maskblur->process_inplace("threshold.binary", Dict("value", threshold));
05820 maskblur->process_inplace("filter.lowpass.gauss", Dict("cutoff_pixels", radius));
05821 // maskblur->process_inplace("filter.highpass.tanh", Dict("highpass", -10.0f));
05822 maskblur->process_inplace("threshold.belowtozero", Dict("minval", 0.001f));
05823 // maskblur->process_inplace("threshold.belowtozero", Dict("minval", 0.001f));
05824
05825
05826 blur->process_inplace("threshold.belowtozero", Dict("minval", threshold));
05827 blur->process_inplace("filter.lowpass.gauss", Dict("cutoff_pixels", radius));
05828 // blur->process_inplace("filter.highpass.tanh", Dict("cutoff_abs", -10.0f));
05829
05830 maskblur->div(*blur);
05831 image->mult(*maskblur);
05832 // maskblur->write_image("norm.mrc", 0, EMUtil::IMAGE_MRC);
05833
05834 if( maskblur )
05835 {
05836 delete maskblur;
05837 maskblur = 0;
05838 }
05839
05840 if( blur )
05841 {
05842 delete blur;
05843 blur = 0;
05844 }
05845 }
|
|
|
Definition at line 176 of file processor.cpp. |
1.3.9.1