CTL  0.6.1
Computed Tomography Library
projectionpipeline.h
Go to the documentation of this file.
1 #ifndef CTL_PROJECTIONPIPELINE_H
2 #define CTL_PROJECTIONPIPELINE_H
3 
4 #include "projectorextension.h"
5 
6 namespace CTL {
7 
75 {
77 
78  // abstract interface
79  public: void configure(const AcquisitionSetup& setup) override;
80  public: ProjectionData project(const VolumeData& volume) override;
81 
82 public:
83  using ProjectorPtr = std::unique_ptr<AbstractProjector>;
84  using ExtensionPtr = std::unique_ptr<ProjectorExtension>;
85 
86  ProjectionData projectComposite(const CompositeVolume& volume) override;
87  ProjectionData projectSparse(const SparseVoxelVolume& volume) override;
88  bool isLinear() const override;
89 
90  // SerializationInterface interface
91  void fromVariant(const QVariant &variant) override;
92  QVariant toVariant() const override;
93 
94  ProjectorNotifier* notifier() override;
95 
98 
104  void removeExtension(uint pos);
108 
109  ProjectorExtension* extension(uint pos) const;
110  AbstractProjector* projector() const;
111  uint nbExtensions() const;
112 
113 private:
114  void stashExtensions(uint nbExt);
115  void restoreExtensions(uint nbExt);
116 
120 };
121 
122 } // namespace CTL
123 
125 
137 
139 #endif // CTL_PROJECTIONPIPELINE_H
void appendExtension(ExtensionPtr extension)
Definition: projectionpipeline.cpp:243
void setProjector(ProjectorPtr projector)
Definition: projectionpipeline.cpp:279
ExtensionPtr _finalProjector
The fully-assembled projector (incl. all extensions).
Definition: projectionpipeline.h:118
AbstractProjector * _projector
Pointer to the actual projector object.
Definition: projectionpipeline.h:119
std::unique_ptr< AbstractProjector > ProjectorPtr
Alias name for std::unique_ptr<AbstractProjector>.
Definition: projectionpipeline.h:83
The ProjectionPipeline class is a convenience class to manage a composition of a projector and additi...
Definition: projectionpipeline.h:74
ProjectionData project(const VolumeData &volume) override
Creates projection data from volume.
Definition: projectionpipeline.cpp:24
void removeExtension(uint pos)
Definition: projectionpipeline.cpp:268
Holds a CTSystem together with the information about the system settings for all views from which pro...
Definition: acquisitionsetup.h:175
void configure(const AcquisitionSetup &setup) override
Sets the acquisition setup for the simulation to setup.
Definition: projectionpipeline.cpp:13
The ProjectionData class is the container class used to store all projections from all views.
Definition: projectiondata.h:19
Definition: sparsevoxelvolume.h:14
The AbstractProjector class is the abstract base class defining the interfaces for forward projectors...
Definition: abstractprojector.h:68
ExtensionPtr takeExtension(uint pos)
Definition: projectionpipeline.cpp:233
ProjectorExtension * releaseExtension(uint pos)
Definition: projectionpipeline.cpp:205
bool isLinear() const override
Definition: projectionpipeline.cpp:54
std::vector< ProjectorExtension * > _extensions
(Ordered) list of pointers to all extensions.
Definition: projectionpipeline.h:117
The CompositeVolume class is a container to hold multiple volume datasets of any type from the CTL.
Definition: compositevolume.h:108
std::unique_ptr< ProjectorExtension > ExtensionPtr
Alias name for std::unique_ptr<ProjectorExtension>.
Definition: projectionpipeline.h:84
ProjectorExtension * extension(uint pos) const
Definition: projectionpipeline.cpp:292
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
void stashExtensions(uint nbExt)
Definition: projectionpipeline.cpp:326
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
The SpectralVolumeData class holds voxelized data (for a single material) along with information on i...
Definition: spectralvolumedata.h:40
ProjectionData projectComposite(const CompositeVolume &volume) override
Creates projection data from the composite volume volume.
Definition: projectionpipeline.cpp:35
Helper class that can emit signals during calculations of a certain projector.
Definition: abstractprojector.h:53
AbstractProjector * projector() const
Definition: projectionpipeline.cpp:304
ProjectionData projectSparse(const SparseVoxelVolume &volume) override
Creates projection data from the sparse volume volume.
Definition: projectionpipeline.cpp:46
void restoreExtensions(uint nbExt)
Definition: projectionpipeline.cpp:343
uint nbExtensions() const
Definition: projectionpipeline.cpp:315
void fromVariant(const QVariant &variant) override
Sets the contents of the object based on the QVariant variant.
Definition: projectionpipeline.cpp:59
QVariant toVariant() const override
Stores the contents of this instance in a QVariant.
Definition: projectionpipeline.cpp:76
void insertExtension(uint pos, ExtensionPtr extension)
Definition: projectionpipeline.cpp:257
ProjectorNotifier * notifier() override
Returns a pointer to the notifier of the projector.
Definition: projectionpipeline.cpp:94
The ProjectorExtension class provides the interface to extend projectors with additional functionalit...
Definition: projectorextension.h:136