21 #ifndef __itkMultiOrderBSplineDecompositionImageFilter_h
22 #define __itkMultiOrderBSplineDecompositionImageFilter_h
26 #include "itkImageLinearIteratorWithIndex.h"
27 #include "vnl/vnl_matrix.h"
29 #include "itkImageToImageFilter.h"
65 template <
class TInputImage,
class TOutputImage>
67 public ImageToImageFilter<TInputImage,TOutputImage>
72 typedef ImageToImageFilter<TInputImage,TOutputImage>
Superclass;
88 typedef typename itk::NumericTraits<typename TOutputImage::PixelType>::RealType
CoeffType;
91 itkStaticConstMacro(ImageDimension,
unsigned int,TInputImage::ImageDimension);
92 itkStaticConstMacro(OutputImageDimension,
unsigned int,
93 TOutputImage::ImageDimension);
100 void SetSplineOrder(
unsigned int order );
101 void SetSplineOrder(
unsigned int dimension,
unsigned int order );
102 void GetSplineOrder(
unsigned int dimension )
104 return m_SplineOrder[ dimension ];
108 #ifdef ITK_USE_CONCEPT_CHECKING
110 itkConceptMacro(DimensionCheck,
111 (Concept::SameDimension<ImageDimension, OutputImageDimension>));
112 itkConceptMacro(InputConvertibleToOutputCheck,
113 (Concept::Convertible<
typename TInputImage::PixelType,
114 typename TOutputImage::PixelType>));
115 itkConceptMacro(DoubleConvertibleToOutputCheck,
116 (Concept::Convertible<double, typename TOutputImage::PixelType>));
123 void PrintSelf(std::ostream& os, Indent indent)
const;
125 void GenerateData( );
128 void GenerateInputRequestedRegion();
131 void EnlargeOutputRequestedRegion( DataObject *output );
137 unsigned int m_SplineOrder[ImageDimension];
138 double m_SplinePoles[3];
146 void operator=(
const Self& );
149 virtual void SetPoles(
unsigned int dimension );
152 virtual bool DataToCoefficients1D();
156 void DataToCoefficientsND();
159 virtual void SetInitialCausalCoefficient(
double z);
162 virtual void SetInitialAntiCausalCoefficient(
double z);
165 void CopyImageToImage();
178 #ifndef ITK_MANUAL_INSTANTIATION
179 #include "itkMultiOrderBSplineDecompositionImageFilter.txx"