#include "clitkDicomWave2Text.h" #include "clitkDicomWave2Text_ggo.h" #include "clitkCommon.h" //gdcm include #include "gdcmFile.h" #if GDCM_MAJOR_VERSION < 2 #include "gdcmUtil.h" #include "gdcmBinEntry.h" #include "gdcmValEntry.h" #include "gdcmSeqEntry.h" #include "gdcmSQItem.h" #endif #include "gdcmSerieHelper.h" #include #include //========================================================================================================================== int main(int argc, char * argv[]) { //----------------------------------------------------------------------------- // init command line GGO(clitkDicomWave2Text, args_info); //----------------------------------------------------------------------------- #if GDCM_MAJOR_VERSION < 2 //----------------------------------------------------------------------- // opening dicom input file gdcm::File * mDCMFile = new gdcm::File(); mDCMFile->SetFileName(args_info.InputFile_arg); mDCMFile->AddForceLoadElement(0x01e1,0x1018); //Load wave data no matter its size if (!mDCMFile->OpenFile ()) { std::cerr << "Sorry, the file does not exist or does not appear to be a DICOM file. Abort." << std::endl; exit(0); } mDCMFile->Load(); std::cout << "File: "<< args_info.InputFile_arg << " loaded !"<< std::endl; //----------------------------------------------------------------------- // read data gdcm::DocEntrySet* item = mDCMFile; #define T short gdcm::BinEntry* entry = item->GetBinEntry(0x01e1,0x1018); DD(entry); T* buffer = reinterpret_cast(entry->GetBinArea()); int length=item->GetEntryLength(0x01e1,0x1018)/sizeof(T); std::ofstream text_file(args_info.OutputFile_arg, std::ios::out | std::ios::trunc); if(text_file) { std::string stat=""; 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; for (int i=0;i