Computer Assited Medical Intervention Tool Kit  version 4.1
AnisotropicDiffusion.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2018 Univ. Grenoble Alpes, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 #ifndef ANISOTROPICDIFFUSION_H
26 #define ANISOTROPICDIFFUSION_H
27 
28 #include <QObject>
29 #include <Action.h>
30 #include <ImageComponent.h>
31 #include <ActionWidget.h>
32 
33 #include "ITKFilterAPI.h"
34 
44  Q_OBJECT
45 
46 public:
48  enum AnisoDiffType {GRADIENT, CURVATURE};
49 
50  // prefers Q_ENUM to Q_ENUMS if possible (Qt >= 5.5)
51  Q_ENUMS(AnisoDiffType)
52 
53 
55 
57  virtual ~AnisotropicDiffusion();
58 
59 public slots:
65  virtual ApplyStatus apply();
66 
72  AnisoDiffType getDiffusionType();
73 
74 
75 private:
77  virtual void process(camitk::ImageComponent*);
78 
79  vtkSmartPointer<vtkImageData> implementProcess(vtkSmartPointer<vtkImageData> img);
80 
81  template <class InputPixelType, class OutputPixelType, const int dim>
82  vtkSmartPointer<vtkImageData> itkProcess(vtkSmartPointer<vtkImageData> img);
83 
84  template <class InputPixelType, class OutputPixelType, const int dim>
85  vtkSmartPointer<vtkImageData> itkProcessGradientAnisotropicDiffusion(vtkSmartPointer<vtkImageData> img);
86 
87  template <class InputPixelType, class OutputPixelType, const int dim>
88  vtkSmartPointer<vtkImageData> itkProcessCurvatureAnisotropicDiffusion(vtkSmartPointer<vtkImageData> img);
89 
90 protected:
93  double conductance;
94 };
95 
96 Q_DECLARE_METATYPE(AnisotropicDiffusion::AnisoDiffType)
97 
98 #endif // ANISOTROPICDIFFUSION_H
#define ITKFILTER_API
Definition: ITKFilterAPI.h:8
int numberOfIterations
Definition: AnisotropicDiffusion.h:92
Perform a anisotropic diffusion on the ImageComponent.
Definition: AnisotropicDiffusion.h:43
virtual ApplyStatus apply()=0
This method is called when the action has to be applied on the target list (get the target lists usin...
Action class is an abstract class that enables you to build a action (generally on a component)...
Definition: Action.h:207
This class describes what is a generic Action extension.
Definition: ActionExtension.h:59
The manager of the Image Volume data.
Definition: ImageComponent.h:73
ApplyStatus
describes what happened during the application of an algorithm (i.e. results of the apply method) ...
Definition: Action.h:223
bool keepOrgVoxelType
Definition: AnisotropicDiffusion.h:91
Definition: AnisotropicDiffusion.h:48
AnisoDiffType
Define the possible implementations of Gaussian filtering.
Definition: AnisotropicDiffusion.h:48
double conductance
Definition: AnisotropicDiffusion.h:93