19 #ifndef itkGPUSmoothingRecursiveYvvGaussianImageFilter_h
20 #define itkGPUSmoothingRecursiveYvvGaussianImageFilter_h
51 template<
typename TInputImage,
typename TOutputImage = TInputImage >
52 class ITK_EXPORT GPUSmoothingRecursiveYvvGaussianImageFilter:
53 public GPUImageToImageFilter< TInputImage, TOutputImage,
54 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > >
57 ITK_DISALLOW_COPY_AND_ASSIGN(GPUSmoothingRecursiveYvvGaussianImageFilter);
60 using Self = GPUSmoothingRecursiveYvvGaussianImageFilter;
63 using Superclass = GPUImageToImageFilter< TInputImage, TOutputImage,
64 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > >;
65 using GPUSuperclass = GPUImageToImageFilter< TInputImage, TOutputImage,
66 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > >;
71 using InputImageType = TInputImage;
72 using OutputImageType = TOutputImage;
73 using PixelType =
typename TInputImage::PixelType;
86 itkTypeMacro(GPUSmoothingRecursiveYvvGaussianImageFilter,
87 GPUImageToImageFilter);
90 static constexpr
unsigned int ImageDimension = TInputImage::ImageDimension;
93 using SigmaArrayType = FixedArray< ScalarRealType,
94 itkGetStaticConstMacro(ImageDimension) >;
101 using RealImageType = GPUImage< InternalRealType,
102 itkGetStaticConstMacro(ImageDimension) >;
105 using OutputImagePointer =
typename OutputImageType::Pointer;
114 void SetSigmaArray(
const SigmaArrayType & sigmas);
116 void SetSigma(ScalarRealType sigma);
118 SigmaArrayType GetSigmaArray()
const;
120 ScalarRealType GetSigma()
const;
123 void SetNormalizeAcrossScale(
bool normalizeInScaleSpace);
125 itkGetConstMacro(NormalizeAcrossScale,
bool);
127 virtual void SetUp(ScalarRealType spacing);
129 #ifdef ITK_USE_CONCEPT_CHECKING
132 ( Concept::HasNumericTraits< PixelType > ) );
138 itkGetOpenCLSourceFromKernelMacro(GPUSmoothingRecursiveYvvGaussianImageFilterKernel);
139 void SetInput(
const TInputImage *input);
140 using Superclass::SetInput;
142 GPUSmoothingRecursiveYvvGaussianImageFilter();
143 virtual ~GPUSmoothingRecursiveYvvGaussianImageFilter() {}
144 void PrintSelf(std::ostream & os, Indent indent)
const;
148 void GPUGenerateData(
void);
155 virtual void GenerateInputRequestedRegion() throw( InvalidRequestedRegionError );
158 void EnlargeOutputRequestedRegion(
DataObject *output);
160 void AllocateGPUCoefficients();
162 std::ostringstream defines;
168 ScalarRealType *m_Bvalues;
171 ScalarRealType *m_CPUMatrix;
173 using GPUDataPointer = GPUDataManager::Pointer;
175 GPUDataPointer m_GPUMMatrixDataManager;
176 GPUDataPointer m_GPUBCoefficientsDataManager;
177 GPUDataPointer m_GPULocalDataManager;
183 bool m_NormalizeAcrossScale;
185 int m_FilterGPUKernelHandle;
186 typename GPUInputImage::Pointer inPtr;
187 typename GPUOutputImage::Pointer otPtr;
188 typename GPUOutputImage::
SizeType m_requestedSize;
190 SigmaArrayType m_Sigma;
194 #ifndef ITK_MANUAL_INSTANTIATION
195 #include "itkGPUSmoothingRecursiveYvvGaussianImageFilter.hxx"
200 #endif // itkGPUSmoothingRecursiveYvvGaussianImageFilter_h
Define numeric traits for std::vector.
class ITK_FORWARD_EXPORT DataObject
itkGPUKernelClassMacro(GPUImageOpsKernel)
ImageBaseType::SizeType SizeType
#define itkConceptMacro(name, concept)