19 #ifndef rtkSpectralForwardModelImageFilter_h 20 #define rtkSpectralForwardModelImageFilter_h 44 template <
typename DecomposedProjectionsType,
45 typename MeasuredProjectionsType,
72 #ifndef ITK_FUTURE_LEGACY_REMOVE 87 SetInputIncidentSpectrum(
const IncidentSpectrumImageType * IncidentSpectrum);
88 #ifndef ITK_FUTURE_LEGACY_REMOVE 90 SetInputIncidentSpectrum(
const VectorSpectrumImageType * IncidentSpectrum);
92 typename IncidentSpectrumImageType::ConstPointer
93 GetInputIncidentSpectrum();
98 SetInputDecomposedProjections(
100 template <
unsigned int VNumberOfMaterials>
102 SetInputFixedVectorLengthDecomposedProjections(
104 DecomposedProjectionsType::ImageDimension> * DecomposedProjections);
105 typename DecomposedProjectionsType::ConstPointer
106 GetInputDecomposedProjections();
111 SetInputMeasuredProjections(
113 template <
unsigned int VNumberOfSpectralBins>
115 SetInputFixedVectorLengthMeasuredProjections(
117 MeasuredProjectionsType::ImageDimension> * MeasuredProjections);
118 typename MeasuredProjectionsType::ConstPointer
119 GetInputMeasuredProjections();
124 SetDetectorResponse(
const DetectorResponseImageType * DetectorResponse);
125 typename DetectorResponseImageType::ConstPointer
126 GetDetectorResponse();
131 SetMaterialAttenuations(
const MaterialAttenuationsImageType * MaterialAttenuations);
132 typename MaterialAttenuationsImageType::ConstPointer
133 GetMaterialAttenuations();
136 typename DecomposedProjectionsType::ConstPointer
137 GetOutputCramerRaoLowerBound();
139 typename MeasuredProjectionsType::ConstPointer
140 GetOutputVariances();
146 itkGetMacro(NumberOfSpectralBins,
unsigned int);
149 itkGetMacro(NumberOfMaterials,
unsigned int);
152 itkGetMacro(NumberOfEnergies,
unsigned int);
155 itkGetMacro(ComputeVariances,
bool);
158 itkGetMacro(ComputeCramerRaoLowerBound,
bool);
166 using Superclass::MakeOutput;
171 GenerateOutputInformation()
override;
174 GenerateInputRequestedRegion()
override;
177 BeforeThreadedGenerateData()
override;
179 DynamicThreadedGenerateData(
const typename OutputImageType::RegionType & outputRegionForThread)
override;
208 #ifndef ITK_FUTURE_LEGACY_REMOVE 210 typename FlattenVectorFilterType::Pointer m_FlattenFilter;
211 typename PermuteFilterType::Pointer m_PermuteFilter;
216 template <
typename OutputElementType,
typename DetectorResponseImageType,
typename ThresholdsType>
217 vnl_matrix<OutputElementType>
219 const ThresholdsType & thresholds,
220 const unsigned int numberOfEnergies);
225 #ifndef ITK_MANUAL_INSTANTIATION 226 # 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
itk::ImageSource< MeasuredProjectionsType >::Pointer m_CastMeasuredProjectionsPointer
#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.
itk::ImageSource< DecomposedProjectionsType >::Pointer m_CastDecomposedProjectionsPointer
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