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);
126 GenerateInputRequestedRegion()
override;
129 BeforeThreadedGenerateData()
override;
132 AfterThreadedGenerateData()
override;
141 virtual FFTInputImagePointer
142 PadInputImageRegion(
const RegionType & inputRegion);
144 GetPaddedImageRegion(
const RegionType & inputRegion);
148 PrintSelf(std::ostream & os,
itk::Indent indent)
const override;
159 UpdateFFTProjectionsConvolutionKernel(
const SizeType size) = 0;
167 UpdateTruncationMirrorWeights();
172 int m_KernelDimension{ 1 };
183 double m_TruncationCorrection{ 0. };
185 GetTruncationCorrectionExtent();
196 int m_GreatestPrimeFactor{ 2 };
197 int m_BackupNumberOfThreads{ 1 };
202 #ifndef ITK_MANUAL_INSTANTIATION 203 # 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)
TInputImage InputImageType
typename InputImageType::RegionType RegionType
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