Loading...
Searching...
No Matches
itkRecursiveBSplineTransform.h
Go to the documentation of this file.
/*=========================================================================
*
* Copyright UMC Utrecht and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef itkRecursiveBSplineTransform_h
#define itkRecursiveBSplineTransform_h
#include "itkAdvancedBSplineDeformableTransform.h"
#include "itkRecursiveBSplineInterpolationWeightFunction.h"
#include "itkRecursiveBSplineTransformImplementation.h"
#include "elxDefaultConstruct.h"
namespace itk
{
template <typename TScalarType = double, unsigned int NDimensions = 3, unsigned int VSplineOrder = 3>
class ITK_TEMPLATE_EXPORT RecursiveBSplineTransform
: public AdvancedBSplineDeformableTransform<TScalarType, NDimensions, VSplineOrder>
{
public:
ITK_DISALLOW_COPY_AND_MOVE(RecursiveBSplineTransform);
using Self = RecursiveBSplineTransform;
using Superclass = AdvancedBSplineDeformableTransform<TScalarType, NDimensions, VSplineOrder>;
using Pointer = SmartPointer<Self>;
using ConstPointer = SmartPointer<const Self>;
itkNewMacro(Self);
itkTypeMacro(RecursiveBSplineTransform, AdvancedBSplineDeformableTransform);
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder);
using typename Superclass::ScalarType;
using typename Superclass::ParametersType;
using typename Superclass::ParametersValueType;
using typename Superclass::NumberOfParametersType;
using typename Superclass::DerivativeType;
using typename Superclass::JacobianType;
using typename Superclass::InputVectorType;
using typename Superclass::OutputVectorType;
using typename Superclass::InputCovariantVectorType;
using typename Superclass::OutputCovariantVectorType;
using typename Superclass::InputVnlVectorType;
using typename Superclass::OutputVnlVectorType;
using typename Superclass::InputPointType;
using typename Superclass::OutputPointType;
using typename Superclass::PixelType;
using typename Superclass::ImageType;
using typename Superclass::ImagePointer;
// using typename Superclass::CoefficientImageArray;
using typename Superclass::RegionType;
using typename Superclass::IndexType;
using typename Superclass::SizeType;
using typename Superclass::SpacingType;
using typename Superclass::DirectionType;
using typename Superclass::OriginType;
using typename Superclass::GridOffsetType;
using OffsetValueType = typename GridOffsetType::OffsetValueType;
using typename Superclass::NonZeroJacobianIndicesType;
using typename Superclass::SpatialJacobianType;
using typename Superclass::JacobianOfSpatialJacobianType;
using typename Superclass::SpatialHessianType;
using typename Superclass::JacobianOfSpatialHessianType;
using typename Superclass::InternalMatrixType;
using typename Superclass::MovingImageGradientType;
using typename Superclass::MovingImageGradientValueType;
using typename Superclass::WeightsFunctionType;
using typename Superclass::WeightsFunctionPointer;
using typename Superclass::WeightsType;
using typename Superclass::ContinuousIndexType;
using typename Superclass::DerivativeWeightsFunctionType;
using typename Superclass::DerivativeWeightsFunctionPointer;
using typename Superclass::SODerivativeWeightsFunctionType;
using typename Superclass::SODerivativeWeightsFunctionPointer;
using typename Superclass::ParameterIndexArrayType;
OutputPointType
TransformPoint(const InputPointType & point) const override;
void
GetJacobian(const InputPointType & inputPoint,
JacobianType & j,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
void
EvaluateJacobianWithImageGradientProduct(const InputPointType & inputPoint,
const MovingImageGradientType & movingImageGradient,
DerivativeType & imageJacobian,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
void
GetSpatialJacobian(const InputPointType & inputPoint, SpatialJacobianType & sj) const override;
void
GetSpatialHessian(const InputPointType & inputPoint, SpatialHessianType & sh) const override;
void
GetJacobianOfSpatialJacobian(const InputPointType & inputPoint,
JacobianOfSpatialJacobianType & jsj,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
void
GetJacobianOfSpatialJacobian(const InputPointType & inputPoint,
SpatialJacobianType & sj,
JacobianOfSpatialJacobianType & jsj,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
void
GetJacobianOfSpatialHessian(const InputPointType & inputPoint,
JacobianOfSpatialHessianType & jsh,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
void
GetJacobianOfSpatialHessian(const InputPointType & inputPoint,
SpatialHessianType & sh,
JacobianOfSpatialHessianType & jsh,
NonZeroJacobianIndicesType & nonZeroJacobianIndices) const override;
protected:
RecursiveBSplineTransform() = default;
~RecursiveBSplineTransform() override = default;
using typename Superclass::JacobianImageType;
using typename Superclass::JacobianPixelType;
void
ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType & nonZeroJacobianIndices,
const RegionType & supportRegion) const override;
private:
using ImplementationType =
RecursiveBSplineTransformImplementation<NDimensions, NDimensions, VSplineOrder, TScalarType>;
using RecursiveBSplineWeightFunctionType =
itk::RecursiveBSplineInterpolationWeightFunction<TScalarType, NDimensions, VSplineOrder>;
elastix::DefaultConstruct<RecursiveBSplineWeightFunctionType> m_RecursiveBSplineWeightFunction{};
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
# include "itkRecursiveBSplineTransform.hxx"
#endif
#endif /* itkRecursiveBSplineTransform_h */
elastix::DefaultConstruct
Definition elxDefaultConstruct.h:36
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::SpatialJacobianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::JacobianOfSpatialHessianType
std::vector< SpatialHessianType > JacobianOfSpatialHessianType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::JacobianOfSpatialJacobianType
std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::SpatialHessianType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::NonZeroJacobianIndicesType
std::vector< unsigned long > NonZeroJacobianIndicesType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::MovingImageGradientType
OutputCovariantVectorType MovingImageGradientType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::IndexType
typename RegionType::IndexType IndexType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::WeightsType
typename WeightsFunctionType::WeightsType WeightsType
Definition itkAdvancedBSplineDeformableTransform.h:207
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::SizeType
typename RegionType::SizeType SizeType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::OriginType
typename ImageType::PointType OriginType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::DerivativeWeightsFunctionPointer
typename DerivativeWeightsFunctionType::Pointer DerivativeWeightsFunctionPointer
Definition itkAdvancedBSplineDeformableTransform.h:211
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::SpacingType
typename ImageType::SpacingType SpacingType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::GridOffsetType
IndexType GridOffsetType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::ImageType
Image< PixelType, Self::SpaceDimension > ImageType
itk::AdvancedBSplineDeformableTransform< double, 3, 3 >::AdvancedBSplineDeformableTransform
AdvancedBSplineDeformableTransform()
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::DerivativeWeightsFunctionType
BSplineInterpolationDerivativeWeightFunction< ScalarType, Self::SpaceDimension, VSplineOrder > DerivativeWeightsFunctionType
Definition itkAdvancedBSplineDeformableTransform.h:209
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::SODerivativeWeightsFunctionType
BSplineInterpolationSecondOrderDerivativeWeightFunction< ScalarType, Self::SpaceDimension, VSplineOrder > SODerivativeWeightsFunctionType
Definition itkAdvancedBSplineDeformableTransform.h:212
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::ImagePointer
typename ImageType::Pointer ImagePointer
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::RegionType
ImageRegion< Self::SpaceDimension > RegionType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::ParameterIndexArrayType
Array< unsigned long > ParameterIndexArrayType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::SODerivativeWeightsFunctionPointer
typename SODerivativeWeightsFunctionType::Pointer SODerivativeWeightsFunctionPointer
Definition itkAdvancedBSplineDeformableTransform.h:214
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::DirectionType
typename ImageType::DirectionType DirectionType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::WeightsFunctionPointer
typename WeightsFunctionType::Pointer WeightsFunctionPointer
Definition itkAdvancedBSplineDeformableTransform.h:206
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::JacobianPixelType
typename JacobianType::ValueType JacobianPixelType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::JacobianImageType
Image< JacobianPixelType, Self::SpaceDimension > JacobianImageType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::WeightsFunctionType
BSplineInterpolationWeightFunction2< ScalarType, Self::SpaceDimension, VSplineOrder > WeightsFunctionType
Definition itkAdvancedBSplineDeformableTransform.h:205
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::ContinuousIndexType
typename WeightsFunctionType::ContinuousIndexType ContinuousIndexType
Definition itkAdvancedBSplineDeformableTransform.h:208
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::InternalMatrixType
typename SpatialJacobianType::InternalMatrixType InternalMatrixType
Definition itkAdvancedTransform.h:140
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::SpatialHessianType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
Definition itkAdvancedTransform.h:137
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::SpatialJacobianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
Definition itkAdvancedTransform.h:134
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::JacobianOfSpatialHessianType
std::vector< SpatialHessianType > JacobianOfSpatialHessianType
Definition itkAdvancedTransform.h:139
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::JacobianOfSpatialJacobianType
std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
Definition itkAdvancedTransform.h:135
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::MovingImageGradientValueType
typename MovingImageGradientType::ValueType MovingImageGradientValueType
Definition itkAdvancedTransform.h:148
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::NonZeroJacobianIndicesType
std::vector< unsigned long > NonZeroJacobianIndicesType
Definition itkAdvancedTransform.h:133
itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >::MovingImageGradientType
OutputCovariantVectorType MovingImageGradientType
Definition itkAdvancedTransform.h:147
itk::RecursiveBSplineInterpolationWeightFunction
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Definition itkRecursiveBSplineInterpolationWeightFunction.h:50
itk::RecursiveBSplineTransformImplementation
This helper class contains the actual implementation of the recursive B-spline transform.
Definition itkRecursiveBSplineTransformImplementation.h:47
itk::RecursiveBSplineTransform::GetJacobian
void GetJacobian(const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::OffsetValueType
typename GridOffsetType::OffsetValueType OffsetValueType
Definition itkRecursiveBSplineTransform.h:93
itk::RecursiveBSplineTransform::~RecursiveBSplineTransform
~RecursiveBSplineTransform() override=default
itk::RecursiveBSplineTransform::m_RecursiveBSplineWeightFunction
elastix::DefaultConstruct< RecursiveBSplineWeightFunctionType > m_RecursiveBSplineWeightFunction
Definition itkRecursiveBSplineTransform.h:196
itk::RecursiveBSplineTransform::RegionType
ImageRegion< Self::SpaceDimension > RegionType
itk::RecursiveBSplineTransform::GetJacobianOfSpatialJacobian
void GetJacobianOfSpatialJacobian(const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::Self
RecursiveBSplineTransform Self
Definition itkRecursiveBSplineTransform.h:46
itk::RecursiveBSplineTransform::GetJacobianOfSpatialHessian
void GetJacobianOfSpatialHessian(const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::itkStaticConstMacro
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder)
itk::RecursiveBSplineTransform::RecursiveBSplineWeightFunctionType
itk::RecursiveBSplineInterpolationWeightFunction< TScalarType, NDimensions, VSplineOrder > RecursiveBSplineWeightFunctionType
Definition itkRecursiveBSplineTransform.h:193
itk::RecursiveBSplineTransform::GetJacobianOfSpatialJacobian
void GetJacobianOfSpatialJacobian(const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::Superclass
AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder > Superclass
Definition itkRecursiveBSplineTransform.h:47
itk::RecursiveBSplineTransform::ComputeNonZeroJacobianIndices
void ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType &nonZeroJacobianIndices, const RegionType &supportRegion) const override
itk::RecursiveBSplineTransform::GetSpatialHessian
void GetSpatialHessian(const InputPointType &inputPoint, SpatialHessianType &sh) const override
itk::RecursiveBSplineTransform::EvaluateJacobianWithImageGradientProduct
void EvaluateJacobianWithImageGradientProduct(const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::GetJacobianOfSpatialHessian
void GetJacobianOfSpatialHessian(const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
itk::RecursiveBSplineTransform::GetSpatialJacobian
void GetSpatialJacobian(const InputPointType &inputPoint, SpatialJacobianType &sj) const override
itk::RecursiveBSplineTransform::RecursiveBSplineTransform
RecursiveBSplineTransform()=default
itk::RecursiveBSplineTransform::TransformPoint
OutputPointType TransformPoint(const InputPointType &point) const override
itk::RecursiveBSplineTransform::ImplementationType
RecursiveBSplineTransformImplementation< NDimensions, NDimensions, VSplineOrder, TScalarType > ImplementationType
Definition itkRecursiveBSplineTransform.h:190
itk::RecursiveBSplineTransform::ConstPointer
SmartPointer< const Self > ConstPointer
Definition itkRecursiveBSplineTransform.h:49
itk::RecursiveBSplineTransform::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
itk::RecursiveBSplineTransform::Pointer
SmartPointer< Self > Pointer
Definition itkRecursiveBSplineTransform.h:48
itk::RecursiveBSplineTransform::ITK_DISALLOW_COPY_AND_MOVE
ITK_DISALLOW_COPY_AND_MOVE(RecursiveBSplineTransform)
elxDefaultConstruct.h
itkAdvancedBSplineDeformableTransform.h
itkRecursiveBSplineInterpolationWeightFunction.h
itkRecursiveBSplineTransformImplementation.h
itk
Definition itkAdvancedImageToImageMetric.h:43

Generated on 1768596610 for elastix by 1.15.0 |