Loading...
Searching...
No Matches
itkCyclicBSplineDeformableTransform.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 itkCyclicBSplineDeformableTransform_h
#define itkCyclicBSplineDeformableTransform_h
#include "itkAdvancedTransform.h"
#include "itkImage.h"
#include "itkImageRegion.h"
#include "itkBSplineInterpolationWeightFunction2.h"
#include "itkBSplineInterpolationDerivativeWeightFunction.h"
#include "itkBSplineInterpolationSecondOrderDerivativeWeightFunction.h"
#include "itkAdvancedBSplineDeformableTransform.h"
#include "itkCyclicBSplineDeformableTransform.h"
namespace itk
{
template <class TScalarType = double, // Data type for scalars
unsigned int NDimensions = 3, // Number of dimensions
unsigned int VSplineOrder = 3>
// Spline order
class ITK_TEMPLATE_EXPORT CyclicBSplineDeformableTransform
: public AdvancedBSplineDeformableTransform<TScalarType, NDimensions, VSplineOrder>
{
public:
ITK_DISALLOW_COPY_AND_MOVE(CyclicBSplineDeformableTransform);
using Self = CyclicBSplineDeformableTransform;
using Superclass = AdvancedBSplineDeformableTransform<TScalarType, NDimensions, VSplineOrder>;
using Pointer = SmartPointer<Self>;
using ConstPointer = SmartPointer<const Self>;
itkNewMacro(Self);
itkTypeMacro(CyclicBSplineDeformableTransform, AdvancedBSplineDeformableTransform);
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder);
using typename Superclass::JacobianType;
using typename Superclass::SpatialJacobianType;
using typename Superclass::NonZeroJacobianIndicesType;
using typename Superclass::JacobianOfSpatialJacobianType;
using typename Superclass::SpatialHessianType;
using typename Superclass::JacobianOfSpatialHessianType;
using typename Superclass::InternalMatrixType;
using typename Superclass::ParametersType;
using typename Superclass::NumberOfParametersType;
using PixelType = typename ParametersType::ValueType;
using ImageType = Image<PixelType, Self::SpaceDimension>;
using ImagePointer = typename ImageType::Pointer;
using typename Superclass::RegionType;
using IndexType = typename RegionType::IndexType;
using SizeType = typename RegionType::SizeType;
using SpacingType = typename ImageType::SpacingType;
using DirectionType = typename ImageType::DirectionType;
using OriginType = typename ImageType::PointType;
using GridOffsetType = typename RegionType::IndexType;
using typename Superclass::InputPointType;
using typename Superclass::OutputPointType;
using typename Superclass::WeightsType;
using typename Superclass::ParameterIndexArrayType;
using typename Superclass::ContinuousIndexType;
using typename Superclass::ScalarType;
using typename Superclass::JacobianImageType;
using typename Superclass::JacobianPixelType;
using typename Superclass::WeightsFunctionType;
using RedWeightsFunctionType =
BSplineInterpolationWeightFunction2<ScalarType, Self::SpaceDimension - 1, VSplineOrder>;
using RedContinuousIndexType = typename RedWeightsFunctionType::ContinuousIndexType;
void
SetGridRegion(const RegionType & region) override;
OutputPointType
TransformPoint(const InputPointType & point) const override;
virtual void
GetJacobian(const InputPointType & inputPoint, WeightsType & weights, ParameterIndexArrayType & indices) const;
void
GetSpatialJacobian(const InputPointType & inputPoint, SpatialJacobianType & sj) const override;
protected:
CyclicBSplineDeformableTransform();
~CyclicBSplineDeformableTransform() override = default;
void
ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType & nonZeroJacobianIndices,
const RegionType & supportRegion) const override;
bool
InsideValidRegion(const ContinuousIndexType & index) const override;
virtual void
SplitRegion(const RegionType & imageRegion,
const RegionType & inRegion,
RegionType & outRegion1,
RegionType & outRegion2) const;
private:
// Private using-declaration, to avoid `-Woverloaded-virtual` warnings from GCC (GCC 11.4) or clang (macos-12).
using Superclass::GetJacobian;
};
} // namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
# include "itkCyclicBSplineDeformableTransform.hxx"
#endif
#endif /* itkCyclicBSplineDeformableTransform_h */
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::SpatialJacobianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >::NonZeroJacobianIndicesType
std::vector< unsigned long > NonZeroJacobianIndicesType
itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::WeightsType
typename WeightsFunctionType::WeightsType WeightsType
Definition itkAdvancedBSplineDeformableTransform.h:207
itk::AdvancedBSplineDeformableTransform< double, 3, 3 >::AdvancedBSplineDeformableTransform
AdvancedBSplineDeformableTransform()
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 >::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 >::GetJacobian
void GetJacobian(const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nzji) const override
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 >::NonZeroJacobianIndicesType
std::vector< unsigned long > NonZeroJacobianIndicesType
Definition itkAdvancedTransform.h:133
itk::BSplineInterpolationWeightFunction2
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Definition itkBSplineInterpolationWeightFunction2.h:45
itk::BSplineInterpolationWeightFunction2< ScalarType, Self::SpaceDimension - 1, VSplineOrder >::ContinuousIndexType
ContinuousIndex< ScalarType, VSpaceDimension > ContinuousIndexType
itk::CyclicBSplineDeformableTransform::ImageType
Image< PixelType, Self::SpaceDimension > ImageType
Definition itkCyclicBSplineDeformableTransform.h:80
itk::CyclicBSplineDeformableTransform::RegionType
ImageRegion< Self::SpaceDimension > RegionType
itk::CyclicBSplineDeformableTransform::Superclass
AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder > Superclass
Definition itkCyclicBSplineDeformableTransform.h:52
itk::CyclicBSplineDeformableTransform::ImagePointer
typename ImageType::Pointer ImagePointer
Definition itkCyclicBSplineDeformableTransform.h:81
itk::CyclicBSplineDeformableTransform::GridOffsetType
typename RegionType::IndexType GridOffsetType
Definition itkCyclicBSplineDeformableTransform.h:89
itk::CyclicBSplineDeformableTransform::DirectionType
typename ImageType::DirectionType DirectionType
Definition itkCyclicBSplineDeformableTransform.h:87
itk::CyclicBSplineDeformableTransform::CyclicBSplineDeformableTransform
CyclicBSplineDeformableTransform()
itk::CyclicBSplineDeformableTransform::ConstPointer
SmartPointer< const Self > ConstPointer
Definition itkCyclicBSplineDeformableTransform.h:54
itk::CyclicBSplineDeformableTransform::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
itk::CyclicBSplineDeformableTransform::SizeType
typename RegionType::SizeType SizeType
Definition itkCyclicBSplineDeformableTransform.h:85
itk::CyclicBSplineDeformableTransform::RedWeightsFunctionType
BSplineInterpolationWeightFunction2< ScalarType, Self::SpaceDimension - 1, VSplineOrder > RedWeightsFunctionType
Definition itkCyclicBSplineDeformableTransform.h:99
itk::CyclicBSplineDeformableTransform::Pointer
SmartPointer< Self > Pointer
Definition itkCyclicBSplineDeformableTransform.h:53
itk::CyclicBSplineDeformableTransform::itkStaticConstMacro
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder)
itk::CyclicBSplineDeformableTransform::SpacingType
typename ImageType::SpacingType SpacingType
Definition itkCyclicBSplineDeformableTransform.h:86
itk::CyclicBSplineDeformableTransform::IndexType
typename RegionType::IndexType IndexType
Definition itkCyclicBSplineDeformableTransform.h:84
itk::CyclicBSplineDeformableTransform::RedContinuousIndexType
typename RedWeightsFunctionType::ContinuousIndexType RedContinuousIndexType
Definition itkCyclicBSplineDeformableTransform.h:101
itk::CyclicBSplineDeformableTransform::TransformPoint
OutputPointType TransformPoint(const InputPointType &point) const override
itk::CyclicBSplineDeformableTransform::SplitRegion
virtual void SplitRegion(const RegionType &imageRegion, const RegionType &inRegion, RegionType &outRegion1, RegionType &outRegion2) const
itk::CyclicBSplineDeformableTransform::ParameterIndexArrayType
Array< unsigned long > ParameterIndexArrayType
itk::CyclicBSplineDeformableTransform::GetJacobian
virtual void GetJacobian(const InputPointType &inputPoint, WeightsType &weights, ParameterIndexArrayType &indices) const
itk::CyclicBSplineDeformableTransform::OriginType
typename ImageType::PointType OriginType
Definition itkCyclicBSplineDeformableTransform.h:88
itk::CyclicBSplineDeformableTransform::Self
CyclicBSplineDeformableTransform Self
Definition itkCyclicBSplineDeformableTransform.h:51
itk::CyclicBSplineDeformableTransform::~CyclicBSplineDeformableTransform
~CyclicBSplineDeformableTransform() override=default
itk::CyclicBSplineDeformableTransform::SetGridRegion
void SetGridRegion(const RegionType &region) override
itk::CyclicBSplineDeformableTransform::InsideValidRegion
bool InsideValidRegion(const ContinuousIndexType &index) const override
itk::CyclicBSplineDeformableTransform::GetSpatialJacobian
void GetSpatialJacobian(const InputPointType &inputPoint, SpatialJacobianType &sj) const override
itk::CyclicBSplineDeformableTransform::ComputeNonZeroJacobianIndices
void ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType &nonZeroJacobianIndices, const RegionType &supportRegion) const override
itk::CyclicBSplineDeformableTransform::ITK_DISALLOW_COPY_AND_MOVE
ITK_DISALLOW_COPY_AND_MOVE(CyclicBSplineDeformableTransform)
itkAdvancedBSplineDeformableTransform.h
itkAdvancedTransform.h
itkBSplineInterpolationDerivativeWeightFunction.h
itkBSplineInterpolationSecondOrderDerivativeWeightFunction.h
itkBSplineInterpolationWeightFunction2.h
itkCyclicBSplineDeformableTransform.h
itk
Definition itkAdvancedImageToImageMetric.h:43

Generated on 1768596610 for elastix by 1.15.0 |