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 {
00072 template < typename TPixel >
00073 class ITK_EXPORT Hessian3DToVesselnessMeasureImageFilter : public
00074 ImageToImageFilter< Image< SymmetricSecondRankTensor< double, 3 >, 3 >,
00075 Image< TPixel, 3 > >
00076 {
00077 public:
00079 typedef Hessian3DToVesselnessMeasureImageFilter Self;
00080 typedef ImageToImageFilter<
00081 Image< SymmetricSecondRankTensor< double, 3 >, 3 >,
00082 Image< TPixel, 3 > > Superclass;
00083 typedef SmartPointer<Self> Pointer;
00084 typedef SmartPointer<const Self> ConstPointer;
00085
00086 typedef typename Superclass::InputImageType InputImageType;
00087 typedef typename Superclass::OutputImageType OutputImageType;
00088 typedef typename InputImageType::PixelType InputPixelType;
00089 typedef TPixel OutputPixelType;
00090
00092 itkStaticConstMacro(ImageDimension, unsigned int,
00093 ::itk::GetImageDimension<InputImageType>::ImageDimension);
00094 itkStaticConstMacro(InputPixelDimension, unsigned int,
00095 InputPixelType::Dimension);
00097
00098 typedef FixedArray< double, itkGetStaticConstMacro(InputPixelDimension) >
00099 EigenValueArrayType;
00100 typedef Image< EigenValueArrayType, itkGetStaticConstMacro(ImageDimension) >
00101 EigenValueImageType;
00102 typedef SymmetricEigenAnalysisImageFilter<
00103 InputImageType, EigenValueImageType > EigenAnalysisFilterType;
00104
00106 itkNewMacro(Self);
00107
00110 itkSetMacro(Alpha1, double);
00111 itkGetMacro(Alpha1, double);
00113
00116 itkSetMacro(Alpha2, double);
00117 itkGetMacro(Alpha2, double);
00119
00120 #ifdef ITK_USE_CONCEPT_CHECKING
00121
00122 itkConceptMacro(DoubleConvertibleToOutputCheck,
00123 (Concept::Convertible<double, OutputPixelType>));
00124
00126 #endif
00127
00128 protected:
00129 Hessian3DToVesselnessMeasureImageFilter();
00130 ~Hessian3DToVesselnessMeasureImageFilter() {};
00131 void PrintSelf(std::ostream& os, Indent indent) const;
00132
00134 void GenerateData( void );
00135
00136 private:
00137 Hessian3DToVesselnessMeasureImageFilter(const Self&);
00138 void operator=(const Self&);
00139
00140 typename EigenAnalysisFilterType::Pointer m_SymmetricEigenValueFilter;
00141 double m_Alpha1;
00142 double m_Alpha2;
00143 };
00144
00145 }
00146
00147 #ifndef ITK_MANUAL_INSTANTIATION
00148 #include "itkHessian3DToVesselnessMeasureImageFilter.txx"
00149 #endif
00150
00151 #endif
00152