00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkEigenAnalysis2DImageFilter_h
00018 #define __itkEigenAnalysis2DImageFilter_h
00019
00020 #include "itkImageToImageFilter.h"
00021
00022
00023 namespace itk {
00024
00042 template <class TInputImage, class TEigenValueImage, class TEigenVectorImage >
00043 class ITK_EXPORT EigenAnalysis2DImageFilter:
00044 public ImageToImageFilter<TInputImage,TEigenValueImage>
00045 {
00046 public:
00048 typedef EigenAnalysis2DImageFilter Self;
00049 typedef ImageToImageFilter<TInputImage,TEigenValueImage> Superclass;
00050 typedef SmartPointer<Self> Pointer;
00051 typedef SmartPointer<const Self> ConstPointer;
00052
00054 itkNewMacro(Self);
00055
00057 typedef typename TEigenVectorImage::PixelType EigenVectorType;
00058 typedef typename EigenVectorType::ValueType VectorComponentType;
00059
00061 typedef typename Superclass::OutputImageRegionType OutputImageRegionType;
00062
00064 typedef TEigenValueImage EigenValueImageType;
00065 typedef typename EigenValueImageType::Pointer EigenValueImagePointer;
00066 typedef typename EigenValueImageType::RegionType EigenValueImageRegionType;
00067 typedef typename EigenValueImageType::PixelType EigenValueImagePixelType;
00068 typedef TEigenVectorImage EigenVectorImageType;
00069 typedef typename EigenVectorImageType::Pointer EigenVectorImagePointer;
00070 typedef typename EigenVectorImageType::RegionType EigenVectorImageRegionType;
00071 typedef typename EigenVectorImageType::PixelType EigenVectorImagePixelType;
00072
00074 itkStaticConstMacro(ImageDimension, unsigned int,
00075 TInputImage::ImageDimension);
00076
00079 void SetInput1( TInputImage * image1);
00080
00085 void SetInput2( TInputImage * image2);
00086
00089 void SetInput3( TInputImage * image3);
00090
00092 EigenValueImageType * GetMaxEigenValue( void );
00093
00095 EigenValueImageType * GetMinEigenValue( void );
00096
00099 EigenVectorImageType * GetMaxEigenVector( void );
00100
00102 DataObject::Pointer MakeOutput(unsigned int idx);
00103
00104 #ifdef ITK_USE_CONCEPT_CHECKING
00105
00106 itkConceptMacro(VectorComponentHasNumericTraitsCheck,
00107 (Concept::HasNumericTraits<VectorComponentType>));
00108
00110 #endif
00111
00112 protected:
00113 EigenAnalysis2DImageFilter();
00114 virtual ~EigenAnalysis2DImageFilter() {};
00115
00116 void GenerateData( void );
00117
00118 private:
00119 EigenAnalysis2DImageFilter(const Self&);
00120 void operator=(const Self&);
00121
00122 };
00123
00124 }
00125
00126 #ifndef ITK_MANUAL_INSTANTIATION
00127 #include "itkEigenAnalysis2DImageFilter.txx"
00128 #endif
00129
00130 #endif
00131
00132
00133
00134
00135