Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkDeformationFieldJacobianDeterminantFilter_h
00018 #define __itkDeformationFieldJacobianDeterminantFilter_h
00019
00020 #include "itkConstNeighborhoodIterator.h"
00021 #include "itkNeighborhoodIterator.h"
00022 #include "itkImageToImageFilter.h"
00023 #include "itkImage.h"
00024 #include "itkVector.h"
00025 #include "vnl/vnl_matrix.h"
00026 #include "vnl/vnl_det.h"
00027
00028
00029
00030 #include "itkDisplacementFieldJacobianDeterminantFilter.h"
00031
00032 namespace itk
00033 {
00073 template < typename TInputImage,
00074 typename TRealType = float,
00075 typename TOutputImage = Image< TRealType,
00076 ::itk::GetImageDimension<TInputImage>::ImageDimension >
00077 >
00078 class ITK_EXPORT DeformationFieldJacobianDeterminantFilter :
00079 public DisplacementFieldJacobianDeterminantFilter< TInputImage,TRealType,TOutputImage>
00080 {
00081 public:
00083 typedef DeformationFieldJacobianDeterminantFilter Self;
00084 typedef DisplacementFieldJacobianDeterminantFilter<
00085 TInputImage,TRealType,TOutputImage>
00086 Superclass;
00087 typedef SmartPointer<Self> Pointer;
00088 typedef SmartPointer<const Self> ConstPointer;
00089
00091 itkNewMacro(Self);
00092
00094 itkTypeMacro(DeformationFieldJacobianDeterminantFilter, DisplacementFieldJacobianDeterminantFilter);
00095
00098 typedef typename TOutputImage::PixelType OutputPixelType;
00099 typedef typename TInputImage::PixelType InputPixelType;
00100
00102 typedef TInputImage InputImageType;
00103 typedef TOutputImage OutputImageType;
00104 typedef typename InputImageType::Pointer InputImagePointer;
00105 typedef typename OutputImageType::Pointer OutputImagePointer;
00106
00108 itkStaticConstMacro(ImageDimension, unsigned int,
00109 TOutputImage::ImageDimension);
00110
00112 itkStaticConstMacro(VectorDimension, unsigned int,
00113 InputPixelType::Dimension);
00114
00116 typedef TRealType RealType;
00117 typedef Vector<
00118 TRealType, ::itk::GetVectorDimension<InputPixelType>::VectorDimension>
00119 RealVectorType;
00120 typedef Image<
00121 RealVectorType, ::itk::GetImageDimension<TInputImage>::ImageDimension>
00122 RealVectorImageType;
00123
00126 typedef ConstNeighborhoodIterator<RealVectorImageType> ConstNeighborhoodIteratorType;
00127 typedef typename ConstNeighborhoodIteratorType::RadiusType RadiusType;
00128
00130 typedef typename Superclass::OutputImageRegionType OutputImageRegionType;
00131
00132 void PrintSelf(std::ostream& os, Indent indent) const;
00133 virtual TRealType EvaluateAtNeighborhood(const ConstNeighborhoodIteratorType &it) const;
00134 protected:
00135 DeformationFieldJacobianDeterminantFilter();
00136 virtual ~DeformationFieldJacobianDeterminantFilter() {}
00137
00138 private:
00139 DeformationFieldJacobianDeterminantFilter(const Self&);
00140 void operator=(const Self&);
00141 };
00142
00143 }
00144
00145 #ifndef ITK_MANUAL_INSTANTIATION
00146 #include "itkDeformationFieldJacobianDeterminantFilter.txx"
00147 #endif
00148
00149 #endif
00150