19 #ifndef rtkBackProjectionImageFilter_h 20 #define rtkBackProjectionImageFilter_h 22 #include "rtkConfiguration.h" 24 #include <itkInPlaceImageFilter.h> 25 #include <itkConceptChecking.h> 29 #include <type_traits> 49 template <
class TInputImage,
class TOutputImage>
57 using Superclass = itk::ImageToImageFilter<TInputImage, TOutputImage>;
82 itkGetMacro(Transpose,
bool);
90 this->SetNumberOfRequiredInputs(2);
91 this->SetInPlace(
true);
97 VerifyPreconditions()
const override;
101 GenerateInputRequestedRegion()
override;
104 BeforeThreadedGenerateData()
override;
107 DynamicThreadedGenerateData(
const OutputImageRegionType & outputRegionForThread)
override;
111 CylindricalDetectorCenteredOnSourceBackprojection(
112 const OutputImageRegionType & region,
113 const ProjectionMatrixType & volIndexToProjPP,
114 const itk::Matrix<double, TInputImage::ImageDimension, TInputImage::ImageDimension> & projPPToProjIndex,
115 const ProjectionImagePointer projection);
120 OptimizedBackprojectionX(
const OutputImageRegionType & region,
121 const ProjectionMatrixType & matrix,
122 const ProjectionImagePointer projection);
127 OptimizedBackprojectionY(
const OutputImageRegionType & region,
128 const ProjectionMatrixType & matrix,
129 const ProjectionImagePointer projection);
141 template <
class TProjectionImage>
142 typename TProjectionImage::Pointer
143 GetProjection(
const unsigned int iProj);
148 GetIndexToIndexProjectionMatrix(
const unsigned int iProj);
151 GetVolumeIndexToProjectionPhysicalPointMatrix(
const unsigned int iProj);
153 itk::Matrix<double, TInputImage::ImageDimension, TInputImage::ImageDimension>
154 GetProjectionPhysicalPointToProjectionIndexMatrix(
const unsigned int iProj);
162 bool m_Transpose{
false };
167 #ifndef ITK_MANUAL_INSTANTIATION 168 # include "rtkBackProjectionImageFilter.hxx" itk::SmartPointer< const Self > ConstPointer
typename itk::Matrix< double, TDimension, TDimension+1 > MatrixType
itk::Image< InputPixelType, TOutputImage ::ImageDimension - 1 > ProjectionImageType
typename TOutputImage ::PixelType InputPixelType
typename ProjectionImageType::Pointer ProjectionImagePointer
typename TOutputImage ::InternalPixelType InternalInputPixelType
Projection geometry for a source and a 2-D flat panel.
void VerifyInputInformation() const override
#define itkSetMacro(name, type)
itk::SmartPointer< const Self > ConstPointer
itk::SmartPointer< Self > Pointer
typename TOutputImage::RegionType OutputImageRegionType
typename GeometryType::ConstPointer GeometryConstPointer
itk::ImageToImageFilter< TOutputImage, TOutputImage > Superclass
typename GeometryType::MatrixType ProjectionMatrixType
GeometryConstPointer m_Geometry
BackProjectionImageFilter()