15#ifndef __stir_SeparableLowPassArrayFilter2__H__
16#define __stir_SeparableLowPassArrayFilter2__H__
43template <
int num_dimensions,
typename elemT>
47 SeparableArrayFunctionObject2();
56template <
int num_dim,
typename elemT>
57SeparableArrayFunctionObject2<num_dim, elemT>::SeparableArrayFunctionObject2()
61template <
int num_dim,
typename elemT>
62SeparableArrayFunctionObject2<num_dim, elemT>::SeparableArrayFunctionObject2(
63 const VectorWithOffset<shared_ptr<ArrayFunctionObject<1, elemT>>>& array_filters)
64 : all_1d_array_filters(array_filters)
66 assert(all_1d_array_filters.get_length() == num_dim);
69template <
int num_dimensions,
typename elemT>
81template <
int num_dim,
typename elemT>
86 iter != all_1d_array_filters.
end();
90 if (!(*iter)->is_trivial())
98template <
int num_dimensions,
typename elemT>
103 SeparableLowPassArrayFilter2();
111template <
int num_dimensions,
typename elemT>
112SeparableLowPassArrayFilter2<num_dimensions, elemT>::SeparableLowPassArrayFilter2()
114 for (
int i = 1; i <= num_dimensions; i++)
116 all_1d_array_filters[i - 1] =
new ArrayFilter1DUsingConvolution<float>();
120template <
int num_dimensions,
typename elemT>
121SeparableLowPassArrayFilter2<num_dimensions, elemT>::SeparableLowPassArrayFilter2(
123 : filter_coefficients(filter_coefficients_v)
125 assert(num_dimensions == 3);
127 std::cerr <<
"Printing filter coefficients" << endl;
128 for (
int i = filter_coefficients_v.get_min_index(); i <= filter_coefficients_v.get_max_index(); i++)
129 std::cerr << i <<
" " << filter_coefficients_v[i] <<
" " << endl;
131 all_1d_array_filters[2] =
new ArrayFilter1DUsingConvolution<float>(filter_coefficients_v);
133 all_1d_array_filters[0] =
new ArrayFilter1DUsingConvolution<float>();
134 all_1d_array_filters[1] =
new ArrayFilter1DUsingConvolution<float>(filter_coefficients_v);
Declaration of class stir::ArrayFilter1DUsingConvolution.
Declaration of class stir::ArrayFunctionObject_2ArgumentImplementation.
This include file provides some additional functionality for stir::Array objects.
defines the stir::Array class for multi-dimensional (numeric) arrays
This file declares class stir::BasicCoordinate and some functions acting on stir::BasicCoordinate obj...
Declaration of class stir::Succeeded.
defines the stir::VectorWithOffset class
A convenience class for children of ArrayFunctionObject. It implements the in-place operator() in ter...
Definition ArrayFunctionObject_2ArgumentImplementation.h:42
A class for operations on n-dimensional Arrays.
Definition ArrayFunctionObject.h:38
This class defines multi-dimensional (numeric) arrays.
Definition Array.h:78
This class implements an n -dimensional ArrayFunctionObject whose operation is separable.
Definition SeparableLowPassArrayFilter2.h:45
bool is_trivial() const
Should return true when the operations won't modify the object at all.
Definition SeparableLowPassArrayFilter2.h:83
A templated class for vectors, but with indices starting not from 0.
Definition VectorWithOffset.h:65
iterator begin()
use to initialise an iterator to the first element of the vector
Definition VectorWithOffset.inl:190
iterator end()
iterator 'past' the last element of the vector
Definition VectorWithOffset.inl:206
void apply_array_functions_on_each_index(Array< num_dim, elemT > &out_array, const Array< num_dim, elemT > &in_array, FunctionObjectPtrIter start, FunctionObjectPtrIter stop)
Apply a sequence of 1d array-function objects on every dimension of the input array,...
Definition ArrayFunction.inl:220
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...