Loading...
Searching...
No Matches
itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar > Class Template Reference

`#include <itkRecursiveBSplineTransformImplementation.h>`

## Detailed Description

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>
class itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >

This helper class contains the actual implementation of the recursive B-spline transform.

Define the end case for SpaceDimension = 0.

Compared to the RecursiveBSplineTransformImplementation class, this class works as a vector operator, and is therefore also templated over the OutputDimension.

Note: More optimized code can be found in itkRecursiveBSplineImplementation.h

Definition at line 46 of file itkRecursiveBSplineTransformImplementation.h.

## Public Types

using | InternalFloatType = double
using | RecursiveBSplineWeightFunctionType

## Public Member Functions

| itkStaticConstMacro (BSplineNumberOfIndices, unsigned int, RecursiveBSplineWeightFunctionType::NumberOfIndices)
| itkStaticConstMacro (HelperConstVariable, unsigned int,(SpaceDimension - 1) *(SplineOrder+1))

## Static Public Member Functions

static void | ComputeNonZeroJacobianIndices (unsigned long *&nzji, const unsigned long parametersPerDim, unsigned long currentIndex, const OffsetValueType *const gridOffsetTable)
static void | EvaluateJacobianWithImageGradientProduct (TScalar *&imageJacobian, const InternalFloatType *const movingImageGradient, const double *const weights1D, const double value)
static void | GetJacobian (TScalar *&jacobians, const double *const weights1D, const double value)
static void | GetJacobianOfSpatialHessian (InternalFloatType *&jsh_out, const double *const weights1D, const double *const derivativeWeights1D, const double *const hessianWeights1D, const double *const directionCosines, const InternalFloatType *const jsh)
static void | GetJacobianOfSpatialJacobian (InternalFloatType *&jsj_out, const double *const weights1D, const double *const derivativeWeights1D, const double *const directionCosines, const InternalFloatType *const jsj)
static void | GetSpatialHessian (InternalFloatType *const sh, const TScalar *const *const mu, const OffsetValueType *const gridOffsetTable, const double *const weights1D, const double *const derivativeWeights1D, const double *const hessianWeights1D)
static void | GetSpatialJacobian (InternalFloatType *const sj, const TScalar *const *const mu, const OffsetValueType *const gridOffsetTable, const double *const weights1D, const double *const derivativeWeights1D)
static void | TransformPoint (TScalar *const opp, const TScalar *const *const mu, const OffsetValueType *const gridOffsetTable, const double *const weights1D)

## Member Typedef Documentation

## InternalFloatType

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

using itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::InternalFloatType = double

Definition at line 49 of file itkRecursiveBSplineTransformImplementation.h.

## RecursiveBSplineWeightFunctionType

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

using itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::RecursiveBSplineWeightFunctionType

Initial value:
itk::RecursiveBSplineInterpolationWeightFunction<TScalar, OutputDimension, SplineOrder>
itk::RecursiveBSplineInterpolationWeightFunction
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Definition itkRecursiveBSplineInterpolationWeightFunction.h:50

Typedef to know the number of indices at compile time.

Definition at line 55 of file itkRecursiveBSplineTransformImplementation.h.

## Member Function Documentation

## ComputeNonZeroJacobianIndices()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::ComputeNonZeroJacobianIndices | ( | unsigned long *& | nzji,
|  | const unsigned long | parametersPerDim,
|  | unsigned long | currentIndex,
|  | const OffsetValueType *const | gridOffsetTable )

inline static

ComputeNonZeroJacobianIndices recursive implementation.

Definition at line 125 of file itkRecursiveBSplineTransformImplementation.h.

## EvaluateJacobianWithImageGradientProduct()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::EvaluateJacobianWithImageGradientProduct | ( | TScalar *& | imageJacobian,
|  | const InternalFloatType *const | movingImageGradient,
|  | const double *const | weights1D,
|  | const double | value )

inline static

EvaluateJacobianWithImageGradientProduct recursive implementation.

Definition at line 108 of file itkRecursiveBSplineTransformImplementation.h.

## GetJacobian()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::GetJacobian | ( | TScalar *& | jacobians,
|  | const double *const | weights1D,
|  | const double | value )

inline static

GetJacobian recursive implementation.

