19 #ifndef rtkFFTProjectionsConvolutionImageFilter_h 20 #define rtkFFTProjectionsConvolutionImageFilter_h 25 #include "rtkConfiguration.h" 44 template <
class TInputImage,
class TOutputImage,
class TFFTPrecision>
61 using IndexType =
typename InputImageType::IndexType;
62 using SizeType =
typename InputImageType::SizeType;
71 static constexpr
unsigned int ImageDimension = TOutputImage::ImageDimension;
89 itkGetConstMacro(GreatestPrimeFactor,
int);
96 itkGetConstMacro(TruncationCorrection,
double);
107 if (m_ZeroPadFactors != _arg)
109 m_ZeroPadFactors = _arg;
110 m_ZeroPadFactors[0] = std::max(m_ZeroPadFactors[0], 1);
111 m_ZeroPadFactors[1] = std::max(m_ZeroPadFactors[1], 1);
112 m_ZeroPadFactors[0] = std::min(m_ZeroPadFactors[0], 2);
113 m_ZeroPadFactors[1] = std::min(m_ZeroPadFactors[1], 2);
119 #ifdef ITK_USE_CONCEPT_CHECKING 128 GenerateInputRequestedRegion()
override;
131 BeforeThreadedGenerateData()
override;
134 AfterThreadedGenerateData()
override;
143 virtual FFTInputImagePointer
144 PadInputImageRegion(
const RegionType & inputRegion);
146 GetPaddedImageRegion(
const RegionType & inputRegion);
150 PrintSelf(std::ostream & os,
itk::Indent indent)
const override;
161 UpdateFFTProjectionsConvolutionKernel(
const SizeType size) = 0;
169 UpdateTruncationMirrorWeights();
174 int m_KernelDimension{ 1 };
185 double m_TruncationCorrection{ 0. };
187 GetTruncationCorrectionExtent();
198 int m_GreatestPrimeFactor{ 2 };
199 int m_BackupNumberOfThreads{ 1 };
204 #ifndef ITK_MANUAL_INSTANTIATION 205 # include "rtkFFTProjectionsConvolutionImageFilter.hxx" Base class for 1D or 2D FFT based convolution of projections.
typename InputImageType::SizeType SizeType
ITKCommon_EXPORT bool IsPrime(unsigned int n)
typename InputImageType::RegionType RegionType
TInputImage InputImageType
std::vector< TFFTPrecision > m_TruncationMirrorWeights
#define itkSetMacro(name, type)
typename FFTInputImageType::Pointer FFTInputImagePointer
TOutputImage OutputImageType
typename InputImageType::IndexType IndexType
typename itk::Image< TFFTPrecision, TInputImage::ImageDimension > FFTInputImageType
ITKCommon_EXPORT unsigned int GreatestPrimeFactor(unsigned int n)
FFTOutputImagePointer m_KernelFFT
virtual void SetZeroPadFactors(ZeroPadFactorsType _arg)
typename FFTOutputImageType::Pointer FFTOutputImagePointer
unsigned int ThreadIdType
#define itkConceptMacro(name, concept)
ZeroPadFactorsType m_ZeroPadFactors
typename itk::Image< std::complex< TFFTPrecision >, TInputImage::ImageDimension > FFTOutputImageType