21 #ifndef _ITK_GPU_SMOOTHING_RECURSIVE_YVV_GAUSSIAN_IMAGE_FILTER_H_
22 #define _ITK_GPU_SMOOTHING_RECURSIVE_YVV_GAUSSIAN_IMAGE_FILTER_H_
51 template<
typename TInputImage,
typename TOutputImage = TInputImage >
52 class ITK_EXPORT GPUSmoothingRecursiveYvvGaussianImageFilter:
53 public GPUImageToImageFilter< TInputImage, TOutputImage,
54 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > >
58 typedef GPUSmoothingRecursiveYvvGaussianImageFilter Self;
61 typedef GPUImageToImageFilter< TInputImage, TOutputImage,
62 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > >
Superclass;
63 typedef GPUImageToImageFilter< TInputImage, TOutputImage,
64 SmoothingRecursiveYvvGaussianImageFilter< TInputImage, TOutputImage > > GPUSuperclass;
71 typedef TInputImage InputImageType;
72 typedef TOutputImage OutputImageType;
73 typedef typename TInputImage::PixelType PixelType;
86 itkTypeMacro(GPUSmoothingRecursiveYvvGaussianImageFilter,
87 GPUImageToImageFilter);
90 itkStaticConstMacro(ImageDimension,
unsigned int,
91 TInputImage::ImageDimension);
94 typedef FixedArray< ScalarRealType,
95 itkGetStaticConstMacro(ImageDimension) > SigmaArrayType;
102 typedef GPUImage< InternalRealType,
103 itkGetStaticConstMacro(ImageDimension) > RealImageType;
115 void SetSigmaArray(
const SigmaArrayType & sigmas);
117 void SetSigma(ScalarRealType sigma);
119 SigmaArrayType GetSigmaArray()
const;
121 ScalarRealType GetSigma()
const;
124 void SetNormalizeAcrossScale(
bool normalizeInScaleSpace);
126 itkGetConstMacro(NormalizeAcrossScale,
bool);
128 virtual void SetUp(ScalarRealType spacing);
130 #ifdef ITK_USE_CONCEPT_CHECKING
133 ( Concept::HasNumericTraits< PixelType > ) );
139 itkGetOpenCLSourceFromKernelMacro(GPUSmoothingRecursiveYvvGaussianImageFilterKernel);
140 void SetInput(
const TInputImage *input);
141 using Superclass::SetInput;
143 GPUSmoothingRecursiveYvvGaussianImageFilter();
144 virtual ~GPUSmoothingRecursiveYvvGaussianImageFilter() {}
145 void PrintSelf(std::ostream & os, Indent indent)
const;
149 void GPUGenerateData(
void);
156 virtual void GenerateInputRequestedRegion() throw( InvalidRequestedRegionError );
159 void EnlargeOutputRequestedRegion(
DataObject *output);
161 void AllocateGPUCoefficients();
163 std::ostringstream defines;
169 ScalarRealType *m_Bvalues;
172 ScalarRealType *m_CPUMatrix;
174 typedef GPUDataManager::
Pointer GPUDataPointer;
176 GPUDataPointer m_GPUMMatrixDataManager;
177 GPUDataPointer m_GPUBCoefficientsDataManager;
178 GPUDataPointer m_GPULocalDataManager;
180 ITK_DISALLOW_COPY_AND_ASSIGN(GPUSmoothingecursiveYvvGaussianImageFilter);
185 bool m_NormalizeAcrossScale;
187 int m_FilterGPUKernelHandle;
188 typename GPUInputImage::
Pointer inPtr;
189 typename GPUOutputImage::
Pointer otPtr;
190 typename GPUOutputImage::SizeType m_requestedSize;
192 SigmaArrayType m_Sigma;
197 #ifndef ITK_MANUAL_INSTANTIATION
198 #include "itkGPUSmoothingRecursiveYvvGaussianImageFilter.hxx"
201 #endif //_ITK_GPU_SMOOTHING_RECURSIVE_YVV_GAUSSIAN_IMAGE_FILTER_H_
virtual void PrintSelf(std::ostream &os, Indent indent) const override
class ITK_FORCE_EXPORT_MACRO(ITKCommon) DataObject typedef Object Superclass
itkGPUKernelClassMacro(GPUImageOpsKernel)
SmartPointer< Self > Pointer
SmartPointer< const Self > ConstPointer
Base class for all data objects in ITK.
#define itkConceptMacro(name, concept)