19 #ifndef rtkSpectralForwardModelImageFilter_h 20 #define rtkSpectralForwardModelImageFilter_h 44 template <
typename DecomposedProjectionsType,
45 typename MeasuredProjectionsType,
70 #ifndef ITK_FUTURE_LEGACY_REMOVE 85 SetInputIncidentSpectrum(
const IncidentSpectrumImageType * IncidentSpectrum);
87 SetInputSecondIncidentSpectrum(
const IncidentSpectrumImageType * SecondIncidentSpectrum);
88 #ifndef ITK_FUTURE_LEGACY_REMOVE 90 SetInputIncidentSpectrum(
const VectorSpectrumImageType * IncidentSpectrum);
92 SetInputSecondIncidentSpectrum(
const VectorSpectrumImageType * SecondIncidentSpectrum);
94 typename IncidentSpectrumImageType::ConstPointer
95 GetInputIncidentSpectrum();
96 typename IncidentSpectrumImageType::ConstPointer
97 GetInputSecondIncidentSpectrum();
102 SetInputDecomposedProjections(
const DecomposedProjectionsType * DecomposedProjections);
103 typename DecomposedProjectionsType::ConstPointer
104 GetInputDecomposedProjections();
109 SetInputMeasuredProjections(
const MeasuredProjectionsType * SpectralProjections);
110 typename MeasuredProjectionsType::ConstPointer
111 GetInputMeasuredProjections();
116 SetDetectorResponse(
const DetectorResponseImageType * DetectorResponse);
117 typename DetectorResponseImageType::ConstPointer
118 GetDetectorResponse();
123 SetMaterialAttenuations(
const MaterialAttenuationsImageType * MaterialAttenuations);
124 typename MaterialAttenuationsImageType::ConstPointer
125 GetMaterialAttenuations();
128 typename DecomposedProjectionsType::ConstPointer
129 GetOutputCramerRaoLowerBound();
131 typename MeasuredProjectionsType::ConstPointer
132 GetOutputVariances();
138 itkGetMacro(NumberOfSpectralBins,
unsigned int);
141 itkGetMacro(NumberOfMaterials,
unsigned int);
144 itkGetMacro(NumberOfEnergies,
unsigned int);
147 itkGetMacro(IsSpectralCT,
bool);
150 itkGetMacro(ComputeVariances,
bool);
153 itkGetMacro(ComputeCramerRaoLowerBound,
bool);
161 using Superclass::MakeOutput;
166 GenerateOutputInformation()
override;
169 GenerateInputRequestedRegion()
override;
172 BeforeThreadedGenerateData()
override;
174 DynamicThreadedGenerateData(
const typename OutputImageType::RegionType & outputRegionForThread)
override;
197 #ifndef ITK_FUTURE_LEGACY_REMOVE 199 typename FlattenVectorFilterType::Pointer m_FlattenFilter;
200 typename FlattenVectorFilterType::Pointer m_FlattenSecondFilter;
201 typename PermuteFilterType::Pointer m_PermuteFilter;
202 typename PermuteFilterType::Pointer m_PermuteSecondFilter;
208 template <
typename OutputElementType,
typename DetectorResponseImageType,
typename ThresholdsType>
209 vnl_matrix<OutputElementType>
211 const ThresholdsType & thresholds,
212 const unsigned int numberOfEnergies);
217 #ifndef ITK_MANUAL_INSTANTIATION 218 # include "rtkSpectralForwardModelImageFilter.hxx"
unsigned int m_NumberOfIterations
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
Forward model for the decomposition of spectral projection images into material projections.
MaterialAttenuationsType m_MaterialAttenuations
#define itkSetMacro(name, type)
MeasuredProjectionsType InputImageType
bool m_ComputeCramerRaoLowerBound
bool m_OptimizeWithRestarts
vnl_matrix< double > DetectorResponseType
DetectorResponseType m_DetectorResponse
vnl_matrix< OutputElementType > SpectralBinDetectorResponse(const DetectorResponseImageType *drm, const ThresholdsType &thresholds, const unsigned int numberOfEnergies)
Re-writes a vector image as an image.
void VerifyInputInformation() const override
unsigned int m_NumberOfEnergies
MeasuredProjectionsType OutputImageType
unsigned int m_NumberOfSpectralBins
unsigned int m_NumberOfMaterials
ThresholdsType m_Thresholds
vnl_matrix< double > MaterialAttenuationsType