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;
106 typedef typename OutputImageType::Pointer OutputImagePointer;
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 GPUSmoothingRecursiveYvvGaussianImageFilter(const Self &);
185 void operator=(const Self &);
188 bool m_NormalizeAcrossScale;
190 int m_FilterGPUKernelHandle;
191 typename GPUInputImage::Pointer inPtr;
192 typename GPUOutputImage::Pointer otPtr;
193 typename GPUOutputImage::SizeType m_requestedSize;
195 SigmaArrayType m_Sigma;
200 #ifndef ITK_MANUAL_INSTANTIATION
201 #include "itkGPUSmoothingRecursiveYvvGaussianImageFilter.hxx"
204 #endif //_ITK_GPU_SMOOTHING_RECURSIVE_YVV_GAUSSIAN_IMAGE_FILTER_H_
itkGPUKernelClassMacro(GPUImageOpsKernel)
#define itkConceptMacro(name, concept)