33 #ifndef vtkAbstractImageInterpolator_h
34 #define vtkAbstractImageInterpolator_h
36 #include "vtkImagingCoreModule.h"
39 #define VTK_IMAGE_BORDER_CLAMP 0
40 #define VTK_IMAGE_BORDER_REPEAT 1
41 #define VTK_IMAGE_BORDER_MIRROR 2
63 virtual void ReleaseData();
85 double Interpolate(
double x,
double y,
double z,
int component);
94 bool Interpolate(
const double point[3],
double *
value);
99 void SetOutValue(
double outValue);
107 void SetTolerance(
double tol);
116 void SetComponentOffset(
int offset);
125 void SetComponentCount(
int count);
132 int ComputeNumberOfComponents(
int inputComponents);
139 int GetNumberOfComponents();
147 void InterpolateIJK(
const double point[3],
double *
value);
148 void InterpolateIJK(
const float point[3],
float *
value);
158 bool CheckBoundsIJK(
const double x[3]);
159 bool CheckBoundsIJK(
const float x[3]);
170 void SetBorderMode(
int mode);
178 const char *GetBorderModeAsString();
187 virtual void ComputeSupportSize(
const double matrix[16],
int support[3]) = 0;
195 virtual bool IsSeparable() = 0;
208 virtual void PrecomputeWeightsForExtent(
209 const double matrix[16],
const int extent[6],
int checkExtent[6],
211 virtual void PrecomputeWeightsForExtent(
212 const float matrix[16],
const int extent[6],
int checkExtent[6],
230 double *
value,
int n);
233 float *
value,
int n);
240 vtkGetVector3Macro(Spacing,
double);
247 vtkGetVector3Macro(Origin,
double);
254 vtkGetVector6Macro(Extent,
int);
262 VTK_LEGACY(
int *GetWholeExtent());
263 VTK_LEGACY(
void GetWholeExtent(
int extent[6]));
273 virtual void InternalUpdate() = 0;
284 virtual void GetInterpolationFunc(
287 virtual void GetInterpolationFunc(
296 virtual void GetRowInterpolationFunc(
299 virtual void GetRowInterpolationFunc(
305 double StructuredBoundsDouble[6];
306 float StructuredBoundsFloat[6];
319 void (*InterpolationFuncDouble)(
321 void (*InterpolationFuncFloat)(
324 void (*RowInterpolationFuncDouble)(
326 double *outPtr,
int n);
327 void (*RowInterpolationFuncFloat)(
329 float *outPtr,
int n);
338 const
double point[3],
double *
value)
340 this->InterpolationFuncDouble(this->InterpolationInfo, point, value);
344 const float point[3],
float *
value)
346 this->InterpolationFuncFloat(this->InterpolationInfo, point, value);
351 double *bounds = this->StructuredBoundsDouble;
352 return !((x[0] < bounds[0]) | (x[0] > bounds[1]) |
353 (x[1] < bounds[2]) | (x[1] > bounds[3]) |
354 (x[2] < bounds[4]) | (x[2] > bounds[5]));
359 float *bounds = this->StructuredBoundsFloat;
360 return !((x[0] < bounds[0]) | (x[0] > bounds[1]) |
361 (x[1] < bounds[2]) | (x[1] > bounds[3]) |
362 (x[2] < bounds[4]) | (x[2] > bounds[5]));
367 double *
value,
int n)
369 this->RowInterpolationFuncDouble(weights, xIdx, yIdx, zIdx, value, n);
376 this->RowInterpolationFuncFloat(weights, xIdx, yIdx, zIdx, value, n);
interpolate data values from images
abstract base class for most VTK objects
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetBorderModeToRepeat()
The border mode (default: clamp).
void DeepCopy(vtkPistonReference *self, vtkPistonReference *other)
virtual void Update()
Updates the extensions string.
#define VTK_IMAGE_BORDER_REPEAT
#define VTK_IMAGE_BORDER_CLAMP
void InterpolateIJK(const double point[3], double *value)
A version of Interpolate that takes structured coords instead of data coords.
vtkInterpolationInfo * InterpolationInfo
a simple class to control print indentation
topologically and geometrically regular array of data
abstract superclass for arrays of numeric data
int GetBorderMode()
The border mode (default: clamp).
#define VTK_IMAGE_BORDER_MIRROR
bool CheckBoundsIJK(const double x[3])
Check an x,y,z point to see if it is within the bounds for the structured coords of the image...
general representation of visualization data
void SetBorderModeToClamp()
The border mode (default: clamp).
void InterpolateRow(vtkInterpolationWeights *&weights, int xIdx, int yIdx, int zIdx, double *value, int n)
Get a row of samples, using the weights that were precomputed by PrecomputeWeightsForExtent.
void SetBorderModeToMirror()
The border mode (default: clamp).