DGtalTools 2.0.0
Loading...
Searching...
No Matches
dicom2vol.cpp
1
30#include <iostream>
31#include <fstream>
32#include "DGtal/base/Common.h"
33#include "DGtal/helpers/StdDefs.h"
34#include "DGtal/base/BasicFunctors.h"
35#include "DGtal/images/ImageContainerBySTLVector.h"
36#include "DGtal/io/writers/GenericWriter.h"
37#include "DGtal/io/readers/DicomReader.h"
38
39
40#include "CLI11.hpp"
41
42
43using namespace std;
44using namespace DGtal;
45
46
82int main( int argc, char** argv )
83{
84 typedef ImageContainerBySTLVector < Z3i::Domain, unsigned char > Image3D;
85
86 // parse command line using CLI ----------------------------------------------
87 CLI::App app;
88 std::string inputFileName;
89 std::string outputFileName {"result.raw"};
90 DGtal::int64_t dicomMin {-1000};
91 DGtal::int64_t dicomMax {3000};
92
93 app.description("Convert dicom file into a volumetric file (.vol, .longvol .pgm3d).\n Example:\n dicom2vol ${DGtal}/tests/samples/dicomSample/1629.dcm sample.vol --dicomMin 0 --dicomMax 300.");
94 app.add_option("-i,--input,1", inputFileName, "dicom image (.dcm)." )
95 ->required()
96 ->check(CLI::ExistingFile);
97 app.add_option("-o,--output,2", outputFileName, "volumetric file (.vol, .longvol .pgm3d, .raw)");
98 app.add_option("--dicomMin",dicomMin,"set minimum density threshold on Hounsfield scale" );
99 app.add_option("--dicomMax",dicomMax,"set maximum density threshold on Hounsfield scale" );
100
101 app.get_formatter()->column_width(40);
102 CLI11_PARSE(app, argc, argv);
103 // END parse command line using CLI ----------------------------------------------
104
105 typedef DGtal::functors::Rescaling<int ,unsigned char > RescalFCT;
106
107 trace.info() << "Reading input dicom file " << inputFileName ;
108 Image3D inputImage = DicomReader< Image3D, RescalFCT >::importDicom(inputFileName,
109 RescalFCT(dicomMin,dicomMax, 0, 255) );
110 trace.info() << " [done] " << std::endl ;
111 trace.info() << " converting into vol file... " ;
112 inputImage >> outputFileName;
113 trace.info() << " [done] " << std::endl ;
114
115 return EXIT_SUCCESS;
116}
117
118
119
120
Definition ATu0v1.h:57