1 #include "clitkDicomWave2Text.h"
2 #include "clitkDicomWave2Text_ggo.h"
4 #include "clitkCommon.h"
8 #if GDCM_MAJOR_VERSION < 2
10 #include "gdcmBinEntry.h"
11 #include "gdcmValEntry.h"
12 #include "gdcmSeqEntry.h"
13 #include "gdcmSQItem.h"
16 #include "gdcmSerieHelper.h"
21 //==========================================================================================================================
23 int main(int argc, char * argv[]) {
25 //-----------------------------------------------------------------------------
27 GGO(clitkDicomWave2Text, args_info);
28 //-----------------------------------------------------------------------------
30 #if GDCM_MAJOR_VERSION < 2
31 //-----------------------------------------------------------------------
32 // opening dicom input file
33 gdcm::File * mDCMFile = new gdcm::File();
34 mDCMFile->SetFileName(args_info.InputFile_arg);
35 mDCMFile->AddForceLoadElement(0x01e1,0x1018); //Load wave data no matter its size
37 if (!mDCMFile->OpenFile ()) {
38 std::cerr << "Sorry, the file does not exist or does not appear to be a DICOM file. Abort." << std::endl;
42 std::cout << "File: "<< args_info.InputFile_arg << " loaded !"<< std::endl;
45 //-----------------------------------------------------------------------
47 gdcm::DocEntrySet* item = mDCMFile;
50 gdcm::BinEntry* entry = item->GetBinEntry(0x01e1,0x1018);
52 T* buffer = reinterpret_cast<T*>(entry->GetBinArea());
53 int length=item->GetEntryLength(0x01e1,0x1018)/sizeof(T);
54 std::ofstream text_file(args_info.OutputFile_arg, std::ios::out | std::ios::trunc);
58 text_file << "COMPLETE_WAVE" << '\t' << "MASK" << '\t' << "AQUISITION_PROFIL" << '\t' << "END-INHALE" << '\t' << "END-EXHALE" << '\t' << "AQUISITION_WAVE" << '\t' << "WAVE_STATISTICS" << '\t' << "MASK" << std::endl;
59 for (int i=0;i<length-76;i+=2)
69 stat="Sampling rate (Hz)";
76 if (buffer[i+75] == 0)
77 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
78 if (buffer[i+75] == 16384)
79 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
80 if (buffer[i+75] == 256)
81 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
82 if (buffer[i+75] == -32768)
83 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
84 if (buffer[i+75] == -16384)
85 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
86 if (buffer[i+75] == -32512)
87 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i+74] << '\t' << buffer[i] << '\t' << buffer[i+1] << '\t' << stat << std::endl;
91 if (buffer[i+75] == 0)
92 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
93 if (buffer[i+75] == 16384)
94 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
95 if (buffer[i+75] == 256)
96 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 0 << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << '\t' << " " << std::endl;
97 if (buffer[i+75] == -32768)
98 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
99 if (buffer[i+75] == -16384)
100 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << buffer[i+74] << '\t' << " " << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
101 if (buffer[i+75] == -32512)
102 text_file << buffer[i+74] << '\t' << buffer[i+75] << '\t' << 1 << '\t' << " " << '\t' << buffer[i+74] << '\t' << buffer[i+74] << '\t' << " " << '\t' << " " << std::endl;
108 std::cerr << "Error openning "<< args_info.OutputFile_arg << std::endl;
110 std::cerr << argv[0] << " is not compatible with GDCM 2.x you should use GDCM 1.x" << std::endl;