STIR 6.4.0
SeparableConvolutionImageFilter.h
Go to the documentation of this file.
1//
2//
12/*
13 Copyright (C) 2002- 2009, Hammersmith Imanet Ltd
14 This file is part of STIR.
15
16 SPDX-License-Identifier: Apache-2.0
17
18 See STIR/LICENSE.txt for details
19*/
20
21#ifndef __stir_SeparableConvolutionImageFilter_H__
22#define __stir_SeparableConvolutionImageFilter_H__
23
26#include "stir/DataProcessor.h"
29#include <vector>
30
31START_NAMESPACE_STIR
32
33// TODO!! remove define
34// currently fixed at 3 because I didn't really have a good idea for the parsing
35// keywords in n dimensions.
36//
37#define num_dimensions 3
38
79template <typename elemT>
80class SeparableConvolutionImageFilter : public RegisteredParsingObject<SeparableConvolutionImageFilter<elemT>,
81 DataProcessor<DiscretisedDensity<3, elemT>>,
82 DataProcessor<DiscretisedDensity<3, elemT>>>
83{
84private:
88 base_type;
89
90public:
92 static const char* const registered_name;
93
96
98
105
107
109 void set_filter_coefficients(const VectorWithOffset<VectorWithOffset<elemT>>& v);
110 // These methods are made available as VectorWithOffset<VectorWithOffset<elemT>> is not accessable via swig
112 void set_filter_coefficients(const int axis, const VectorWithOffset<elemT>& v);
114
115private:
116 // silly business because KeyParser supports only LIST_OF_DOUBLES
117 // TODO remove
118 std::vector<std::vector<double>> filter_coefficients_for_parsing;
119
120 VectorWithOffset<VectorWithOffset<elemT>> filter_coefficients;
121
123
124 void set_defaults() override;
125 void initialise_keymap() override;
126 bool post_processing() override;
127
128 Succeeded virtual_set_up(const DiscretisedDensity<num_dimensions, elemT>& image) override;
129 void virtual_apply(DiscretisedDensity<num_dimensions, elemT>& out_density,
130 const DiscretisedDensity<num_dimensions, elemT>& in_density) const override;
131 void virtual_apply(DiscretisedDensity<num_dimensions, elemT>& density) const override;
132};
133
134#undef num_dimensions
135
136END_NAMESPACE_STIR
137
138#endif
Declaration of class stir::DataProcessor.
defines the stir::DiscretisedDensity class
Declaration of class stir::RegisteredParsingObject.
Declaration of class stir::SeparableArrayFunctionObject.
defines the stir::VectorWithOffset class
Base class that defines an interface for classes that do data processing.
Definition DataProcessor.h:47
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files.
Definition RegisteredParsingObject.h:78
This class implements an n -dimensional ArrayFunctionObject whose operation is separable.
Definition SeparableArrayFunctionObject.h:42
static const char *const registered_name
Name for parsing registry.
Definition SeparableConvolutionImageFilter.h:92
SeparableConvolutionImageFilter()
Default constructor.
Definition SeparableConvolutionImageFilter.cxx:82
VectorWithOffset< VectorWithOffset< elemT > > get_filter_coefficients()
Overloaded get and set methods the filter coefficients for axis or set of filter coefficients.
Definition SeparableConvolutionImageFilter.cxx:116
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44
A templated class for vectors, but with indices starting not from 0.
Definition VectorWithOffset.h:65