Computer Assited Medical Intervention Tool Kit  version 4.1
MorphologicalOperators.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 MORPHOLOGICALOPERATORS_H
26 #define MORPHOLOGICALOPERATORS_H
27 
28 #include <QObject>
29 #include <Action.h>
30 #include <ImageComponent.h>
31 #include <ActionWidget.h>
32 
33 #include "ITKFilterAPI.h"
34 
35 #include <itkImage.h>
36 
46  Q_OBJECT
47 
48 public:
50  enum MorphoType {GREY_LEVEL, BINARY};
51 
53 
54 
55  enum MorphoOperation {EROSION, DILATION, OPENING, CLOSING};
56 
58 
59 
61 
63  MorphoType getMorphoType() const ;
64 
66  MorphoOperation getMorphoOperation() const ;
67 
69  virtual ~MorphologicalOperators();
70 
71 public slots:
77  virtual ApplyStatus apply();
78 
79 
80 private:
82  virtual void process(camitk::ImageComponent*);
83 
84 private:
85  vtkSmartPointer<vtkImageData> implementProcess(vtkSmartPointer<vtkImageData> img);
86 
87  template <class InputPixelType, class OutputPixelType, const int dim>
88  vtkSmartPointer<vtkImageData> itkProcess(vtkSmartPointer<vtkImageData> img);
89 
90  template <class InputPixelType, class OutputPixelType, const int dim>
91  vtkSmartPointer<vtkImageData> binaryErosionFilter(vtkSmartPointer<vtkImageData> img);
92  template <class InputPixelType, class OutputPixelType, const int dim>
93  vtkSmartPointer<vtkImageData> binaryDilationFilter(vtkSmartPointer<vtkImageData> img);
94  template <class InputPixelType, class OutputPixelType, const int dim>
95  vtkSmartPointer<vtkImageData> binaryOpeningFilter(vtkSmartPointer<vtkImageData> img);
96  template <class InputPixelType, class OutputPixelType, const int dim>
97  vtkSmartPointer<vtkImageData> binaryClosureFilter(vtkSmartPointer<vtkImageData> img);
98 
99  template <class InputPixelType, class OutputPixelType, const int dim>
100  vtkSmartPointer<vtkImageData> greyLevelErosionFilter(vtkSmartPointer<vtkImageData> img);
101  template <class InputPixelType, class OutputPixelType, const int dim>
102  vtkSmartPointer<vtkImageData> greyLevelDilationFilter(vtkSmartPointer<vtkImageData> img);
103  template <class InputPixelType, class OutputPixelType, const int dim>
104  vtkSmartPointer<vtkImageData> greyLevelOpeningFilter(vtkSmartPointer<vtkImageData> img);
105  template <class InputPixelType, class OutputPixelType, const int dim>
106  vtkSmartPointer<vtkImageData> greyLevelClosureFilter(vtkSmartPointer<vtkImageData> img);
107 
108 
109 
110 protected:
112  MorphoType typeOfOperation;
113  MorphoOperation operation;
114  int structuringElementSize;
115 
116  QString suffix;
117 
118 };
119 
120 Q_DECLARE_METATYPE(MorphologicalOperators::MorphoType)
121 Q_DECLARE_METATYPE(MorphologicalOperators::MorphoOperation)
122 #endif // MORPHOLOGICALOPERATORS_H
MorphologicalOperators::getMorphoType
MorphoType getMorphoType() const
Get the morphological type of operation.
Definition: MorphologicalOperators.cpp:79
camitk::Action::setFamily
void setFamily(QString family)
the name of the family in which this action is associated
Definition: Action.cpp:129
MorphologicalOperators::apply
virtual ApplyStatus apply()
this method is automatically called when the action is triggered.
Definition: MorphologicalOperators.cpp:88
MorphologicalOperators::binaryErosionFilter
vtkSmartPointer< vtkImageData > binaryErosionFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:179
MorphologicalOperators::~MorphologicalOperators
virtual ~MorphologicalOperators()
Default Destructor.
Definition: MorphologicalOperators.cpp:75
camitk::Action::SUCCESS
@ SUCCESS
everything went according to plan
Definition: Action.h:247
MorphologicalOperators::greyLevelDilationFilter
vtkSmartPointer< vtkImageData > greyLevelDilationFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:538
ITKFilterAPI.h
MorphologicalOperators::structuringElementSize
int structuringElementSize
Definition: MorphologicalOperators.h:137
camitk::Property::setEnumTypeName
void setEnumTypeName(QString)
if the property's type is an enum, set the name of the registered Qt Enum.
Definition: Property.cpp:109
MorphologicalOperators::MorphologicalOperators
MorphologicalOperators(camitk::ActionExtension *)
Default Constructor.
Definition: MorphologicalOperators.cpp:44
camitk::Action::ApplyStatus
ApplyStatus
Definition: Action.h:246
camitk::Action::setName
void setName(QString name)
Definition: Action.cpp:113
MorphologicalOperators::getMorphoOperation
MorphoOperation getMorphoOperation() const
Get the morphological operation selected.
Definition: MorphologicalOperators.cpp:83
camitk::Action::setComponent
void setComponent(QString component)
the name of the component class that can be used by this action
Definition: Action.cpp:124
camitk::ItkProgressObserver::Pointer
itk::SmartPointer< Self > Pointer
Definition: ItkProgressObserver.h:96
camitk::ImageComponent
The manager of the Image Volume data. An image volume data has no concrete 3D representation,...
Definition: ImageComponent.h:73
camitk::Action::getTargets
const ComponentList getTargets() const
the currently selected and valid (regarding the component property) components, for which this action...
Definition: Action.cpp:159
Action.h
MorphologicalOperators::BINARY
@ BINARY
Definition: MorphologicalOperators.h:96
MorphologicalOperators::OPENING
@ OPENING
Definition: MorphologicalOperators.h:78
itkImageToVTKImageFilter.h
camitk::Property
This class describes a property that can be used in components and actions or any class that needs to...
Definition: Property.h:314
ActionWidget.h
camitk::Action::addTag
void addTag(QString tag)
add a tag to the tags list of this action
Definition: Action.cpp:134
MorphologicalOperators::greyLevelClosureFilter
vtkSmartPointer< vtkImageData > greyLevelClosureFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:602
MorphologicalOperators::MorphoType
MorphoType
Define the possible types of morphological operations.
Definition: MorphologicalOperators.h:73
MorphologicalOperators::process
virtual void process(camitk::ImageComponent *)
helper method to simplify the target component processing
Definition: MorphologicalOperators.cpp:96
camitk::Action
Action class is an abstract class that enables you to build a action (generally on a component)....
Definition: Action.h:230
Property.h
camitk::Property::setAttribute
void setAttribute(const QString &attribute, const QVariant &value)
Set a given property for this attribute.
Definition: Property.cpp:184
camitk::Action::apply
virtual ApplyStatus apply()=0
This method is called when the action has to be applied on the target list (get the target lists usin...
MorphologicalOperators::DILATION
@ DILATION
Definition: MorphologicalOperators.h:78
camitk::Action::setDescription
void setDescription(QString description)
the description of the action
Definition: Action.cpp:119
camitk::Component::getName
QString getName() const override
get the name to be displayed
Definition: sdk/libraries/core/component/Component.h:849
MorphologicalOperators::binaryDilationFilter
vtkSmartPointer< vtkImageData > binaryDilationFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:246
itk::ImageToVTKImageFilter
Converts an ITK image into a VTK image and plugs a itk data pipeline to a VTK datapipeline.
Definition: itkImageToVTKImageFilter.h:81
MorphologicalOperators::greyLevelErosionFilter
vtkSmartPointer< vtkImageData > greyLevelErosionFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:472
MorphologicalOperators::CLOSING
@ CLOSING
Definition: MorphologicalOperators.h:78
camitk::Q_ENUMS
Q_ENUMS(ControlMode CameraOrientation)
RendererWidget implements all support methods to use camiTK with Qt interface.
MorphologicalOperators::implementProcess
vtkSmartPointer< vtkImageData > implementProcess(vtkSmartPointer< vtkImageData > img)
camitk::Action::addParameter
virtual bool addParameter(Property *)
Add a new parameter to the action, using the CamiTK property class.
Definition: Action.cpp:417
MorphologicalOperators::binaryClosureFilter
vtkSmartPointer< vtkImageData > binaryClosureFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:311
ITKFILTER_API
#define ITKFILTER_API
Definition: ITKFilterAPI.h:8
camitk::ActionExtension
This class describes what is a generic Action extension. To add a ActionExtension to CamiTK core,...
Definition: ActionExtension.h:82
MorphologicalOperators::EROSION
@ EROSION
Definition: MorphologicalOperators.h:78
camitk::ImageComponent::getImageData
vtkSmartPointer< vtkImageData > getImageData() const
get the image volume managed by this Component
Definition: ImageComponent.h:104
itkVTKImageToImageFilter.h
camitk::refresh
void refresh()
refresh the display
MorphologicalOperators::suffix
QString suffix
Definition: MorphologicalOperators.h:139
MorphologicalOperators::GREY_LEVEL
@ GREY_LEVEL
Definition: MorphologicalOperators.h:96
itk::VTKImageToImageFilter
Converts a VTK image into an ITK image and plugs a vtk data pipeline to an ITK datapipeline.
Definition: itkVTKImageToImageFilter.h:58
MorphologicalOperators::binaryOpeningFilter
vtkSmartPointer< vtkImageData > binaryOpeningFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:390
ItkProgressObserver.h
MorphologicalOperators
Perform some morphological operators such as opening, closing ...
Definition: MorphologicalOperators.h:45
MorphologicalOperators.h
MorphologicalOperators::itkProcess
vtkSmartPointer< vtkImageData > itkProcess(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:117
ImageComponent.h
MorphologicalOperators::greyLevelOpeningFilter
vtkSmartPointer< vtkImageData > greyLevelOpeningFilter(vtkSmartPointer< vtkImageData > img)
Definition: MorphologicalOperators.cpp:679
camitk::Component
A Component represents something that could be included in the explorer view, the interactive 3D view...
Definition: sdk/libraries/core/component/Component.h:298
Application.h
camitk
Definition: Action.cpp:36
MorphologicalOperators::MorphoOperation
MorphoOperation
Define the possible morphological operations.
Definition: MorphologicalOperators.h:78