Medical Imaging Interaction Toolkit  2024.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
mitkImageToSurfaceFilter.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkImageToSurfaceFilter_h
14 #define mitkImageToSurfaceFilter_h
15 
16 #include "MitkCoreExports.h"
17 #include <mitkCommon.h>
18 #include <mitkSurface.h>
19 #include <mitkSurfaceSource.h>
20 #include <vtkPolyData.h>
21 
22 #include <mitkImage.h>
23 #include <vtkImageData.h>
24 
25 #include <vtkMarchingCubes.h>
26 #include <vtkSmoothPolyDataFilter.h>
27 
28 namespace mitk
29 {
51  {
52  public:
53  /*
54  * To decide whether a reduction of polygons in the created surface shall be
55  * done or not by using the vtkDecimatePro Filter. Till vtk 4.x an vtkDecimateFilter existed,
56  * but was patented. So since vtk 5.x it was replaced by the (much worse?) vtkDecimateProFilter
57  * Maybe another Filter will come soon.
58  */
60  {
63  QuadricDecimation
64  };
65 
67  itkFactorylessNewMacro(Self);
68  itkCloneMacro(Self);
69 
75  void GenerateData() override;
76 
81  void GenerateOutputInformation() override;
82 
86  const mitk::Image *GetInput(void);
87 
92  using itk::ProcessObject::SetInput;
93  virtual void SetInput(const mitk::Image *image);
94 
103  void SetSmoothIteration(int smoothIteration);
104 
114  void SetSmoothRelaxation(float smoothRelaxation);
115 
121  itkSetMacro(Threshold, ScalarType);
122 
127  itkGetConstMacro(Threshold, ScalarType);
128 
134  itkSetMacro(Smooth, bool);
135 
136  /*
137  * Enable/Disable surface smoothing.
138  */
139  itkBooleanMacro(Smooth);
140 
141  /*
142  * Returns if surface smoothing is enabled
143  */
144  itkGetConstMacro(Smooth, bool);
145 
151  itkGetConstMacro(Decimate, DecimationType);
152 
159  itkSetMacro(Decimate, DecimationType);
160 
166  itkSetMacro(TargetReduction, float);
167 
171  itkGetConstMacro(TargetReduction, float);
172 
176  template <class T1, class T2, class T3>
177  inline void mitkVtkLinearTransformPoint(T1 matrix[4][4], T2 in[3], T3 out[3])
178  {
179  T3 x = matrix[0][0] * in[0] + matrix[0][1] * in[1] + matrix[0][2] * in[2] + matrix[0][3];
180  T3 y = matrix[1][0] * in[0] + matrix[1][1] * in[1] + matrix[1][2] * in[2] + matrix[1][3];
181  T3 z = matrix[2][0] * in[0] + matrix[2][1] * in[1] + matrix[2][2] * in[2] + matrix[2][3];
182  out[0] = x;
183  out[1] = y;
184  out[2] = z;
185  }
186 
187  protected:
189 
193  ~ImageToSurfaceFilter() override;
194 
209  void CreateSurface(int time, vtkImageData *vtkimage, mitk::Surface *surface, const ScalarType threshold);
210 
214  bool m_Smooth;
215 
220 
226 
231 
237 
243  };
244 
245 } // namespace mitk
246 
247 #endif
mitk::ImageToSurfaceFilter::DecimatePro
@ DecimatePro
Definition: mitkImageToSurfaceFilter.h:62
mitk::ImageToSurfaceFilter::m_Decimate
DecimationType m_Decimate
Definition: mitkImageToSurfaceFilter.h:219
mitkSurfaceSource.h
mitk::ImageToSurfaceFilter::mitkVtkLinearTransformPoint
void mitkVtkLinearTransformPoint(T1 matrix[4][4], T2 in[3], T3 out[3])
Definition: mitkImageToSurfaceFilter.h:177
mitkImage.h
mitk::Image
Image class for storing images.
Definition: mitkImage.h:69
mitk::Surface
Class for storing surfaces (vtkPolyData).
Definition: mitkSurface.h:28
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitkSurface.h
mitk::ImageToSurfaceFilter::m_Smooth
bool m_Smooth
Definition: mitkImageToSurfaceFilter.h:214
mitk::ImageToSurfaceFilter::m_SmoothIteration
int m_SmoothIteration
Definition: mitkImageToSurfaceFilter.h:236
mitk::BaseDataSource
Superclass of all classes generating some kind of mitk::BaseData.
Definition: mitkBaseDataSource.h:71
mitk::ImageToSurfaceFilter::DecimationType
DecimationType
Definition: mitkImageToSurfaceFilter.h:59
MitkCoreExports.h
mitkCommon.h
mitk::ImageToSurfaceFilter::m_SmoothRelaxation
float m_SmoothRelaxation
Definition: mitkImageToSurfaceFilter.h:242
mitk::ImageToSurfaceFilter
Converts pixel data to surface data by using a threshold The mitkImageToSurfaceFilter is used to crea...
Definition: mitkImageToSurfaceFilter.h:50
mitk::SurfaceSource
Superclass of all classes generating surfaces (instances of class Surface) as output.
Definition: mitkSurfaceSource.h:33
mitkClassMacro
#define mitkClassMacro(className, SuperClassName)
Definition: mitkCommon.h:36
mitk::ImageToSurfaceFilter::m_Threshold
ScalarType m_Threshold
Definition: mitkImageToSurfaceFilter.h:225
mitk::ImageToSurfaceFilter::NoDecimation
@ NoDecimation
Definition: mitkImageToSurfaceFilter.h:61
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15
mitk::ImageToSurfaceFilter::m_TargetReduction
float m_TargetReduction
Definition: mitkImageToSurfaceFilter.h:230
mitk::ScalarType
double ScalarType
Definition: mitkNumericConstants.h:20