NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMultiScaleVesselnessFilter.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 #ifndef ITKMULTISCALEVESSELNESSFILTER_H
15 #define ITKMULTISCALEVESSELNESSFILTER_H
16 
17 #include <itkImageToImageFilter.h>
18 #include <itkMacro.h>
19 #include <itkCastImageFilter.h>
20 #include <itkHessianRecursiveGaussianImageFilter.h>
21 #include <itkHessian3DToVesselnessMeasureImageFilter.h>
22 #include <math.h>
23 
24 namespace itk {
25 
30 template < class TInputImage, class TOutputImage >
31 class ITK_EXPORT MultiScaleVesselnessFilter :
32  public ImageToImageFilter< TInputImage, TOutputImage >
33 {
34 public:
37  typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
38  typedef SmartPointer<Self> Pointer;
39  typedef SmartPointer<const Self> ConstPointer;
40 
42  itkNewMacro(Self);
43 
45  itkTypeMacro(MultiScaleVesselnessFilter, ImageToImageFilter);
46 
47  itkStaticConstMacro(ImageDimension, unsigned int, TInputImage::ImageDimension);
48 
50  typedef typename Superclass::InputImageType InputImageType;
51  typedef typename Superclass::OutputImageType OutputImageType;
52  typedef typename Superclass::InputImagePointer InputImagePointer;
53  typedef typename Superclass::OutputImagePointer OutputImagePointer;
54  typedef typename Superclass::InputImageConstPointer InputImageConstPointer;
55  typedef typename InputImageType::SpacingType SpacingType;
57 
58  typedef enum
59  {
60  LINEAR = 0,
61  EXPONENTIAL = 1
62  } ScaleModeType;
63 
64 
65  itkGetConstMacro(AlphaOne, float);
66  itkGetConstMacro(AlphaTwo, float);
67  itkGetConstMacro(MinScale, float);
68  itkGetConstMacro(MaxScale, float);
69  itkGetConstMacro(ScaleMode, ScaleModeType);
70  itkSetMacro(AlphaOne, float);
71  itkSetMacro(AlphaTwo, float);
72  itkSetMacro(MinScale, float);
73  itkSetMacro(MaxScale, float);
74  itkSetMacro(ScaleMode, ScaleModeType);
75 
76 protected:
79  void PrintSelf(std::ostream&os, Indent indent) const;
80 
81  typedef itk::CastImageFilter< InputImageType, OutputImageType > CastFilterType;
82  //typedef itk::CastImageFilter< VesselImageType, OutputImageType > CastOutFilterType;
83  typedef itk::HessianRecursiveGaussianImageFilter< OutputImageType > HessianFilterType;
84  typedef itk::Hessian3DToVesselnessMeasureImageFilter< OutputPixelType > VesselnessMeasureFilterType;
85 
86 
88  virtual void GenerateData();
89 
90 private:
91  MultiScaleVesselnessFilter(const Self &); //purposely not implemented
92  void operator=(const Self &); //purposely not implemented
93 
94 
95  float m_AlphaOne;
96  float m_AlphaTwo;
97  float m_MinScale;
98  float m_MaxScale;
99  ScaleModeType m_ScaleMode;
100 };
101 
102 }
103 
104 #ifndef ITK_MANUAL_INSTANTIATION
105 #include "itkMultiScaleVesselnessFilter.txx"
106 #endif
107 
108 
109 #endif // ITKMULTISCALEVESSELNESSFILTER_H
MultiScaleVesselnessFilter Self
Definition: itkMultiScaleVesselnessFilter.h:36
Superclass::InputImageConstPointer InputImageConstPointer
Definition: itkMultiScaleVesselnessFilter.h:54
itk::Hessian3DToVesselnessMeasureImageFilter< OutputPixelType > VesselnessMeasureFilterType
Definition: itkMultiScaleVesselnessFilter.h:84
ScaleModeType
Definition: itkMultiScaleVesselnessFilter.h:58
OutputImageType::PixelType OutputPixelType
Definition: itkMultiScaleVesselnessFilter.h:56
Superclass::InputImageType InputImageType
Definition: itkMultiScaleVesselnessFilter.h:50
Definition: niftkITKAffineResampleImage.cxx:74
SmartPointer< Self > Pointer
Definition: itkMultiScaleVesselnessFilter.h:38
Gives tha maximum filter response using Sato's filter (Sato et al, MedIA 1998) per voxel...
Definition: itkMultiScaleVesselnessFilter.h:31
Superclass::OutputImagePointer OutputImagePointer
Definition: itkMultiScaleVesselnessFilter.h:53
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkMultiScaleVesselnessFilter.h:37
itk::CastImageFilter< InputImageType, OutputImageType > CastFilterType
Definition: itkMultiScaleVesselnessFilter.h:81
InputImageType::SpacingType SpacingType
Definition: itkMultiScaleVesselnessFilter.h:55
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
SmartPointer< const Self > ConstPointer
Definition: itkMultiScaleVesselnessFilter.h:39
Superclass::OutputImageType OutputImageType
Definition: itkMultiScaleVesselnessFilter.h:51
Definition: itkImageRegistrationFactory.h:84
itk::HessianRecursiveGaussianImageFilter< OutputImageType > HessianFilterType
Definition: itkMultiScaleVesselnessFilter.h:83
Superclass::InputImagePointer InputImagePointer
Definition: itkMultiScaleVesselnessFilter.h:52
~MultiScaleVesselnessFilter()
Definition: itkMultiScaleVesselnessFilter.h:78