STIR
6.2.0
|
Separable Gaussian filtering in n
- dimensions.
More...
#include "stir/SeparableGaussianArrayFilter.h"
Public Member Functions | |
SeparableGaussianArrayFilter () | |
Default constructor. | |
SeparableGaussianArrayFilter (const BasicCoordinate< num_dimensions, float > &fwhm, const BasicCoordinate< num_dimensions, int > &max_kernel_sizes, bool normalise=true) | |
Constructor. More... | |
SeparableGaussianArrayFilter (const float fwhm, const float max_kernel_sizes, bool normalise=true) | |
SeparableGaussianArrayFilter () | |
Default constructor. | |
SeparableGaussianArrayFilter (const float standard_deviation, const int number_of_coefficients) | |
Public Member Functions inherited from stir::SeparableArrayFunctionObject< num_dimensions, elemT > | |
SeparableArrayFunctionObject () | |
Default constructor, results in a trivial ArrayFunctionObject. | |
SeparableArrayFunctionObject (const VectorWithOffset< shared_ptr< ArrayFunctionObject< 1, elemT >>> &) | |
Constructor taking 1D ArrayFunctionObjects. More... | |
bool | is_trivial () const override |
Should return true when the operations won't modify the object at all. More... | |
Public Member Functions inherited from stir::ArrayFunctionObject_1ArgumentImplementation< num_dimensions, elemT > | |
void | operator() (Array< num_dimensions, elemT > &array) const override |
in-place modification More... | |
void | operator() (Array< num_dimensions, elemT > &out_array, const Array< num_dimensions, elemT > &in_array) const override |
result stored in another array, implemented inline | |
Public Member Functions inherited from stir::ArrayFunctionObject< num_dimensions, elemT > | |
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... | |
Additional Inherited Members | |
Protected Member Functions inherited from stir::SeparableArrayFunctionObject< num_dimensions, elemT > | |
void | do_it (Array< num_dimensions, elemT > &array) const override |
Protected Member Functions inherited from stir::ArrayFunctionObject_1ArgumentImplementation< num_dimensions, elemT > | |
virtual void | do_it (Array< num_dimensions, elemT > &array) const =0 |
Protected Attributes inherited from stir::SeparableArrayFunctionObject< num_dimensions, elemT > | |
VectorWithOffset< shared_ptr< ArrayFunctionObject< 1, elemT > > > | all_1d_array_filters |
Separable Gaussian filtering in n
- dimensions.
The implementation follows a similar strategy used for the Metz filter, but this filter uses discretisation in image space.
For power 0, the Metz filter reduces to the Gaussian filter in frequency-space. However, if the FWHM is not a lot larger than the sampling distance the Metz filter will give small negative values. Therefore, if a Gaussian filter is needed, the SeparableGaussianArrayFilter is preferable to a Metz filter with power 0.
stir::SeparableGaussianArrayFilter< num_dimensions, elemT >::SeparableGaussianArrayFilter | ( | const BasicCoordinate< num_dimensions, float > & | fwhm, |
const BasicCoordinate< num_dimensions, int > & | max_kernel_sizes, | ||
bool | normalise = true |
||
) |
Constructor.
fwhms | the FWHM of the Gaussian 1D filters (in mm) |
max_kernel_sizes | maximum number of elements in the kernels. -1 means that the size will be determined such that the smallest element is approximately 1E-6 times the largest (in each dimension) |
References _PI, stir::error(), stir::VectorWithOffset< T >::get_max_index(), stir::VectorWithOffset< T >::get_min_index(), stir::VectorWithOffset< T >::grow(), stir::info(), stir::VectorWithOffset< T >::recycle(), stir::square(), and stir::sum().