STIR
6.2.0
|
This class contains the Colsher filter used for 3D-PET reconstruction. More...
#include "stir/analytic/FBP3DRP/ColsherFilter.h"
Public Member Functions | |
ColsherFilter () | |
Default constructor. More... | |
ColsherFilter (float theta_max, float alpha_colsher_axial=1.F, float fc_colsher_axial=0.5F, float alpha_colsher_radial=1.F, float fc_colsher_radial=0.5F, const int stretch_factor_axial=2, const int stretch_factor_planar=2) | |
constructor for the ColsherFilter. More... | |
Succeeded | set_up (int height, int width, float theta, float d_a, float d_b) |
Initialise filter values. More... | |
virtual std::string | parameter_info () const |
Public Member Functions inherited from stir::ArrayFilterUsingRealDFTWithPadding< 2, float > | |
ArrayFilterUsingRealDFTWithPadding () | |
Default constructor (trivial kernel) | |
ArrayFilterUsingRealDFTWithPadding (const Array< num_dimensions, float > &real_filter_kernel) | |
Construct the filter given the real kernel coefficients. More... | |
ArrayFilterUsingRealDFTWithPadding (const Array< num_dimensions, std::complex< float >> &kernel_in_frequency_space) | |
Construct the filter given the complex kernel coefficients. More... | |
Succeeded | set_kernel (const Array< num_dimensions, float > &real_filter_kernel) |
set the real kernel coefficients | |
Succeeded | set_kernel_in_frequency_space (const Array< num_dimensions, std::complex< float >> &kernel_in_frequency_space) |
set the complex kernel coefficients | |
bool | is_trivial () const override |
checks if the kernel corresponds to a trivial filter operation More... | |
Public Member Functions inherited from stir::ArrayFunctionObject_2ArgumentImplementation< num_dimensions, float > | |
void | operator() (Array< num_dimensions, float > &array) const override |
in-place modification of array, implemented inline | |
void | operator() (Array< num_dimensions, float > &out_array, const Array< num_dimensions, float > &in_array) const override |
result stored in another array More... | |
Public Member Functions inherited from stir::ArrayFunctionObject< num_dimensions, float > | |
virtual Succeeded | get_influencing_indices (IndexRange< num_dimensions > &influencing_indices, const IndexRange< num_dimensions > &output_indices) const |
sets the range of indices that influences the result in a set of coordinates output_indices More... | |
virtual Succeeded | get_influenced_indices (IndexRange< num_dimensions > &influenced_indices, const IndexRange< num_dimensions > &input_indices) const |
sets the range of indices that gets influenced by a set of coordinate input_indices More... | |
Public Member Functions inherited from stir::TimedObject | |
void | reset_timers () |
reset all timers kept by this object | |
void | stop_timers () const |
stop all timers kept by this object More... | |
void | start_timers (bool do_reset=false) const |
start all timers kept by this object More... | |
double | get_CPU_timer_value () const |
get current value of the CPU timer (since first use or last reset) | |
double | get_wall_clock_timer_value () const |
get current value of the wall-clock timer (since first use or last reset) | |
Additional Inherited Members | |
Protected Member Functions inherited from stir::ArrayFilterUsingRealDFTWithPadding< 2, float > | |
void | do_it (Array< num_dimensions, float > &out_array, const Array< num_dimensions, float > &in_array) const override |
Performs the convolution. More... | |
Protected Attributes inherited from stir::ArrayFilterUsingRealDFTWithPadding< 2, float > | |
Array< num_dimensions, std::complex< float > > | kernel_in_frequency_space |
This class contains the Colsher filter used for 3D-PET reconstruction.
The Colsher filter is combined with a 2-dimensional apodising Hamming filter.
|
inline |
|
explicit |
constructor for the ColsherFilter.
theta_max | the polar angle corresponding to the maximum oblique angle included in the reconstruction. |
The alpha
and fc
parameters are designed to minimize the amplification of noise.
The stretch_factor
parameters can be used to define the Colsher filter via a finer grid to avoid the problems with sampling a continuous filter in frequency space. For the ramp-filter, this can be done using analytic integration, but here we have to do it numerically.
Succeeded stir::ColsherFilter::set_up | ( | int | height, |
int | width, | ||
float | theta, | ||
float | d_a, | ||
float | d_b | ||
) |
Initialise filter values.
creates a 2D Colsher filter of size height*width,
theta | the polar angle |
d_a | the sampling distance in the 's' coordinate |
d_b | the sampling distance in the 't' coordinate |
References _PI, stir::Array< num_dimensions, elemT >::begin_all(), ColsherFilter(), stir::Array< num_dimensions, elemT >::end_all(), stir::Array< num_dimensions, elemT >::fill(), stir::Array< num_dimensions, elemT >::find_max(), stir::fourier_for_real_data(), stir::Viewgram< elemT >::get_max_axial_pos_num(), stir::Viewgram< elemT >::get_max_tangential_pos_num(), stir::Viewgram< elemT >::get_min_axial_pos_num(), stir::Viewgram< elemT >::get_min_tangential_pos_num(), stir::Viewgram< elemT >::get_num_tangential_poss(), stir::inverse_fourier_for_real_data_corrupting_input(), stir::ArrayFunctionObject_2ArgumentImplementation< num_dimensions, float >::operator()(), stir::Array< num_dimensions, elemT >::resize(), stir::ArrayFilterUsingRealDFTWithPadding< 2, float >::set_kernel_in_frequency_space(), stir::TimedObject::start_timers(), stir::TimedObject::stop_timers(), stir::warning(), and stir::write_data().