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 itkTypeMacro( Hessian3DToVesselnessMeasureImageFilter, ImageToImageFilter );
00107
00109 itkNewMacro(Self);
00110
00113 itkSetMacro(Alpha1, double);
00114 itkGetMacro(Alpha1, double);
00116
00119 itkSetMacro(Alpha2, double);
00120 itkGetMacro(Alpha2, double);
00122
00123 #ifdef ITK_USE_CONCEPT_CHECKING
00124
00125 itkConceptMacro(DoubleConvertibleToOutputCheck,
00126 (Concept::Convertible<double, OutputPixelType>));
00127
00129 #endif
00130
00131 protected:
00132 Hessian3DToVesselnessMeasureImageFilter();
00133 ~Hessian3DToVesselnessMeasureImageFilter() {};
00134 void PrintSelf(std::ostream& os, Indent indent) const;
00135
00137 void GenerateData( void );
00138
00139 private:
00140 Hessian3DToVesselnessMeasureImageFilter(const Self&);
00141 void operator=(const Self&);
00142
00143 typename EigenAnalysisFilterType::Pointer m_SymmetricEigenValueFilter;
00144 double m_Alpha1;
00145 double m_Alpha2;
00146 };
00147
00148 }
00149
00150 #ifndef ITK_MANUAL_INSTANTIATION
00151 #include "itkHessian3DToVesselnessMeasureImageFilter.txx"
00152 #endif
00153
00154 #endif
00155