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
00076 typedef itk::FixedArray< double, InputPixelType::Dimension >
00077 EigenValueArrayType;
00078 typedef itk::Image< EigenValueArrayType, InputImageType::ImageDimension >
00079 EigenValueImageType;
00080 typedef SymmetricEigenAnalysisImageFilter<
00081 InputImageType, EigenValueImageType > EigenAnalysisFilterType;
00082
00084 itkNewMacro(Self);
00085
00087 itkSetMacro(Alpha1, double);
00088 itkGetMacro(Alpha1, double);
00089
00091 itkSetMacro(Alpha2, double);
00092 itkGetMacro(Alpha2, double);
00093
00094
00095 protected:
00096 Hessian3DToVesselnessMeasureImageFilter();
00097 ~Hessian3DToVesselnessMeasureImageFilter() {};
00098 void PrintSelf(std::ostream& os, Indent indent) const;
00099
00101 void GenerateData( void );
00102
00103 private:
00104 Hessian3DToVesselnessMeasureImageFilter(const Self&);
00105 void operator=(const Self&);
00106
00107 typename EigenAnalysisFilterType::Pointer m_SymmetricEigenValueFilter;
00108 double m_Alpha1;
00109 double m_Alpha2;
00110 };
00111
00112 }
00113
00114 #ifndef ITK_MANUAL_INSTANTIATION
00115 #include "itkHessian3DToVesselnessMeasureImageFilter.txx"
00116 #endif
00117
00118 #endif