Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
CLNrrdToPoly.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 #ifndef mitkCLPolyToNrrd_cpp
13 #define mitkCLPolyToNrrd_cpp
14 
15 #include "time.h"
16 #include <sstream>
17 #include <fstream>
18 
19 #include <mitkIOUtil.h>
20 #include "mitkCommandLineParser.h"
21 
22 // VTK
23 #include <vtkSmartPointer.h>
24 #include <vtkImageMarchingCubes.h>
25 #include <vtkXMLPolyDataWriter.h>
26 
27 typedef itk::Image< double, 3 > FloatImageType;
28 typedef itk::Image< unsigned char, 3 > MaskImageType;
29 
30 
31 int main(int argc, char* argv[])
32 {
33  mitkCommandLineParser parser;
34  parser.setArgumentPrefix("--", "-");
35  // required params
36  parser.addArgument("mask", "m", mitkCommandLineParser::Image, "Input Mask", "Mask Image that specifies the area over for the statistic, (Values = 1)", us::Any(), false, false, false, mitkCommandLineParser::Input);
37  parser.addArgument("output", "o", mitkCommandLineParser::File, "Output text file", "Target file. The output statistic is appended to this file.", us::Any(), false, false, false, mitkCommandLineParser::Output);
38 
39  // Miniapp Infos
40  parser.setCategory("Classification Tools");
41  parser.setTitle("Segmentation to Mask");
42  parser.setDescription("Estimates a Mesh from a segmentation");
43  parser.setContributor("German Cancer Research Center (DKFZ)");
44 
45  std::map<std::string, us::Any> parsedArgs = parser.parseArguments(argc, argv);
46 
47  if (parsedArgs.size()==0)
48  {
49  return EXIT_FAILURE;
50  }
51  if ( parsedArgs.count("help") || parsedArgs.count("h"))
52  {
53  return EXIT_SUCCESS;
54  }
55 
56  MITK_INFO << "Version: "<< 1.0;
57 
58  mitk::Image::Pointer mask = mitk::IOUtil::Load<mitk::Image>(parsedArgs["mask"].ToString());
59 
60 
61  vtkSmartPointer<vtkImageData> image = mask->GetVtkImageData();
62  image->SetOrigin(mask->GetGeometry()->GetOrigin()[0], mask->GetGeometry()->GetOrigin()[1], mask->GetGeometry()->GetOrigin()[2]);
63  vtkSmartPointer<vtkImageMarchingCubes> mesher = vtkSmartPointer<vtkImageMarchingCubes>::New();
64  mesher->SetInputData(image);
66  mesher->SetValue(0,0.5);
67  mesher->Update();
68  surf->SetVtkPolyData(mesher->GetOutput());
69  mitk::IOUtil::Save(surf, parsedArgs["output"].ToString());
70 
71  return 0;
72 }
73 
74 #endif
#define MITK_INFO
Definition: mitkLogMacros.h:18
void setContributor(std::string contributor)
void addArgument(const std::string &longarg, const std::string &shortarg, Type type, const std::string &argLabel, const std::string &argHelp=std::string(), const us::Any &defaultValue=us::Any(), bool optional=true, bool ignoreRest=false, bool deprecated=false, mitkCommandLineParser::Channel channel=mitkCommandLineParser::Channel::None)
std::map< std::string, us::Any > parseArguments(const StringContainerType &arguments, bool *ok=nullptr)
int main(int argc, char *argv[])
Definition: usAny.h:163
itk::Image< unsigned char, 3 > MaskImageType
void setCategory(std::string category)
mitk::Image::Pointer image
void setArgumentPrefix(const std::string &longPrefix, const std::string &shortPrefix)
static void Save(const mitk::BaseData *data, const std::string &path, bool setPathProperty=false)
Save a mitk::BaseData instance.
Definition: mitkIOUtil.cpp:774
itk::Image< double, 3 > FloatImageType
mitk::Image::Pointer mask
void setTitle(std::string title)
void setDescription(std::string description)
static Pointer New()