19 #ifndef rtkProjectionsReader_h 20 #define rtkProjectionsReader_h 23 #include <itkImageSource.h> 24 #include <itkImageIOFactory.h> 25 #include <itkStreamingImageFilter.h> 124 template <
class TOutputImage>
159 using StreamingType = itk::StreamingImageFilter<TOutputImage, TOutputImage>;
162 static constexpr
unsigned int OutputImageDimension = TOutputImage::ImageDimension;
169 if (m_FileNames != name)
175 const FileNamesContainer &
184 itkGetConstMacro(Origin, OutputImagePointType);
188 itkGetConstMacro(Spacing, OutputImageSpacingType);
191 itkGetConstMacro(Direction, OutputImageDirectionType);
194 itkSetMacro(UpperBoundaryCropSize, OutputImageSizeType);
195 itkGetConstMacro(UpperBoundaryCropSize, OutputImageSizeType);
196 itkSetMacro(LowerBoundaryCropSize, OutputImageSizeType);
197 itkGetConstMacro(LowerBoundaryCropSize, OutputImageSizeType);
202 itkGetConstReferenceMacro(ShrinkFactors, ShrinkFactorsType);
207 itkGetConstReferenceMacro(MedianRadius, MedianRadiusType);
208 itkGetMacro(ConditionalMedianThresholdMultiplier,
double);
209 itkSetMacro(ConditionalMedianThresholdMultiplier,
double);
213 itkGetMacro(AirThreshold,
double);
217 itkGetMacro(ScatterToPrimaryRatio,
double);
220 itkGetMacro(NonNegativityConstraintThreshold,
double);
221 itkSetMacro(NonNegativityConstraintThreshold,
double);
227 itkGetMacro(I0,
double);
234 itkGetMacro(IDark,
double);
239 itkGetMacro(WaterPrecorrectionCoefficients, WaterPrecorrectionVectorType);
243 if (this->m_WaterPrecorrectionCoefficients != _arg)
245 this->m_WaterPrecorrectionCoefficients = _arg;
254 itkGetConstMacro(ComputeLineIntegral,
bool);
255 itkBooleanMacro(ComputeLineIntegral);
260 itkGetMacro(VectorComponent,
unsigned int);
270 itkSetObjectMacro(ImageIO, itk::ImageIOBase);
271 itkGetConstObjectMacro(ImageIO, itk::ImageIOBase);
277 GenerateOutputInformation()
override;
283 PrintSelf(std::ostream & os, itk::Indent indent)
const override;
287 GenerateData()
override;
296 template <
class TInputImage>
298 PropagateParametersToMiniPipeline();
300 ConnectElektaRawFilter(itk::ImageBase<OutputImageDimension> ** nextInputBase);
302 PropagateI0(itk::ImageBase<OutputImageDimension> ** nextInputBase);
333 itk::ImageIOBase::Pointer m_ImageIO{
nullptr };
345 double m_AirThreshold{ 32000 };
346 double m_ScatterToPrimaryRatio{ 0. };
347 double m_NonNegativityConstraintThreshold{ itk::NumericTraits<double>::NonpositiveMin() };
348 double m_I0{ itk::NumericTraits<double>::NonpositiveMin() };
349 double m_IDark{ 0. };
350 double m_ConditionalMedianThresholdMultiplier{ 1. };
352 bool m_ComputeLineIntegral{
true };
353 unsigned int m_VectorComponent{ 0 };
359 #ifndef ITK_MANUAL_INSTANTIATION 360 # include "rtkProjectionsReader.hxx" 363 #endif // rtkProjectionsReader_h typename OutputImageType::SpacingType OutputImageSpacingType
typename OutputImageType::RegionType OutputImageRegionType
OutputImageDirectionType m_Direction
const FileNamesContainer & GetFileNames() const
Performs the classical water precorrection for beam hardening (Kachelriess, Med. Phys. 2006)
OutputImagePointType m_Origin
typename OutputImageType::Pointer OutputImagePointer
itk::ProcessObject::Pointer m_VectorComponentSelectionFilter
itk::ProcessObject::Pointer m_ScatterFilter
OutputImageSpacingType m_Spacing
OutputImageSizeType m_UpperBoundaryCropSize
TOutputImage OutputImageType
itk::SmartPointer< Self > Pointer
WaterPrecorrectionVectorType m_WaterPrecorrectionCoefficients
itk::SmartPointer< Self > Pointer
typename OutputImageType::SizeType OutputImageSizeType
typename OutputImageType::PointType OutputImagePointType
itk::ImageSource< TOutputImage >::Pointer m_RawCastFilter
itk::ImageSource< TOutputImage > Superclass
#define itkSetMacro(name, type)
FileNamesContainer m_FileNames
itk::ProcessObject::Pointer m_I0EstimationFilter
std::vector< double > WaterPrecorrectionVectorType
itk::ProcessObject::Pointer m_BinningFilter
StreamingType::Pointer m_StreamingFilter
MedianRadiusType m_MedianRadius
typename rtk::ConditionalMedianImageFilter< TOutputImage >::MedianRadiusType MedianRadiusType
itk::StreamingImageFilter< TOutputImage, TOutputImage > StreamingType
itk::ProcessObject::Pointer m_ChangeInformationFilter
itk::ImageSource< TOutputImage >::Pointer m_RawToAttenuationFilter
typename OutputImageType::PixelType OutputImagePixelType
OutputImageSizeType m_LowerBoundaryCropSize
typename OutputImageType::DirectionType OutputImageDirectionType
itk::ProcessObject::Pointer m_CropFilter
std::vector< std::string > FileNamesContainer
void SetFileNames(const FileNamesContainer &name)
itk::ProcessObject::Pointer m_ElektaRawFilter
WaterPrecorrectionType::Pointer m_WaterPrecorrectionFilter
itk::ProcessObject::Pointer m_RawDataReader
itk::ProcessObject::Pointer m_ConditionalMedianFilter
virtual void SetWaterPrecorrectionCoefficients(const WaterPrecorrectionVectorType _arg)
itk::FixedArray< unsigned int, TOutputImage::ImageDimension > ShrinkFactorsType
ShrinkFactorsType m_ShrinkFactors