Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
CLDicom2Nrrd.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,
6 Division of Medical and Biological Informatics.
7 All rights reserved.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without
10 even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 A PARTICULAR PURPOSE.
12 
13 See LICENSE.txt or http://www.mitk.org for details.
14 
15 ===================================================================*/
16 
17 #include "mitkDicomSeriesReader.h"
18 #include "mitkProperties.h"
19 
20 #include "mitkCommandLineParser.h"
21 #include "mitkIOUtil.h"
22 
23 
24 int main(int argc, char* argv[])
25 {
26  mitkCommandLineParser parser;
27 
28  parser.setTitle("Dicom Loader");
29  parser.setCategory("Preprocessing Tools");
30  parser.setDescription("");
31  parser.setContributor("MBI");
32 
33  parser.setArgumentPrefix("--","-");
34  // Add command line argument names
35  parser.addArgument("help", "h",mitkCommandLineParser::Bool, "Help:", "Show this help text");
36  parser.addArgument("input", "i", mitkCommandLineParser::InputDirectory, "Input folder:", "Input folder",us::Any(),false);
37  parser.addArgument("output", "o", mitkCommandLineParser::OutputFile, "Output file:", "Output file",us::Any(),false);
38 
39 
40  std::map<std::string, us::Any> parsedArgs = parser.parseArguments(argc, argv);
41 
42  if (parsedArgs.size()==0)
43  return EXIT_FAILURE;
44 
45  // Show a help message
46  if ( parsedArgs.count("help") || parsedArgs.count("h"))
47  {
48  std::cout << parser.helpText();
49  return EXIT_SUCCESS;
50  }
51 
52  std::string inputFolder = us::any_cast<std::string>(parsedArgs["input"]);
53  std::string outFileName = us::any_cast<std::string>(parsedArgs["output"]);
54 
55  //check if DICOMTags have been set as property for mitk::Image
57  std::list<mitk::Image::Pointer> images;
58  std::map<mitk::Image::Pointer, mitk::DicomSeriesReader::StringContainer> fileMap;
59 
60  // TODO sort series UIDs, implementation of map iterator might differ on different platforms (or verify this is a standard topic??)
61  for (mitk::DicomSeriesReader::FileNamesGrouping::const_iterator seriesIter = seriesInFiles.begin();
62  seriesIter != seriesInFiles.end();
63  ++seriesIter)
64  {
65  mitk::DicomSeriesReader::StringContainer files = seriesIter->second.GetFilenames();
66 
68 
69  if (node.IsNotNull())
70  {
71  mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData() );
72 
73  images.push_back( image );
74  fileMap.insert( std::pair<mitk::Image::Pointer, mitk::DicomSeriesReader::StringContainer>(image,files));
75  }
76  }
77 
78  // WARN: EXPECT ONLY ONE ITEM PER FOLDER
79  for ( std::list<mitk::Image::Pointer>::const_iterator imageIter = images.begin();
80  imageIter != images.end();
81  ++imageIter )
82  {
83  const mitk::Image::Pointer image = *imageIter;
84  mitk::IOUtil::SaveImage(image,outFileName);
85  }
86  return EXIT_SUCCESS;
87 }
std::vector< std::string > StringContainer
Lists of filenames.
void setContributor(std::string contributor)
static DataNode::Pointer LoadDicomSeries(const StringContainer &filenames, bool sort=true, bool load4D=true, bool correctGantryTilt=true, UpdateCallBackMethod callback=nullptr, itk::SmartPointer< Image > preLoadedImageBlock=nullptr)
ValueType * any_cast(Any *operand)
Definition: usAny.h:377
std::map< std::string, us::Any > parseArguments(const StringContainerType &arguments, bool *ok=nullptr)
static bool SaveImage(mitk::Image::Pointer image, const std::string &path)
SaveImage Convenience method to save an arbitrary mitkImage.
Definition: mitkIOUtil.cpp:870
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)
static FileNamesGrouping GetSeries(const std::string &dir, bool groupImagesWithGantryTilt, const StringContainer &restrictions=StringContainer())
see other GetSeries().
Image class for storing images.
Definition: mitkImage.h:76
Definition: usAny.h:163
void setCategory(std::string category)
void setArgumentPrefix(const std::string &longPrefix, const std::string &shortPrefix)
int main(int argc, char *argv[])
std::string helpText() const
std::map< std::string, ImageBlockDescriptor > FileNamesGrouping
void setTitle(std::string title)
void setDescription(std::string description)
section MAP_FRAME_Mapper_Settings Mapper settings For the mapping of corrected images