00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkHessian3DToVesselnessMeasureImageFilter_h
00018 #define __itkHessian3DToVesselnessMeasureImageFilter_h
00019
00020 #include "itkSymmetricSecondRankTensor.h"
00021 #include "itkSymmetricEigenAnalysisImageFilter.h"
00022
00023 namespace itk
00024 {
00053 template < typename TPixel >
00054 class ITK_EXPORT Hessian3DToVesselnessMeasureImageFilter : public
00055 ImageToImageFilter< Image< SymmetricSecondRankTensor< double, 3 >, 3 >,
00056 Image< TPixel, 3 > >
00057 {
00058 public:
00060 typedef Hessian3DToVesselnessMeasureImageFilter Self;
00061 typedef ImageToImageFilter<
00062 Image< SymmetricSecondRankTensor< double, 3 >, 3 >,
00063 Image< TPixel, 3 > > Superclass;
00064 typedef SmartPointer<Self> Pointer;
00065 typedef SmartPointer<const Self> ConstPointer;
00066
00067 typedef typename Superclass::InputImageType InputImageType;
00068 typedef typename Superclass::OutputImageType OutputImageType;
00069 typedef typename InputImageType::PixelType InputPixelType;
00070 typedef TPixel OutputPixelType;
00071
00073 itkStaticConstMacro(ImageDimension, unsigned int,
00074 ::itk::GetImageDimension<InputImageType>::ImageDimension);
00075 itkStaticConstMacro(InputPixelDimension, unsigned int,
00076 InputPixelType::Dimension);
00078
00079 typedef FixedArray< double, itkGetStaticConstMacro(InputPixelDimension) >
00080 EigenValueArrayType;
00081 typedef Image< EigenValueArrayType, itkGetStaticConstMacro(ImageDimension) >
00082 EigenValueImageType;
00083 typedef SymmetricEigenAnalysisImageFilter<
00084 InputImageType, EigenValueImageType > EigenAnalysisFilterType;
00085
00087 itkNewMacro(Self);
00088
00090 itkSetMacro(Alpha1, double);
00091 itkGetMacro(Alpha1, double);
00093
00095 itkSetMacro(Alpha2, double);
00096 itkGetMacro(Alpha2, double);
00098
00099 #ifdef ITK_USE_CONCEPT_CHECKING
00100
00101 itkConceptMacro(DoubleConvertibleToOutputCheck,
00102 (Concept::Convertible<double, OutputPixelType>));
00103
00105 #endif
00106
00107 protected:
00108 Hessian3DToVesselnessMeasureImageFilter();
00109 ~Hessian3DToVesselnessMeasureImageFilter() {};
00110 void PrintSelf(std::ostream& os, Indent indent) const;
00111
00113 void GenerateData( void );
00114
00115 private:
00116 Hessian3DToVesselnessMeasureImageFilter(const Self&);
00117 void operator=(const Self&);
00118
00119 typename EigenAnalysisFilterType::Pointer m_SymmetricEigenValueFilter;
00120 double m_Alpha1;
00121 double m_Alpha2;
00122 };
00123
00124 }
00125
00126 #ifndef ITK_MANUAL_INSTANTIATION
00127 #include "itkHessian3DToVesselnessMeasureImageFilter.txx"
00128 #endif
00129
00130 #endif
00131