VTK
vtkImageBSplineInterpolator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageBSplineInterpolator.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
43 #ifndef vtkImageBSplineInterpolator_h
44 #define vtkImageBSplineInterpolator_h
45 
46 #include "vtkImagingCoreModule.h" // For export macro
48 
49 #define VTK_IMAGE_BSPLINE_DEGREE_MAX 9
50 
51 class vtkImageData;
53 
54 class VTKIMAGINGCORE_EXPORT vtkImageBSplineInterpolator :
56 {
57 public:
60  void PrintSelf(ostream& os, vtkIndent indent) override;
61 
63 
69  int GetSplineDegree() { return this->SplineDegree; };
70  int GetSplineDegreeMinValue() { return 0; }
73 
80  void ComputeSupportSize(const double matrix[16], int support[3]) override;
81 
86  bool IsSeparable() override;
87 
89 
100  const double matrix[16], const int extent[6], int newExtent[6],
101  vtkInterpolationWeights *&weights) override;
103  const float matrix[16], const int extent[6], int newExtent[6],
104  vtkInterpolationWeights *&weights) override;
106 
111 
112 protected:
115 
119  void InternalUpdate() override;
120 
125 
127 
131  void (**doublefunc)(
132  vtkInterpolationInfo *, const double [3], double *)) override;
134  void (**floatfunc)(
135  vtkInterpolationInfo *, const float [3], float *)) override;
137 
139 
143  void (**doublefunc)(
144  vtkInterpolationWeights *, int, int, int, double *, int)) override;
146  void (**floatfunc)(
147  vtkInterpolationWeights *, int, int, int, float *, int)) override;
149 
153  virtual void BuildKernelLookupTable();
154 
158  virtual void FreeKernelLookupTable();
159 
162 
163 private:
165  void operator=(const vtkImageBSplineInterpolator&) = delete;
166 };
167 
168 #endif
vtkImageBSplineInterpolator::InternalUpdate
void InternalUpdate() override
Update the interpolator.
VTK_IMAGE_BSPLINE_DEGREE_MAX
#define VTK_IMAGE_BSPLINE_DEGREE_MAX
Definition: vtkImageBSplineInterpolator.h:49
vtkImageBSplineInterpolator::PrecomputeWeightsForExtent
void PrecomputeWeightsForExtent(const float matrix[16], const int extent[6], int newExtent[6], vtkInterpolationWeights *&weights) override
vtkImageBSplineInterpolator::vtkImageBSplineInterpolator
vtkImageBSplineInterpolator()
vtkInterpolationInfo
Definition: vtkImageInterpolatorInternals.h:27
vtkImageBSplineInterpolator::GetSplineDegreeMinValue
int GetSplineDegreeMinValue()
Definition: vtkImageBSplineInterpolator.h:70
vtkImageBSplineInterpolator::GetInterpolationFunc
void GetInterpolationFunc(void(**doublefunc)(vtkInterpolationInfo *, const double[3], double *)) override
Get the interpolation functions.
vtkImageBSplineInterpolator::GetSplineDegree
int GetSplineDegree()
Definition: vtkImageBSplineInterpolator.h:69
vtkAbstractImageInterpolator.h
vtkImageBSplineInterpolator::New
static vtkImageBSplineInterpolator * New()
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:46
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkImageBSplineInterpolator::GetSplineDegreeMaxValue
int GetSplineDegreeMaxValue()
Definition: vtkImageBSplineInterpolator.h:71
vtkImageBSplineInterpolator::PrecomputeWeightsForExtent
void PrecomputeWeightsForExtent(const double matrix[16], const int extent[6], int newExtent[6], vtkInterpolationWeights *&weights) override
If the data is going to be sampled on a regular grid, then the interpolation weights can be precomput...
degree
boost::graph_traits< vtkGraph * >::degree_size_type degree(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
Definition: vtkBoostGraphAdapter.h:931
vtkImageBSplineInterpolator::FreePrecomputedWeights
void FreePrecomputedWeights(vtkInterpolationWeights *&weights) override
Free the precomputed weights.
vtkImageBSplineInterpolator::KernelLookupTable
float * KernelLookupTable
Definition: vtkImageBSplineInterpolator.h:161
vtkImageBSplineInterpolator
perform b-spline interpolation on images
Definition: vtkImageBSplineInterpolator.h:56
vtkImageBSplineInterpolator::FreeKernelLookupTable
virtual void FreeKernelLookupTable()
Free the kernel lookup tables.
vtkImageBSplineInterpolator::~vtkImageBSplineInterpolator
~vtkImageBSplineInterpolator() override
vtkInterpolationWeights
Definition: vtkImageInterpolatorInternals.h:40
vtkImageBSplineInterpolator::BuildKernelLookupTable
virtual void BuildKernelLookupTable()
Build the lookup tables used for the interpolation.
vtkImageBSplineInterpolator::GetRowInterpolationFunc
void GetRowInterpolationFunc(void(**doublefunc)(vtkInterpolationWeights *, int, int, int, double *, int)) override
Get the row interpolation functions.
vtkImageBSplineInterpolator::IsSeparable
bool IsSeparable() override
Returns true if the interpolator supports weight precomputation.
vtkX3D::extent
@ extent
Definition: vtkX3D.h:345
vtkImageBSplineInterpolator::GetInterpolationFunc
void GetInterpolationFunc(void(**floatfunc)(vtkInterpolationInfo *, const float[3], float *)) override
vtkImageBSplineInterpolator::SplineDegree
int SplineDegree
Definition: vtkImageBSplineInterpolator.h:160
vtkAbstractImageInterpolator
interpolate data values from images
Definition: vtkAbstractImageInterpolator.h:50
vtkImageBSplineInterpolator::ComputeSupportSize
void ComputeSupportSize(const double matrix[16], int support[3]) override
Get the support size for use in computing update extents.
vtkImageBSplineInterpolator::SetSplineDegree
void SetSplineDegree(int degree)
Set the degree of the spline polynomial.
vtkImageBSplineInterpolator::InternalDeepCopy
void InternalDeepCopy(vtkAbstractImageInterpolator *obj) override
Copy the interpolator.
vtkImageBSplineInterpolator::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkImageBSplineInterpolator::GetRowInterpolationFunc
void GetRowInterpolationFunc(void(**floatfunc)(vtkInterpolationWeights *, int, int, int, float *, int)) override