00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef __itkInterpolateImagePointsFilter_h
00022
#define __itkInterpolateImagePointsFilter_h
00023
00024
#include "itkBSplineInterpolateImageFunction.h"
00025
#include "itkImageToImageFilter.h"
00026
#include "itkImageToImageFilterDetail.h"
00027
#include "itkImageRegionIterator.h"
00028
#include "itkImageRegionConstIterator.h"
00029
00030
namespace itk
00031 {
00070
template <
class TInputImage,
00071
class TOutputImage,
00072
class TCoordType =
float,
00073
class InterpolatorType = BSplineInterpolateImageFunction<TInputImage, TCoordType> >
00074 class ITK_EXPORT InterpolateImagePointsFilter :
00075
public ImageToImageFilter<TInputImage, TOutputImage>
00076 {
00077
public:
00079 typedef InterpolateImagePointsFilter
Self;
00080 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass;
00081 typedef SmartPointer<Self> Pointer;
00082 typedef SmartPointer<const Self> ConstPointer;
00083
00085
itkTypeMacro(InterpolateImagePointsFilter,
ImageToImageFilter);
00086
00087
00089
itkNewMacro(
Self );
00090
00092
itkStaticConstMacro(ImageDimension,
unsigned int, TInputImage::ImageDimension );
00093
00095 typedef typename Superclass::InputImageType
InputImageType;
00096 typedef typename Superclass::OutputImageType
OutputImageType;
00097 typedef typename Superclass::InputImagePointer
InputImagePointer;
00098
00100 typedef typename TOutputImage::Pointer
OutputImagePointer;
00101 typedef ImageRegionIterator<InputImageType> OutputImageIterator;
00102 typedef typename OutputImageType::RegionType
OutputImageRegionType;
00103
00105 typedef typename TOutputImage::PixelType
PixelType;
00106
00107
00108
00110 typedef typename InterpolatorType::Pointer
InterpolatorPointer;
00111 typedef typename InterpolatorType::ContinuousIndexType
ContinuousIndexType;
00112
00114 typedef Image< TCoordType, itkGetStaticConstMacro(ImageDimension) > CoordImageType;
00115
00117 typedef ImageToImageFilterDetail::ImageRegionCopier<itkGetStaticConstMacro(ImageDimension),itkGetStaticConstMacro(ImageDimension)> RegionCopierType;
00118
00123
void SetInputImage (
const TInputImage * inputImage);
00124
00127
void SetInterpolationCoordinate (
const CoordImageType * coordinate,
unsigned int setDimension);
00128
00130
itkSetMacro(DefaultPixelValue,
PixelType);
00131
00133
itkGetMacro(DefaultPixelValue,
PixelType);
00134
00136 InterpolatorPointer GetInterpolator()
00137 {
return m_Interpolator; }
00138
00141
void GenerateOutputInformation();
00142
00144
void GenerateInputRequestedRegion();
00145
00146
protected:
00149
00150
00153
void ThreadedGenerateData(
const OutputImageRegionType& outputRegionForThread,
00154
int threadId );
00155
void BeforeThreadedGenerateData();
00156
00157 InterpolateImagePointsFilter();
00158 ~InterpolateImagePointsFilter(){};
00159 void PrintSelf(std::ostream& os,
Indent indent)
const;
00160
00161
private:
00162
00164
typedef typename CoordImageType::Pointer CoordImageTypePointer;
00165
typedef ImageRegionConstIterator<CoordImageType> CoordImageIterator;
00166
typedef typename CoordImageType::RegionType CoordImageRegionType;
00167
00168 InterpolateImagePointsFilter(
const Self& );
00169
void operator=(
const Self& );
00170
00171
InterpolatorPointer m_Interpolator;
00172
PixelType m_DefaultPixelValue;
00173
00174 };
00175
00176 }
00177
00178
#ifndef ITK_MANUAL_INSTANTIATION
00179
#include "itkInterpolateImagePointsFilter.txx"
00180
#endif
00181
00182
#endif