#include <processor.h>


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 () | ||||||
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 1689 of file processor.h.
| virtual string EMAN::BinarizeFourierProcessor::get_name | ( | ) | const [inline, virtual] |
Get the processor's name.
Each processor is identified by a unique name.
Implements EMAN::Processor.
Definition at line 1692 of file processor.h.
| static Processor* EMAN::BinarizeFourierProcessor::NEW | ( | ) | [inline, static] |
Definition at line 1696 of file processor.h.
01697 { 01698 return new BinarizeFourierProcessor(); 01699 }
| void BinarizeFourierProcessor::process_inplace | ( | EMData * | image | ) | [virtual] |
| ImageFormatException | if the input image is not complex | |
| InvalidParameterException | if the threshold is less than 0 Note result is always in real-imaginary format Note input can be real-imaginary or amplitude-phase |
Implements EMAN::Processor.
Definition at line 3361 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.
03361 { 03362 ENTERFUNC; 03363 if (!image->is_complex()) throw ImageFormatException("Fourier binary thresholding processor only works for complex images"); 03364 03365 float threshold = params.set_default("value",-1.0f); 03366 if (threshold < 0) throw InvalidParameterException("For fourier amplitude-based thresholding, the threshold must be greater than or equal to 0."); 03367 03368 image->ri2ap(); // works for cuda 03369 03370 #ifdef EMAN2_USING_CUDA 03371 if (image->gpu_operation_preferred()) { 03372 EMDataForCuda tmp = image->get_data_struct_for_cuda(); 03373 binarize_fourier_amp_processor(&tmp,threshold); 03374 image->set_ri(true); // So it can be used for fourier multiplaction, for example 03375 image->gpu_update(); 03376 EXITFUNC; 03377 return; 03378 } 03379 #endif 03380 03381 float* d = image->get_data(); 03382 for( size_t i = 0; i < image->get_size()/2; ++i, d+=2) { 03383 float v = *d; 03384 if ( v >= threshold ) { 03385 *d = 1; 03386 *(d+1) = 0; 03387 } else { 03388 *d = 0; 03389 *(d+1) = 0; 03390 } 03391 } 03392 03393 // No need to run ap2ri, because 1+0i is the same in either notation 03394 image->set_ri(true); // So it can be used for fourier multiplaction, for example 03395 image->update(); 03396 EXITFUNC; 03397 }
| virtual TypeDict EMAN::BinarizeFourierProcessor::get_param_types | ( | ) | const [inline, virtual] |
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 1709 of file processor.h.
References EMAN::EMObject::FLOAT, and EMAN::TypeDict::put().
01710 { 01711 TypeDict d; 01712 d.put("value", EMObject::FLOAT, "The Fourier amplitude threshold cutoff" ); 01713 return d; 01714 }
| virtual string EMAN::BinarizeFourierProcessor::get_desc | ( | ) | const [inline, virtual] |
Get the descrition of this specific processor.
This function must be overwritten by a subclass.
Implements EMAN::Processor.
Definition at line 1716 of file processor.h.
01717 { 01718 return "f(k) = 0 + 0i if ||f(k)|| < value; f(k) = 1 + 0i if ||f(k)|| >= value."; 01719 }
1.5.6