18 #ifndef __itkGPUResampleImageFilter_h 19 #define __itkGPUResampleImageFilter_h 21 #include "itkResampleImageFilter.h" 46 template<
typename TInputImage,
typename TOutputImage,
typename TInterpolatorPrecisionType =
float >
49 ResampleImageFilter< TInputImage, TOutputImage, TInterpolatorPrecisionType > >
55 typedef ResampleImageFilter<
69 itkStaticConstMacro( InputImageDimension,
unsigned int,
70 TInputImage::ImageDimension );
71 itkStaticConstMacro( OutputImageDimension,
unsigned int,
72 TOutputImage::ImageDimension );
87 typedef typename CPUSuperclass::SizeType
SizeType;
88 typedef typename CPUSuperclass::IndexType
IndexType;
110 virtual void SetInterpolator( InterpolatorType * _arg );
113 virtual void SetExtrapolator( ExtrapolatorType * _arg );
116 virtual void SetTransform(
const TransformType * _arg );
120 itkSetMacro( RequestedNumberOfSplits,
unsigned int );
121 itkGetConstMacro( RequestedNumberOfSplits,
unsigned int );
127 virtual void PrintSelf( std::ostream & os, Indent indent )
const ITK_OVERRIDE;
129 virtual void GPUGenerateData(
void );
133 IdentityTransform = 1,
141 void SetArgumentsForPreKernelManager(
142 const typename GPUOutputImage::Pointer & output );
145 void SetArgumentsForLoopKernelManager(
146 const typename GPUInputImage::Pointer & input,
147 const typename GPUOutputImage::Pointer & output );
150 void SetTransformParametersForLoopKernelManager(
151 const std::size_t transformIndex );
154 void SetArgumentsForPostKernelManager(
155 const typename GPUInputImage::Pointer & input,
156 const typename GPUOutputImage::Pointer & output );
159 void SetBSplineTransformCoefficientsToGPU(
160 const std::size_t transformIndex );
163 const GPUTransformTypeEnum GetTransformType(
const int & transformIndex )
const;
166 bool HasTransform(
const GPUTransformTypeEnum type )
const;
169 int GetTransformHandle(
const GPUTransformTypeEnum type )
const;
172 bool GetKernelIdFromTransformId(
173 const std::size_t & index, std::size_t & kernelId )
const;
176 GPUBSplineBaseTransformType * GetGPUBSplineBaseTransform(
177 const std::size_t transformIndex );
182 void operator=(
const Self & );
197 class TransformKernelHelper
199 GPUTransformTypeEnum m_TransformType;
200 std::string m_TransformTypeAsString;
201 std::: size_t m_TransformKernelHandle;
203 TransformKernelHelper()
206 m_TransformTypeAsString =
"Else";
207 m_TransformKernelHandle = 0;
214 std::vector< TransformKernelHelper > m_SupportedTransformKernels;
238 #ifndef ITK_MANUAL_INSTANTIATION 239 #include "itkGPUResampleImageFilter.hxx" GPUDataManagerPointer m_DeformationFieldBuffer
unsigned int m_RequestedNumberOfSplits
GPUTraits< TInputImage >::Type GPUInputImage
class to abstract the behaviour of the GPU filters.
GPUCompositeTransformBase< InterpolatorPrecisionType, InputImageDimension > CompositeTransformBaseType
TInputImage InputImageType
bool m_InterpolatorIsBSpline
std::vcl_size_t m_TransformSourceLoadedIndex
GPUImageToImageFilter< TInputImage, TOutputImage, CPUSuperclass > GPUSuperclass
ResampleImageFilter< TInputImage, TOutputImage, TInterpolatorPrecisionType > CPUSuperclass
std::vcl_size_t m_InterpolatorSourceLoadedIndex
GPUKernelManagerPointer m_PostKernelManager
GPUBSplineInterpolatorType::GPUCoefficientImageType GPUBSplineInterpolatorCoefficientImageType
CPUSuperclass::IndexType IndexType
TransformsHandle m_FilterLoopGPUKernelHandle
TOutputImage OutputImageType
itkGPUKernelClassMacro(GPUBSplineTransformKernel)
std::vector< std::string > m_Sources
std::vcl_size_t m_FilterPostGPUKernelHandle
GPUDataManagerPointer m_OutputGPUImageBase
TInterpolatorPrecisionType InterpolatorPrecisionType
GPUDataManager::Pointer GPUDataManagerPointer
GPUTransformBase * m_TransformBase
CPUSuperclass::ExtrapolatorType ExtrapolatorType
GPUInterpolatorBase * m_InterpolatorBase
GPU version of ResampleImageFilter.
GPUBSplineInterpolateImageFunction< InputImageType, InterpolatorPrecisionType > GPUBSplineInterpolatorType
Templated n-dimensional image class for the GPU.
CPUSuperclass::TransformType TransformType
GPUBSplineBaseTransform< InterpolatorPrecisionType, InputImageDimension > GPUBSplineBaseTransformType
GPU version of BSplineInterpolateImageFunction.
OpenCLKernelManager::Pointer GPUKernelManagerPointer
GPUKernelManagerPointer m_PreKernelManager
GPUBSplineInterpolatorType::GPUCoefficientImagePointer GPUBSplineInterpolatorCoefficientImagePointer
std::map< GPUTransformTypeEnum, TransformHandle > TransformsHandle
std::pair< int, bool > TransformHandle
std::vcl_size_t m_FilterPreGPUKernelHandle
CPUSuperclass::InterpolatorType InterpolatorType
CPUSuperclass::OutputImageRegionType OutputImageRegionType
std::vcl_size_t m_SourceIndex
CPUSuperclass::InputImageRegionType InputImageRegionType
GPUDataManagerPointer m_FilterParameters
SmartPointer< Self > Pointer
GPUKernelManagerPointer m_LoopKernelManager
GPUResampleImageFilter Self
GPUBSplineInterpolatorType::GPUDataManagerPointer GPUBSplineInterpolatorDataManagerPointer
Base class fro all GPU interpolators.
GPUDataManagerPointer m_InputGPUImageBase
GPUSuperclass::OutputImagePixelType OutputImagePixelType
~GPUResampleImageFilter()
CPUSuperclass::SizeType SizeType
SmartPointer< const Self > ConstPointer
GPUTraits< TOutputImage >::Type GPUOutputImage
Superclass::OutputImagePixelType OutputImagePixelType