#include <processor.h>
Inheritance diagram for EMAN::BinarizeFourierProcessor:
Public Member Functions | |||||||
virtual string | get_name () const | ||||||
Get the processor's name. | |||||||
virtual void | process_inplace (EMData *image) | ||||||
| |||||||
virtual TypeDict | get_param_types () const | ||||||
Get processor parameter information in a dictionary. | |||||||
virtual string | get_desc () const | ||||||
Get the descrition of this specific processor. | |||||||
Static Public Member Functions | |||||||
static Processor * | NEW () | ||||||
Static Public Attributes | |||||||
static const string | NAME = "threshold.binary.fourier" |
Useful in tomography when you want to count large complex pixels. Not the fastest approach, if you were going for efficiency it would probably be better just to iterate through the pixels and count. But if you do it this way you can just get the mean of the resulting image (and multiplying by 2). So it's basically easier, but lazy. Originally added for use by e2tomohunter.py
value | The Fourier amplitude threshold cutoff |
Definition at line 1905 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 1932 of file processor.h. 01933 { 01934 return "f(k) = 0 + 0i if ||f(k)|| < value; f(k) = 1 + 0i if ||f(k)|| >= value."; 01935 }
|
|
Get the processor's name. Each processor is identified by a unique name.
Implements EMAN::Processor. Definition at line 1908 of file processor.h. References NAME. 01909 { 01910 return NAME; 01911 }
|
|
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 1925 of file processor.h. References EMAN::EMObject::FLOAT, and EMAN::TypeDict::put(). 01926 { 01927 TypeDict d; 01928 d.put("value", EMObject::FLOAT, "The Fourier amplitude threshold cutoff" ); 01929 return d; 01930 }
|
|
Definition at line 1912 of file processor.h. 01913 { 01914 return new BinarizeFourierProcessor(); 01915 }
|
|
Implements EMAN::Processor. Definition at line 3909 of file processor.cpp. References binarize_fourier_amp_processor(), ENTERFUNC, EXITFUNC, EMAN::EMData::get_data(), EMAN::EMData::get_size(), ImageFormatException, InvalidParameterException, EMAN::EMData::is_complex(), EMAN::Processor::params, EMAN::EMData::ri2ap(), EMAN::Dict::set_default(), EMAN::EMData::set_ri(), EMAN::EMData::update(), and v. 03909 { 03910 ENTERFUNC; 03911 if (!image->is_complex()) throw ImageFormatException("Fourier binary thresholding processor only works for complex images"); 03912 03913 float threshold = params.set_default("value",-1.0f); 03914 if (threshold < 0) throw InvalidParameterException("For fourier amplitude-based thresholding, the threshold must be greater than or equal to 0."); 03915 03916 image->ri2ap(); // works for cuda 03917 03918 #ifdef EMAN2_USING_CUDA 03919 if (image->gpu_operation_preferred()) { 03920 EMDataForCuda tmp = image->get_data_struct_for_cuda(); 03921 binarize_fourier_amp_processor(&tmp,threshold); 03922 image->set_ri(true); // So it can be used for fourier multiplaction, for example 03923 image->gpu_update(); 03924 EXITFUNC; 03925 return; 03926 } 03927 #endif 03928 03929 float* d = image->get_data(); 03930 for( size_t i = 0; i < image->get_size()/2; ++i, d+=2) { 03931 float v = *d; 03932 if ( v >= threshold ) { 03933 *d = 1; 03934 *(d+1) = 0; 03935 } else { 03936 *d = 0; 03937 *(d+1) = 0; 03938 } 03939 } 03940 03941 // No need to run ap2ri, because 1+0i is the same in either notation 03942 image->set_ri(true); // So it can be used for fourier multiplaction, for example 03943 image->update(); 03944 EXITFUNC; 03945 }
|
|
Definition at line 1937 of file processor.h. Referenced by get_name(). |