STIR  6.2.0
ColsherFilter.h
Go to the documentation of this file.
1 //
2 //
3 
12 /*
13  Copyright (C) 2000 PARAPET partners
14  Copyright (C) 2000- 2004, Hammersmith Imanet Ltd
15 
16  This file is part of STIR.
17 
18  SPDX-License-Identifier: Apache-2.0 AND License-ref-PARAPET-license
19 
20  See STIR/LICENSE.txt for details
21 */
22 
23 #ifndef __ColsherFilter_H__
24 #define __ColsherFilter_H__
25 
26 #ifdef NRFFT
28 #else
30 # include "stir/TimedObject.h"
31 #endif
32 
33 START_NAMESPACE_STIR
34 #ifdef NRFFT
35 template <typename elemT>
36 class Viewgram;
37 #endif
38 
46 #ifdef NRFFT
47  public Filter2D<float>
48 #else
49  public ArrayFilterUsingRealDFTWithPadding<2, float>,
50  public TimedObject
51 #endif
52 {
53 
54 public:
55 #ifndef NRFFT
56 
59  {}
75  explicit ColsherFilter(float theta_max,
76  float alpha_colsher_axial = 1.F,
77  float fc_colsher_axial = 0.5F,
78  float alpha_colsher_radial = 1.F,
79  float fc_colsher_radial = 0.5F,
80  const int stretch_factor_axial = 2,
81  const int stretch_factor_planar = 2);
83 
88  Succeeded set_up(int height, int width, float theta, float d_a, float d_b);
89 #else
90  ColsherFilter(int height,
91  int width,
92  float gamma,
93  float theta_max,
94  float d_a,
95  float d_b,
96  float alpha_colsher_axial,
97  float fc_colsher_axial,
98  float alpha_colsher_radial,
99  float fc_colsher_radial);
100 #endif
101 
102  virtual std::string parameter_info() const;
103 
104  ~ColsherFilter() override
105  {}
106 
107 private:
108 #ifdef NRFFT
109  float gamma;
111  /* d_a, d_b are used to convert to millimeter.*/
113  float d_a;
115  float d_b;
116 #endif
117  float theta_max;
120  float alpha_axial;
122  float fc_axial;
124  float alpha_planar;
126  float fc_planar;
127  int stretch_factor_axial;
128  int stretch_factor_planar;
129 };
130 
131 #ifdef NRFFT
132 void Filter_proj_Colsher(Viewgram<float>& view_i, Viewgram<float>& view_i1, ColsherFilter& CFilter, int PadS, int PadZ);
133 #endif
134 END_NAMESPACE_STIR
135 
136 #endif // __ColsherFilter_H__
Filter classes (filter defined in Fourier space)
2-dimensional filters (filtering done by FFTs)
Definition: Filter.h:114
base class for all objects which need timers. At the moment, there&#39;s only a CPU timer.
Definition: TimedObject.h:35
Declaration of class stir::ArrayFilterUsingRealDFTWithPadding.
This class contains the Colsher filter used for 3D-PET reconstruction.
Definition: ColsherFilter.h:45
declares the stir::TimedObject class
This class implements convolution of an array of real numbers with an arbitrary (i.e. potentially non-symmetric) kernel using DFTs.
Definition: ArrayFilterUsingRealDFTWithPadding.h:47
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
ColsherFilter()
Default constructor.
Definition: ColsherFilter.h:58