]> Creatis software - gdcm.git/commitdiff
Example a using new features .
authorjpr <jpr>
Fri, 17 Mar 2006 14:51:46 +0000 (14:51 +0000)
committerjpr <jpr>
Fri, 17 Mar 2006 14:51:46 +0000 (14:51 +0000)
DO NOT use right now; checking not achieved !

vtk/vtkWriteDicomExtended.cxx [new file with mode: 0755]

diff --git a/vtk/vtkWriteDicomExtended.cxx b/vtk/vtkWriteDicomExtended.cxx
new file mode 100755 (executable)
index 0000000..5d36725
--- /dev/null
@@ -0,0 +1,161 @@
+// This example illustrates how the vtkGdcmWriter vtk class can be
+// used in order to:
+//
+// Usage:
+// 
+//----------------------------------------------------------------------------
+#include <iostream>
+
+#include <vtkImageMapToColors.h>
+#include <vtkLookupTable.h>
+#include <vtkImageData.h>
+
+#include "vtkGdcmReader.h"
+#include "vtkGdcmWriter.h"
+
+#ifndef vtkFloatingPointType
+#define vtkFloatingPointType float
+#endif
+
+#include "gdcmArgMgr.h" // for Argument Manager functions
+
+//----------------------------------------------------------------------------
+int main(int argc, char *argv[])
+{
+   START_USAGE(usage)
+   " \n vtkWriteDicomExtended : \n",
+   " Reads a DICOM file and re writes it according to user's requierements.   ",
+   "                                                                          ",
+   " usage: vtkWriteDicomExtended filein=dicom file to read                   ",
+   "                           [filecontent = ] [2D]                          ",
+   "                           [noshadowseq][noshadow][noseq]                 ",
+   "                           [debug]                                        ",
+   "      filecontent = 1 : USER_OWN_IMAGE                                    ",
+   "                  = 2 : FILTERED_IMAGE                                    ",
+   "                  = 3 : CREATED_IMAGE                                     ",
+   "                  = 4 : UNMODIFIED_PIXELS_IMAGE                           ",
+   "      noshadowseq: user doesn't want to load Private Sequences            ",
+   "      noshadow   : user doesn't want to load Private groups (odd number)  ",
+   "      noseq      : user doesn't want to load Sequences                    ",
+   "      debug      : user wants to run the program in 'debug mode'          ",
+   FINISH_USAGE
+   
+   
+    // Initialize Arguments Manager   
+   gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
+  
+   if (argc == 1 || am->ArgMgrDefined("usage") )
+   {
+      am->ArgMgrUsage(usage); // Display 'usage'
+      delete am;
+      return 0;
+   }
+   
+   int loadMode = gdcm::LD_ALL;
+   if ( am->ArgMgrDefined("noshadowseq") )
+      loadMode |= gdcm::LD_NOSHADOWSEQ;
+   else 
+   {
+      if ( am->ArgMgrDefined("noshadow") )
+         loadMode |= gdcm::LD_NOSHADOW;
+      if ( am->ArgMgrDefined("noseq") )
+         loadMode |= gdcm::LD_NOSEQ;
+   }
+   
+   int filecontent =  am->ArgMgrGetInt("filecontent", 1);
+   
+   char *filein = am->ArgMgrWantString("filein",usage);
+   char *fileout = am->ArgMgrWantString("fileout",usage);
+   
+   if (am->ArgMgrDefined("debug"))
+      gdcm::Debug::DebugOn();
+      
+   bool deuxD = am->ArgMgrDefined("2D");
+
+   /* if unused Param we give up */
+   if ( am->ArgMgrPrintUnusedLabels() )
+   {
+      am->ArgMgrUsage(usage);
+      delete am;
+      return 0;
+   }
+   
+// ------------------------------------------------------------           
+  
+   vtkGdcmReader *reader = vtkGdcmReader::New();
+   reader->AllowLookupTableOff();
+   reader->SetFileName( argv[1] );
+   reader->Update();
+
+   vtkImageData *output;
+   if( reader->GetLookupTable() )
+   {
+      //convert to color:
+      vtkImageMapToColors *map = vtkImageMapToColors::New ();
+      map->SetInput (reader->GetOutput());
+      map->SetLookupTable (reader->GetLookupTable());
+      map->SetOutputFormatToRGB();
+      output = map->GetOutput();
+      map->Delete();
+   }
+   else
+   {
+      output = reader->GetOutput();
+   }
+  
+   //print debug info:
+   output->Print(cout);
+
+   //////////////////////////////////////////////////////////
+   // WRITE...
+   //if you wish you can export dicom to a vtk file 
+   // this file will have the add of .tmp.dcm extention
+   
+   std::string fileName(filein);
+   vtkGdcmWriter *writer = vtkGdcmWriter::New();
+      
+   switch (filecontent)
+   {
+      case 1:
+         writer->SetContentTypeToUserOwnImage();
+         fileName = fileName + "_UserOwnImage.dcm";
+         break;
+      case 2:
+         writer->SetContentTypeToFilteredImage();
+         fileName = fileName + "_FilteredImage.dcm";
+         break;
+      case 3:
+         writer->SetContentTypeToUserCreatedImage();
+         fileName = fileName + "_FilteredImage.dcm";
+         break;
+      case 4:
+         writer->SetContentTypeToUserCreatedImage();
+         fileName = fileName + "_UnmodifiedPixelsImage.dcm";
+         break; 
+   }
+   
+   fileName += ".dcm";
+
+   // For 3D
+   writer->SetFileDimensionality(3);
+   writer->SetFileName(fileName.c_str());
+   if(deuxD)
+   {
+         writer->SetFileDimensionality(2);
+         writer->SetFilePrefix(fileout);
+         writer->SetFilePattern("%s%d.dcm");
+   }
+
+   writer->SetInput(output);
+   writer->Write();
+   //////////////////////////////////////////////////////////
+
+   // Clean up
+   writer->Delete();
+   reader->Delete();
+
+   return 0;
+}