19 #ifndef rtkSpectralForwardModelImageFilter_h 20 #define rtkSpectralForwardModelImageFilter_h 42 template <
typename DecomposedProjectionsType,
43 typename MeasuredProjectionsType,
76 SetInputIncidentSpectrum(
const IncidentSpectrumImageType * IncidentSpectrum);
78 SetInputSecondIncidentSpectrum(
const IncidentSpectrumImageType * SecondIncidentSpectrum);
79 typename IncidentSpectrumImageType::ConstPointer
80 GetInputIncidentSpectrum();
81 typename IncidentSpectrumImageType::ConstPointer
82 GetInputSecondIncidentSpectrum();
87 SetInputDecomposedProjections(
const DecomposedProjectionsType * DecomposedProjections);
88 typename DecomposedProjectionsType::ConstPointer
89 GetInputDecomposedProjections();
94 SetInputMeasuredProjections(
const MeasuredProjectionsType * SpectralProjections);
95 typename MeasuredProjectionsType::ConstPointer
96 GetInputMeasuredProjections();
101 SetDetectorResponse(
const DetectorResponseImageType * DetectorResponse);
102 typename DetectorResponseImageType::ConstPointer
103 GetDetectorResponse();
108 SetMaterialAttenuations(
const MaterialAttenuationsImageType * MaterialAttenuations);
109 typename MaterialAttenuationsImageType::ConstPointer
110 GetMaterialAttenuations();
113 typename DecomposedProjectionsType::ConstPointer
114 GetOutputCramerRaoLowerBound();
116 typename MeasuredProjectionsType::ConstPointer
117 GetOutputVariances();
123 itkGetMacro(NumberOfSpectralBins,
unsigned int);
126 itkGetMacro(NumberOfMaterials,
unsigned int);
129 itkGetMacro(NumberOfEnergies,
unsigned int);
132 itkGetMacro(IsSpectralCT,
bool);
135 itkGetMacro(ComputeVariances,
bool);
138 itkGetMacro(ComputeCramerRaoLowerBound,
bool);
146 using Superclass::MakeOutput;
151 GenerateOutputInformation()
override;
154 GenerateInputRequestedRegion()
override;
157 BeforeThreadedGenerateData()
override;
159 DynamicThreadedGenerateData(
const typename OutputImageType::RegionType & outputRegionForThread)
override;
185 template <
typename OutputElementType,
typename DetectorResponseImageType,
typename ThresholdsType>
186 vnl_matrix<OutputElementType>
188 const ThresholdsType & thresholds,
189 const unsigned int numberOfEnergies);
194 #ifndef ITK_MANUAL_INSTANTIATION 195 # include "rtkSpectralForwardModelImageFilter.hxx"
unsigned int m_NumberOfIterations
Superclass::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
Forward model for the decomposition of spectral projection images into material projections.
MaterialAttenuationsType m_MaterialAttenuations
TInputImage InputImageType
#define itkSetMacro(name, type)
bool m_ComputeCramerRaoLowerBound
TOutputImage OutputImageType
bool m_OptimizeWithRestarts
vnl_matrix< double > DetectorResponseType
DetectorResponseType m_DetectorResponse
vnl_matrix< OutputElementType > SpectralBinDetectorResponse(const DetectorResponseImageType *drm, const ThresholdsType &thresholds, const unsigned int numberOfEnergies)
void VerifyInputInformation() const override
unsigned int m_NumberOfEnergies
unsigned int m_NumberOfSpectralBins
unsigned int m_NumberOfMaterials
ThresholdsType m_Thresholds
vnl_matrix< double > MaterialAttenuationsType