Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkSurfaceToPointSetFilter.cpp
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 
14 
15 // mitk headers
16 #include "mitkPointSet.h"
17 
18 // itk headers
19 #include "itkMatrix.h"
20 #include "itkVector.h"
21 
22 // vtk headers
23 #include <vtkCleanPolyData.h>
24 #include <vtkPolyData.h>
25 
27 {
28  this->SetNumberOfIndexedOutputs(1);
29 }
30 
32 {
33 }
34 
36 {
37  if (m_InputSurface.IsNull())
38  {
39  this->SetNthOutput(0, nullptr);
40  m_ErrorMessage = "Error in SurfaceToPointSetFilter: Input is not set correctly.";
41  return;
42  }
44 
45  vtkPolyData *points = this->m_InputSurface->GetVtkPolyData();
46  vtkCleanPolyData *cleaner = vtkCleanPolyData::New();
47  cleaner->PieceInvariantOff();
48  cleaner->ConvertLinesToPointsOff();
49  cleaner->ConvertPolysToLinesOff();
50  cleaner->ConvertStripsToPolysOff();
51  cleaner->PointMergingOn();
52  cleaner->SetInputData(points);
53  cleaner->Update();
54 
55  vtkPolyData *mergedPoints = cleaner->GetOutput();
56 
57  // generate filter output
58  for (int i = 0; i < mergedPoints->GetNumberOfPoints(); i++)
59  {
60  mitk::Point3D currentPoint;
61  currentPoint[0] = mergedPoints->GetPoint(i)[0];
62  currentPoint[1] = mergedPoints->GetPoint(i)[1];
63  currentPoint[2] = mergedPoints->GetPoint(i)[2];
64  result->InsertPoint(i, currentPoint);
65  }
66  this->SetNthOutput(0, result);
67  //-------------------------
68 
69  cleaner->Delete();
70 }
71 
73 {
74  m_InputSurface = InputSurface;
75  this->Modified();
76 }
77 
79 {
80  return this->m_ErrorMessage;
81 }
void GenerateData() override
method generating the output of this filter. Called in the updated process of the pipeline...
static Pointer New()
void SetInput(mitk::Surface::Pointer m_InputSurface)