#include <itkReducedDimensionBSplineInterpolateImageFunction.h>
Evaluates the B-Spline interpolation of an image. Spline order may be from 0 to 5.
This class defines N-Dimension B-Spline transformation. It is based on:
[1] M. Unser, "Splines: A Perfect Fit for Signal and Image Processing," IEEE Signal Processing Magazine, vol. 16, no. 6, pp. 22-38, November 1999.
[2] M. Unser, A. Aldroubi and M. Eden, "B-Spline Signal Processing: Part I--Theory," IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 821-832, February 1993.
[3] M. Unser, A. Aldroubi and M. Eden, "B-Spline Signal Processing: Part II--Efficient Design and Applications," IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 834-848, February 1993.
And code obtained from bigwww.epfl.ch by Philippe Thevenaz.
The B spline coefficients are calculated through the MultiOrderBSplineDecompositionImageFilter to enable a zero-th order for the last dimension.
Limitations: Spline order must be between 0 and 5. Spline order must be set before setting the image. Requires same spline order for every dimension. Uses mirror boundary conditions. Spline is determined in all dimensions, cannot selectively pick dimension for calculating spline.
Definition at line 85 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
Public Types | |
using | CoefficientDataType = TCoefficientType |
using | CoefficientFilter = MultiOrderBSplineDecompositionImageFilter<TImageType, CoefficientImageType> |
using | CoefficientFilterPointer = typename CoefficientFilter::Pointer |
using | CoefficientImageType = Image<CoefficientDataType, Self::ImageDimension> |
using | ConstPointer = SmartPointer<const Self> |
using | CovariantVectorType = CovariantVector<OutputType, Self::ImageDimension> |
using | Pointer = SmartPointer<Self> |
using | Self = ReducedDimensionBSplineInterpolateImageFunction |
using | SizeType = typename TImageType::SizeType |
using | Superclass = InterpolateImageFunction<TImageType, TCoordRep> |
Public Member Functions | |
OutputType | EvaluateAtContinuousIndex (const ContinuousIndexType &index) const override |
CovariantVectorType | EvaluateDerivative (const PointType &point) const |
CovariantVectorType | EvaluateDerivativeAtContinuousIndex (const ContinuousIndexType &x) const |
virtual const char * | GetClassName () const |
virtual int | GetSplineOrder () const |
virtual bool | GetUseImageDirection () const |
ITK_DISALLOW_COPY_AND_MOVE (ReducedDimensionBSplineInterpolateImageFunction) | |
itkStaticConstMacro (ImageDimension, unsigned int, Superclass::ImageDimension) | |
void | SetInputImage (const TImageType *inputData) override |
void | SetSplineOrder (unsigned int SplineOrder) |
virtual void | SetUseImageDirection (bool _arg) |
virtual void | UseImageDirectionOff () |
virtual void | UseImageDirectionOn () |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
ReducedDimensionBSplineInterpolateImageFunction () | |
~ReducedDimensionBSplineInterpolateImageFunction () override=default | |
Protected Attributes | |
CoefficientImageType::ConstPointer | m_Coefficients {} |
TImageType::SizeType | m_DataLength {} |
unsigned int | m_SplineOrder {} |
Private Member Functions | |
void | ApplyMirrorBoundaryConditions (vnl_matrix< long > &evaluateIndex, unsigned int splineOrder) const |
void | DetermineRegionOfSupport (vnl_matrix< long > &evaluateIndex, const ContinuousIndexType &x, unsigned int splineOrder) const |
void | GeneratePointsToIndex () |
SizeType | GetRadius () const override |
void | SetDerivativeWeights (const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const |
void | SetInterpolationWeights (const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const |
Private Attributes | |
CoefficientFilterPointer | m_CoefficientFilter {} |
std::vector< IndexType > | m_PointsToIndex {} |
bool | m_UseImageDirection {} |
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientDataType = TCoefficientType |
Internal Coefficient typedef support
Definition at line 124 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilter = MultiOrderBSplineDecompositionImageFilter<TImageType, CoefficientImageType> |
Define filter for calculating the BSpline coefficients
Definition at line 128 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilterPointer = typename CoefficientFilter::Pointer |
Definition at line 130 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientImageType = Image<CoefficientDataType, Self::ImageDimension> |
Definition at line 125 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ConstPointer = SmartPointer<const Self> |
Definition at line 95 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CovariantVectorType = CovariantVector<OutputType, Self::ImageDimension> |
Derivative typedef support
Definition at line 144 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Pointer = SmartPointer<Self> |
Definition at line 94 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Self = ReducedDimensionBSplineInterpolateImageFunction |
Standard class typedefs.
Definition at line 92 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SizeType = typename TImageType::SizeType |
Definition at line 106 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Superclass = InterpolateImageFunction<TImageType, TCoordRep> |
Definition at line 93 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
protected |
|
overrideprotecteddefault |
|
private |
Set the indicies in evaluateIndex at the boundaries based on mirror boundary conditions.
|
private |
Determines the indicies to use give the splines region of support
|
override |
Evaluate the function at a ContinuousIndex position.
Returns the B-Spline interpolated image intensity at a specified point position. No bounds checking is done. The point is assume to lie within the image buffer.
ImageFunction::IsInsideBuffer() can be used to check bounds before calling the method.
|
inline |
Definition at line 147 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
CovariantVectorType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateDerivativeAtContinuousIndex | ( | const ContinuousIndexType & | x | ) | const |
|
private |
Precomputation for converting the 1D index of the interpolation neighborhood to an N-dimensional index.
|
virtual |
Run-time type information (and related methods).
Reimplemented in elastix::ReducedDimensionBSplineInterpolator< TElastix >, and elastix::ReducedDimensionBSplineResampleInterpolator< TElastix >.
|
inlineoverrideprivate |
Definition at line 198 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
virtual |
|
virtual |
itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ITK_DISALLOW_COPY_AND_MOVE | ( | ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType > | ) |
itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::itkStaticConstMacro | ( | ImageDimension | , |
unsigned int | , | ||
Superclass::ImageDimension | ) |
Dimension underlying input image.
|
static |
New macro for creation of through a Smart Pointer
|
overrideprotected |
|
private |
Determines the weights for the derivative portion of the value x
|
override |
Set the input image. This must be set by the user.
|
private |
Determines the weights for interpolation of the value x
void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetSplineOrder | ( | unsigned int | SplineOrder | ) |
Get/Sets the Spline Order, supports 0th - 5th order splines. The default is a 3rd order spline.
|
virtual |
The UseImageDirection flag determines whether image derivatives are computed with respect to the image grid or with respect to the physical space. When this flag is ON the derivatives are computed with respect to the coordinate system of physical space. The difference is whether we take into account the image Direction or not. The flag ON will take into account the image direction and will result in an extra matrix multiplication compared to the amount of computation performed when the flag is OFF. The default value of this flag is the same as the CMAKE option ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE (i.e ON by default when ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE is ON, and OFF by default when ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE is OFF).
|
virtual |
|
virtual |
|
private |
Definition at line 235 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
protected |
Definition at line 194 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
protected |
Definition at line 191 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
private |
Definition at line 233 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
protected |
Definition at line 192 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
|
private |
Definition at line 239 of file itkReducedDimensionBSplineInterpolateImageFunction.h.
Generated on 2024-07-17 for elastix by 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) |