Definition at line 95 of file itkRecursiveBSplineTransformImplementation.h.

## GetJacobianOfSpatialHessian()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::GetJacobianOfSpatialHessian | ( | InternalFloatType *& | jsh_out,
|  | const double *const | weights1D,
|  | const double *const | derivativeWeights1D,
|  | const double *const | hessianWeights1D,
|  | const double *const | directionCosines,
|  | const InternalFloatType *const | jsh )

inline static

GetJacobianOfSpatialHessian recursive implementation. Multiplication with the direction cosines is performed in the end - case.

Definition at line 305 of file itkRecursiveBSplineTransformImplementation.h.

## GetJacobianOfSpatialJacobian()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::GetJacobianOfSpatialJacobian | ( | InternalFloatType *& | jsj_out,
|  | const double *const | weights1D,
|  | const double *const | derivativeWeights1D,
|  | const double *const | directionCosines,
|  | const InternalFloatType *const | jsj )

inline static

GetJacobianOfSpatialJacobian recursive implementation. Multiplication with the direction cosines is performed in the end-case.

Definition at line 269 of file itkRecursiveBSplineTransformImplementation.h.

## GetSpatialHessian()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::GetSpatialHessian | ( | InternalFloatType *const | sh,
|  | const TScalar *const *const | mu,
|  | const OffsetValueType *const | gridOffsetTable,
|  | const double *const | weights1D,
|  | const double *const | derivativeWeights1D,
|  | const double *const | hessianWeights1D )

inline static

GetSpatialHessian recursive implementation. As an (almost) free by-product this function delivers the displacement, i.e. the TransformPoint() function, as well as the SpatialJacobian.

Specifically, sh is the output argument. It should be allocated with a size OutputDimension * ( SpaceDimension + 1 ) * ( SpaceDimension + 2 ) / 2. sh should point to allocated memory, but this function initializes sh.

Upon return sh contains the spatial Hessian, spatial Jacobian and transformpoint. With Hk = [ transformPoint spatialJacobian' spatialJacobian spatialHessian ] . (Hk specifies all info of dimension (element) k (< OutputDimension) of the point and spatialJacobian is a vector of the derivative of this point with respect to the dimensions.) The i,j (both < SpaceDimension) element of Hk is stored in: i<=j : sh[ k + OutputDimension * (i + j*(j+1)/2 ) ] i>=j : sh[ k + OutputDimension * (j + i*(i+1)/2 ) ]

Note that we store only one of the symmetric halves of Hk.

Definition at line 209 of file itkRecursiveBSplineTransformImplementation.h.

## GetSpatialJacobian()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::GetSpatialJacobian | ( | InternalFloatType *const | sj,
|  | const TScalar *const *const | mu,
|  | const OffsetValueType *const | gridOffsetTable,
|  | const double *const | weights1D,
|  | const double *const | derivativeWeights1D )

inline static

GetSpatialJacobian recursive implementation. As an (almost) free by-product this function delivers the displacement, i.e. the TransformPoint() function.

Definition at line 147 of file itkRecursiveBSplineTransformImplementation.h.

## itkStaticConstMacro() [1/2]

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::itkStaticConstMacro | ( | BSplineNumberOfIndices | ,
|  | unsigned int | ,
|  | RecursiveBSplineWeightFunctionType::NumberOfIndices | )

## itkStaticConstMacro() [2/2]

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::itkStaticConstMacro | ( | HelperConstVariable | ,
|  | unsigned int | ,
|  | (SpaceDimension - 1) *(SplineOrder+1) | )

Helper constant variable.

## TransformPoint()

template<unsigned int OutputDimension, unsigned int SpaceDimension, unsigned int SplineOrder, class TScalar>

void itk::RecursiveBSplineTransformImplementation< OutputDimension, SpaceDimension, SplineOrder, TScalar >::TransformPoint | ( | TScalar *const | opp,
|  | const TScalar *const *const | mu,
|  | const OffsetValueType *const | gridOffsetTable,
|  | const double *const | weights1D )

inline static

TransformPoint recursive implementation.

Definition at line 61 of file itkRecursiveBSplineTransformImplementation.h.

Generated on 1768596610 for elastix by 1.15.0 |