/usr/include/vtk-7.1/vtkBSplineTransform.h is in libvtk7-dev 7.1.1+dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkBSplineTransform.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkBSplineTransform
* @brief a cubic b-spline deformation transformation
*
* vtkBSplineTransform computes a cubic b-spline transformation from a
* grid of b-spline coefficients.
* @warning
* The inverse grid transform is calculated using an iterative method,
* and is several times more expensive than the forward transform.
* @sa
* vtkGeneralTransform vtkTransformToGrid vtkImageBSplineCoefficients
* @par Thanks:
* This class was written by David Gobbi at the Seaman Family MR Research
* Centre, Foothills Medical Centre, Calgary, Alberta.
* DG Gobbi and YP Starreveld,
* "Uniform B-Splines for the VTK Imaging Pipeline,"
* VTK Journal, 2011,
* http://hdl.handle.net/10380/3252
*/
#ifndef vtkBSplineTransform_h
#define vtkBSplineTransform_h
#include "vtkFiltersHybridModule.h" // For export macro
#include "vtkWarpTransform.h"
class vtkAlgorithmOutput;
class vtkBSplineTransformConnectionHolder;
class vtkImageData;
#define VTK_BSPLINE_EDGE 0
#define VTK_BSPLINE_ZERO 1
#define VTK_BSPLINE_ZERO_AT_BORDER 2
class VTKFILTERSHYBRID_EXPORT vtkBSplineTransform : public vtkWarpTransform
{
public:
static vtkBSplineTransform *New();
vtkTypeMacro(vtkBSplineTransform,vtkWarpTransform);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@{
/**
* Set/Get the coefficient grid for the b-spline transform.
* The vtkBSplineTransform class will never modify the data.
* Note that SetCoefficientData() does not setup a pipeline
* connection whereas SetCoefficientConnection does.
*/
virtual void SetCoefficientConnection(vtkAlgorithmOutput*);
virtual void SetCoefficientData(vtkImageData*);
virtual vtkImageData* GetCoefficientData();
//@}
//@{
/**
* Set/Get a scale to apply to the transformation.
*/
vtkSetMacro(DisplacementScale, double);
vtkGetMacro(DisplacementScale, double);
//@}
//@{
/**
* Set/Get the border mode, to alter behavior at the edge of the grid.
* The Edge mode allows the displacement to converge to the edge
* coefficient past the boundary, which is similar to the behavior of
* the vtkGridTransform. The Zero mode allows the displacement to
* smoothly converge to zero two node-spacings past the boundary,
* which is useful when you want to create a localized transform.
* The ZeroAtBorder mode sacrifices smoothness to further localize
* the transform to just one node-spacing past the boundary.
*/
vtkSetClampMacro(BorderMode, int,
VTK_BSPLINE_EDGE, VTK_BSPLINE_ZERO_AT_BORDER);
void SetBorderModeToEdge() {
this->SetBorderMode(VTK_BSPLINE_EDGE); }
void SetBorderModeToZero() {
this->SetBorderMode(VTK_BSPLINE_ZERO); }
void SetBorderModeToZeroAtBorder() {
this->SetBorderMode(VTK_BSPLINE_ZERO_AT_BORDER); }
vtkGetMacro(BorderMode, int);
const char *GetBorderModeAsString();
//@}
/**
* Make another transform of the same type.
*/
vtkAbstractTransform *MakeTransform();
/**
* Get the MTime.
*/
vtkMTimeType GetMTime();
protected:
vtkBSplineTransform();
~vtkBSplineTransform();
/**
* Update the displacement grid.
*/
void InternalUpdate();
/**
* Copy this transform from another of the same type.
*/
void InternalDeepCopy(vtkAbstractTransform *transform);
//@{
/**
* Internal functions for calculating the transformation.
*/
void ForwardTransformPoint(const float in[3], float out[3]);
void ForwardTransformPoint(const double in[3], double out[3]);
//@}
void ForwardTransformDerivative(const float in[3], float out[3],
float derivative[3][3]);
void ForwardTransformDerivative(const double in[3], double out[3],
double derivative[3][3]);
void InverseTransformPoint(const float in[3], float out[3]);
void InverseTransformPoint(const double in[3], double out[3]);
void InverseTransformDerivative(const float in[3], float out[3],
float derivative[3][3]);
void InverseTransformDerivative(const double in[3], double out[3],
double derivative[3][3]);
void (*CalculateSpline)(const double point[3], double displacement[3],
double derivatives[3][3],
void *gridPtr, int inExt[6], vtkIdType inInc[3],
int borderMode);
double DisplacementScale;
int BorderMode;
void *GridPointer;
double GridSpacing[3];
double GridOrigin[3];
int GridExtent[6];
vtkIdType GridIncrements[3];
private:
vtkBSplineTransform(const vtkBSplineTransform&) VTK_DELETE_FUNCTION;
void operator=(const vtkBSplineTransform&) VTK_DELETE_FUNCTION;
vtkBSplineTransformConnectionHolder* ConnectionHolder;
};
#endif
|