1 #include "bbgdcmvtkGetInfoGdcmReader.h"
2 #include "bbgdcmvtkPackage.h"
6 #include "gdcmFileHelper.h"
7 #include "vtkImageData.h"
8 #include "vtkGdcmReader.h"
11 #include <gdcmReader.h>
12 // #include "vtkImageData.h"
13 #include <gdcmImageHelper.h>
14 #include <vtkGDCMImageReader.h>
16 #include <vtkIndent.h>
21 BBTK_ADD_BLACK_BOX_TO_PACKAGE(gdcmvtk,GetInfoGdcmReader)
22 BBTK_BLACK_BOX_IMPLEMENTATION(GetInfoGdcmReader,bbtk::AtomicBlackBox);
25 void GetInfoGdcmReader::Process()
28 bbUserFinalizeProcessing();
30 f = GDCM_NAME_SPACE::File::New();
31 f->SetFileName( bbGetInputIn() );
39 // Get info from THE image file (only *one* as input)
41 std::vector<double> v_iop;
43 f->GetImageOrientationPatient(iop);
46 v_iop.push_back(iop[i]);
47 bbSetOutputIOP(v_iop );
49 std::vector<double> v_ipp;
51 f->GetImagePositionPatient(ipp);
54 v_ipp.push_back(ipp[i]);
55 bbSetOutputIPP(v_ipp );
57 std::vector<double> v_pixelspacing;
58 v_pixelspacing.push_back(f->GetXSpacing());
59 v_pixelspacing.push_back(f->GetYSpacing());
61 if (f->GetZSize() != 1)
63 v_pixelspacing.push_back(f->GetZSpacing());
65 bbSetOutputPixelSpacing(v_pixelspacing);
68 bbSetOutputInterSlice(f->GetZSpacing());
70 reader = vtkGdcmReader::New();
71 reader->SetFileName( bbGetInputIn().c_str() );
76 reader->GetOutput()->PrintSelf(std::cout, indent);
77 bbSetOutputOut( reader->GetOutput() );
82 void GetInfoGdcmReader::Process()
85 bbUserFinalizeProcessing();
86 gdcm::Reader *read = new gdcm::Reader();
87 read->SetFileName( bbGetInputIn().c_str());
89 bool res = read->Read();
97 // Get info from THE image file (only *one* as input)
98 const gdcm::File &f = read->GetFile();
100 // Image Orientation (Patient)
102 std::vector<double> v_iop;
103 const gdcm::DataElement &deIop = f.GetDataSet().GetDataElement(gdcm::Tag(0x0020, 0x0037));
104 std::stringstream ss;
105 deIop.GetValue().Print(ss);
106 gdcm::Element<gdcm::VR::DS,gdcm::VM::VM6> iop;
109 v_iop.push_back((float)(iop[i]));
110 bbSetOutputIOP(v_iop );
112 // Image Position (Patient)
113 std::vector<double> v_ipp;
114 const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032)));
115 deIpp.GetValue().Print(ss);
116 gdcm::Element<gdcm::VR::DS,gdcm::VM::VM3> ipp;
119 v_ipp.push_back((float)(ipp[i]));
120 bbSetOutputIPP(v_ipp );
122 std::vector<double> v_pixelspacing = gdcm::ImageHelper::GetSpacingValue(f);
123 bbSetOutputPixelSpacing(v_pixelspacing);
125 //double interslice; ?? ==1 NO?
126 bbSetOutputInterSlice(v_pixelspacing[2]);
128 reader = vtkGDCMImageReader::New();
129 reader->SetFileName( bbGetInputIn().c_str() );
133 reader->GetOutput()->PrintSelf(std::cout, indent);
134 bbSetOutputOut( reader->GetOutput() );
139 void GetInfoGdcmReader::bbUserSetDefaultValues()
141 #if defined USE_GDCM2
152 void GetInfoGdcmReader::bbUserInitializeProcessing()
157 void GetInfoGdcmReader::bbUserFinalizeProcessing()
159 #if defined USE_GDCM2
183 // EO namespace bbgdcmvtk