1 // This example illustrates how the vtkGdcmWriter vtk class can be
6 //----------------------------------------------------------------------------
9 #include <vtkImageMapToColors.h>
10 #include <vtkLookupTable.h>
11 #include <vtkImageData.h>
13 #include "vtkGdcmReader.h"
14 #include "vtkGdcmWriter.h"
16 #ifndef vtkFloatingPointType
17 #define vtkFloatingPointType float
20 #include "gdcmArgMgr.h" // for Argument Manager functions
22 //----------------------------------------------------------------------------
23 int main(int argc, char *argv[])
26 " \n vtkWriteDicomExtended : \n",
27 " Reads a DICOM file and re writes it according to user's requierements. ",
29 " usage: vtkWriteDicomExtended filein=dicom file to read ",
30 " [filecontent = ] [2D] ",
31 " [noshadowseq][noshadow][noseq] ",
33 " filecontent = 1 : USER_OWN_IMAGE ",
34 " = 2 : FILTERED_IMAGE ",
35 " = 3 : CREATED_IMAGE ",
36 " = 4 : UNMODIFIED_PIXELS_IMAGE ",
37 " noshadowseq: user doesn't want to load Private Sequences ",
38 " noshadow : user doesn't want to load Private groups (odd number) ",
39 " noseq : user doesn't want to load Sequences ",
40 " debug : user wants to run the program in 'debug mode' ",
44 // Initialize Arguments Manager
45 gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
47 if (argc == 1 || am->ArgMgrDefined("usage") )
49 am->ArgMgrUsage(usage); // Display 'usage'
54 int loadMode = gdcm::LD_ALL;
55 if ( am->ArgMgrDefined("noshadowseq") )
56 loadMode |= gdcm::LD_NOSHADOWSEQ;
59 if ( am->ArgMgrDefined("noshadow") )
60 loadMode |= gdcm::LD_NOSHADOW;
61 if ( am->ArgMgrDefined("noseq") )
62 loadMode |= gdcm::LD_NOSEQ;
65 int filecontent = am->ArgMgrGetInt("filecontent", 1);
67 char *filein = am->ArgMgrWantString("filein",usage);
68 char *fileout = am->ArgMgrWantString("fileout",usage);
70 if (am->ArgMgrDefined("debug"))
71 gdcm::Debug::DebugOn();
73 bool deuxD = am->ArgMgrDefined("2D");
75 /* if unused Param we give up */
76 if ( am->ArgMgrPrintUnusedLabels() )
78 am->ArgMgrUsage(usage);
83 // ------------------------------------------------------------
85 vtkGdcmReader *reader = vtkGdcmReader::New();
86 reader->AllowLookupTableOff();
87 reader->SetFileName( argv[1] );
91 if( reader->GetLookupTable() )
94 vtkImageMapToColors *map = vtkImageMapToColors::New ();
95 map->SetInput (reader->GetOutput());
96 map->SetLookupTable (reader->GetLookupTable());
97 map->SetOutputFormatToRGB();
98 output = map->GetOutput();
103 output = reader->GetOutput();
109 //////////////////////////////////////////////////////////
111 //if you wish you can export dicom to a vtk file
112 // this file will have the add of .tmp.dcm extention
114 std::string fileName(filein);
115 vtkGdcmWriter *writer = vtkGdcmWriter::New();
120 writer->SetContentTypeToUserOwnImage();
121 fileName = fileName + "_UserOwnImage.dcm";
125 writer->SetContentTypeToFilteredImage();
126 fileName = fileName + "_FilteredImage.dcm";
130 writer->SetContentTypeToUserCreatedImage();
131 fileName = fileName + "_FilteredImage.dcm";
135 writer->SetContentTypeToUserCreatedImage();
136 fileName = fileName + "_UnmodifiedPixelsImage.dcm";
143 writer->SetFileDimensionality(3);
144 writer->SetFileName(fileName.c_str());
147 writer->SetFileDimensionality(2);
148 writer->SetFilePrefix(fileout);
149 writer->SetFilePattern("%s%d.dcm");
152 writer->SetInput(output);
154 //////////////////////////////////////////////////////////