19 #ifndef rtkSpectralForwardModelImageFilter_h 20 #define rtkSpectralForwardModelImageFilter_h 42 template <
typename DecomposedProjectionsType,
43 typename MeasuredProjectionsType,
72 #ifdef itkOverrideGetNameOfClassMacro 81 SetInputIncidentSpectrum(
const IncidentSpectrumImageType * IncidentSpectrum);
83 SetInputSecondIncidentSpectrum(
const IncidentSpectrumImageType * SecondIncidentSpectrum);
84 typename IncidentSpectrumImageType::ConstPointer
85 GetInputIncidentSpectrum();
86 typename IncidentSpectrumImageType::ConstPointer
87 GetInputSecondIncidentSpectrum();
92 SetInputDecomposedProjections(
const DecomposedProjectionsType * DecomposedProjections);
93 typename DecomposedProjectionsType::ConstPointer
94 GetInputDecomposedProjections();
99 SetInputMeasuredProjections(
const MeasuredProjectionsType * SpectralProjections);
100 typename MeasuredProjectionsType::ConstPointer
101 GetInputMeasuredProjections();
106 SetDetectorResponse(
const DetectorResponseImageType * DetectorResponse);
107 typename DetectorResponseImageType::ConstPointer
108 GetDetectorResponse();
113 SetMaterialAttenuations(
const MaterialAttenuationsImageType * MaterialAttenuations);
114 typename MaterialAttenuationsImageType::ConstPointer
115 GetMaterialAttenuations();
118 typename DecomposedProjectionsType::ConstPointer
119 GetOutputCramerRaoLowerBound();
121 typename MeasuredProjectionsType::ConstPointer
122 GetOutputVariances();
128 itkGetMacro(NumberOfSpectralBins,
unsigned int);
131 itkGetMacro(NumberOfMaterials,
unsigned int);
134 itkGetMacro(NumberOfEnergies,
unsigned int);
137 itkGetMacro(IsSpectralCT,
bool);
140 itkGetMacro(ComputeVariances,
bool);
143 itkGetMacro(ComputeCramerRaoLowerBound,
bool);
151 using Superclass::MakeOutput;
156 GenerateOutputInformation()
override;
159 GenerateInputRequestedRegion()
override;
162 BeforeThreadedGenerateData()
override;
164 DynamicThreadedGenerateData(
const typename OutputImageType::RegionType & outputRegionForThread)
override;
190 template <
typename OutputElementType,
typename DetectorResponseImageType,
typename ThresholdsType>
191 vnl_matrix<OutputElementType>
193 const ThresholdsType & thresholds,
194 const unsigned int numberOfEnergies);
199 #ifndef ITK_MANUAL_INSTANTIATION 200 # 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