STIR  6.2.0
ArrayFilter3DUsingConvolution.h
Go to the documentation of this file.
1 //
2 //
13 /*
14  Copyright (C) 2000- 2002, IRSL
15  See STIR/LICENSE.txt for details
16 */
17 
18 #ifndef __stir_ArrayFilter3DUsingConvolution_H__
19 #define __stir_ArrayFilter3DUsingConvolution_H__
20 
22 //#include "stir/VectorWithOffset.h"
23 
24 START_NAMESPACE_STIR
25 
26 template <typename elemT>
27 class VectorWithOffset;
28 
29 template <typename elemT>
30 class ArrayFilter3DUsingConvolution : public ArrayFunctionObject_2ArgumentImplementation<3, elemT>
31 {
32 public:
34 
37  ArrayFilter3DUsingConvolution();
38 
39  ArrayFilter3DUsingConvolution(const Array<3, float>& filter_kernel);
40 
41  bool is_trivial() const override;
42 
43  virtual Succeeded get_influencing_indices(IndexRange<1>& influencing_indices, const IndexRange<1>& output_indices) const;
44 
45  virtual Succeeded get_influenced_indices(IndexRange<1>& influenced_indices, const IndexRange<1>& input_indices) const;
46 
47 private:
48  Array<3, float> filter_coefficients;
49  void do_it(Array<3, elemT>& out_array, const Array<3, elemT>& in_array) const override;
50  void do_it_2d(Array<2, elemT>& out_array, const Array<2, elemT>& in_array) const;
51 };
52 
53 END_NAMESPACE_STIR
54 
55 #endif // ArrayFilter3DUsingConvolution
Declaration of class stir::ArrayFunctionObject_2ArgumentImplementation.