CTL  0.6.1
Computed Tomography Library
poissonnoiseextension.h
1 #ifndef CTL_POISSONNOISEEXTENSION_H
2 #define CTL_POISSONNOISEEXTENSION_H
3 
4 #include "projectorextension.h"
5 #include "acquisition/acquisitionsetup.h"
6 
7 #include <random>
8 
9 namespace CTL {
10 
63 {
65 
66  // abstract interface
67  public: void configure(const AcquisitionSetup& setup) override;
68 
69 public:
70  PoissonNoiseExtension() = default;
72  explicit PoissonNoiseExtension(uint fixedSeed, bool useParalellization = true);
73 
74  // ProjectorExtension interface
75  bool isLinear() const override;
76 
77  // SerializationInterface interface
78  QVariant toVariant() const override;
79  QVariant parameter() const override;
80  void setParameter(const QVariant& parameter) override;
81 
82  void setFixedSeed(uint seed);
83  void setRandomSeedMode();
84  void setParallelizationEnabled(bool enabled);
85 
86 protected:
87  ProjectionData extendedProject(const MetaProjector& nestedProjector) override;
88 
89 private:
90  static void processViewCompact(SingleViewData& view, const std::vector<float>& i_0, uint seed);
91 
92  std::mt19937 _rng;
94  bool _useParallelization{ true };
95  bool _useFixedSeed{ false };
96  uint _seed{ 0u };
97 };
98 
99 } // namespace CTL
100 
101 #endif // CTL_POISSONNOISEEXTENSION_H
void setParallelizationEnabled(bool enabled)
Definition: poissonnoiseextension.cpp:142
void setRandomSeedMode()
Definition: poissonnoiseextension.cpp:137
The PoissonNoiseExtension class is an extension for forward projectors that adds Poisson-distributed ...
Definition: poissonnoiseextension.h:62
void setParameter(const QVariant &parameter) override
Sets the parameters of this instance based on the passed QVariant parameter. Parameters need to follo...
Definition: poissonnoiseextension.cpp:110
void setFixedSeed(uint seed)
Definition: poissonnoiseextension.cpp:125
QVariant parameter() const override
Definition: poissonnoiseextension.cpp:98
Holds a CTSystem together with the information about the system settings for all views from which pro...
Definition: acquisitionsetup.h:175
The ProjectionData class is the container class used to store all projections from all views.
Definition: projectiondata.h:19
Definition: projectorextension.h:173
ProjectionData extendedProject(const MetaProjector &nestedProjector) override
Definition: poissonnoiseextension.cpp:35
AcquisitionSetup _setup
A copy of the setup used for acquisition.
Definition: poissonnoiseextension.h:93
QVariant toVariant() const override
Stores the contents of this instance in a QVariant.
Definition: poissonnoiseextension.cpp:79
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
static void processViewCompact(SingleViewData &view, const std::vector< float > &i_0, uint seed)
Definition: poissonnoiseextension.cpp:156
bool isLinear() const override
Definition: poissonnoiseextension.cpp:76
The ProjectorExtension class provides the interface to extend projectors with additional functionalit...
Definition: projectorextension.h:136
The SingleViewData class is the container class used to store all projections from one particular vie...
Definition: singleviewdata.h:19
void configure(const AcquisitionSetup &setup) override
Configures the projector.
Definition: poissonnoiseextension.cpp:13