36#ifndef itkMultiOrderBSplineDecompositionImageFilter_h
37#define itkMultiOrderBSplineDecompositionImageFilter_h
41#include "itkImageLinearIteratorWithIndex.h"
42#include <vnl/vnl_matrix.h>
44#include "itkImageToImageFilter.h"
80template <
class TInputImage,
class TOutputImage>
82 :
public ImageToImageFilter<TInputImage, TOutputImage>
89 using Superclass = ImageToImageFilter<TInputImage, TOutputImage>;
100 using typename Superclass::InputImageType;
101 using typename Superclass::InputImagePointer;
102 using typename Superclass::InputImageConstPointer;
103 using typename Superclass::OutputImagePointer;
105 using CoeffType =
typename itk::NumericTraits<typename TOutputImage::PixelType>::RealType;
125 return m_SplineOrder[dimension];
129#ifdef ITK_USE_CONCEPT_CHECKING
131 itkConceptMacro(DimensionCheck, (Concept::SameDimension<ImageDimension, OutputImageDimension>));
132 itkConceptMacro(InputConvertibleToOutputCheck,
133 (Concept::Convertible<typename TInputImage::PixelType, typename TOutputImage::PixelType>));
134 itkConceptMacro(DoubleConvertibleToOutputCheck, (Concept::Convertible<double, typename TOutputImage::PixelType>));
142 PrintSelf(std::ostream & os, Indent indent)
const override;
159 unsigned int m_SplineOrder[ImageDimension];
160 double m_SplinePoles[3];
202#ifndef ITK_MANUAL_INSTANTIATION
203# include "itkMultiOrderBSplineDecompositionImageFilter.hxx"
Calculates the B-Spline coefficients of an image. Spline order may be per dimension from 0 to 5 per.
void GenerateInputRequestedRegion() override
itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension)
typename itk::NumericTraits< typename TOutputImage::PixelType >::RealType CoeffType
ImageToImageFilter< TInputImage, TOutputImage > Superclass
unsigned int m_IteratorDirection
void SetSplineOrder(unsigned int order)
virtual void SetPoles(unsigned int dimension)
virtual void SetInitialAntiCausalCoefficient(double z)
MultiOrderBSplineDecompositionImageFilter()
SmartPointer< const Self > ConstPointer
void CopyScratchToCoefficients(OutputLinearIterator &)
ImageLinearIteratorWithIndex< TOutputImage > OutputLinearIterator
~MultiOrderBSplineDecompositionImageFilter() override=default
virtual void SetInitialCausalCoefficient(double z)
void SetSplineOrder(unsigned int dimension, unsigned int order)
void CopyCoefficientsToScratch(OutputLinearIterator &)
virtual bool DataToCoefficients1D()
std::vector< CoeffType > m_Scratch
TInputImage::SizeType m_DataLength
void PrintSelf(std::ostream &os, Indent indent) const override
void GetSplineOrder(unsigned int dimension)
void EnlargeOutputRequestedRegion(DataObject *output) override
void DataToCoefficientsND()
itkStaticConstMacro(ImageDimension, unsigned int, TInputImage::ImageDimension)
void GenerateData() override
ITK_DISALLOW_COPY_AND_MOVE(MultiOrderBSplineDecompositionImageFilter)