19 #ifndef rtkSpectralForwardModelImageFilter_h 20 #define rtkSpectralForwardModelImageFilter_h 45 template <
typename DecomposedProjectionsType,
46 typename MeasuredProjectionsType,
73 #ifndef ITK_FUTURE_LEGACY_REMOVE 88 SetInputIncidentSpectrum(
const IncidentSpectrumImageType * IncidentSpectrum);
90 SetInputSecondIncidentSpectrum(
const IncidentSpectrumImageType * SecondIncidentSpectrum);
91 #ifndef ITK_FUTURE_LEGACY_REMOVE 93 SetInputIncidentSpectrum(
const VectorSpectrumImageType * IncidentSpectrum);
95 SetInputSecondIncidentSpectrum(
const VectorSpectrumImageType * SecondIncidentSpectrum);
97 typename IncidentSpectrumImageType::ConstPointer
98 GetInputIncidentSpectrum();
99 typename IncidentSpectrumImageType::ConstPointer
100 GetInputSecondIncidentSpectrum();
105 SetInputDecomposedProjections(
107 template <
unsigned int VNumberOfMaterials>
109 SetInputFixedVectorLengthDecomposedProjections(
111 DecomposedProjectionsType::ImageDimension> * DecomposedProjections);
112 typename DecomposedProjectionsType::ConstPointer
113 GetInputDecomposedProjections();
118 SetInputMeasuredProjections(
120 template <
unsigned int VNumberOfSpectralBins>
122 SetInputFixedVectorLengthMeasuredProjections(
124 MeasuredProjectionsType::ImageDimension> * MeasuredProjections);
125 typename MeasuredProjectionsType::ConstPointer
126 GetInputMeasuredProjections();
131 SetDetectorResponse(
const DetectorResponseImageType * DetectorResponse);
132 typename DetectorResponseImageType::ConstPointer
133 GetDetectorResponse();
138 SetMaterialAttenuations(
const MaterialAttenuationsImageType * MaterialAttenuations);
139 typename MaterialAttenuationsImageType::ConstPointer
140 GetMaterialAttenuations();
143 typename DecomposedProjectionsType::ConstPointer
144 GetOutputCramerRaoLowerBound();
146 typename MeasuredProjectionsType::ConstPointer
147 GetOutputVariances();
153 itkGetMacro(NumberOfSpectralBins,
unsigned int);
156 itkGetMacro(NumberOfMaterials,
unsigned int);
159 itkGetMacro(NumberOfEnergies,
unsigned int);
162 itkGetMacro(IsSpectralCT,
bool);
165 itkGetMacro(ComputeVariances,
bool);
168 itkGetMacro(ComputeCramerRaoLowerBound,
bool);
176 using Superclass::MakeOutput;
181 GenerateOutputInformation()
override;
184 GenerateInputRequestedRegion()
override;
187 BeforeThreadedGenerateData()
override;
189 DynamicThreadedGenerateData(
const typename OutputImageType::RegionType & outputRegionForThread)
override;
212 #ifndef ITK_FUTURE_LEGACY_REMOVE 214 typename FlattenVectorFilterType::Pointer m_FlattenFilter;
215 typename FlattenVectorFilterType::Pointer m_FlattenSecondFilter;
216 typename PermuteFilterType::Pointer m_PermuteFilter;
217 typename PermuteFilterType::Pointer m_PermuteSecondFilter;
223 template <
typename OutputElementType,
typename DetectorResponseImageType,
typename ThresholdsType>
224 vnl_matrix<OutputElementType>
226 const ThresholdsType & thresholds,
227 const unsigned int numberOfEnergies);
232 #ifndef ITK_MANUAL_INSTANTIATION 233 # 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
typename DecomposedProjectionsType::PixelType::ValueType DecomposedProjectionsDataType
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
typename MeasuredProjectionsType::PixelType::ValueType MeasuredProjectionsDataType
MeasuredProjectionsType OutputImageType
unsigned int m_NumberOfSpectralBins
unsigned int m_NumberOfMaterials
ThresholdsType m_Thresholds
vnl_matrix< double > MaterialAttenuationsType