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"
82int main(
int argc,
char** argv )
84 typedef ImageContainerBySTLVector < Z3i::Domain, unsigned char > Image3D;
88 std::string inputFileName;
89 std::string outputFileName {
"result.raw"};
90 DGtal::int64_t dicomMin {-1000};
91 DGtal::int64_t dicomMax {3000};
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)." )
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" );
101 app.get_formatter()->column_width(40);
102 CLI11_PARSE(app, argc, argv);
105 typedef DGtal::functors::Rescaling<int ,unsigned char > RescalFCT;
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 ;