From 4b9841d895ea450bc2d07c38e40277725717b93a Mon Sep 17 00:00:00 2001 From: Gauthier Bouilhol Date: Fri, 7 Oct 2011 14:26:33 +0200 Subject: [PATCH] clitkDicomWave2Text tool added --- tools/CMakeLists.txt | 5 ++ tools/clitkDicomWave2Text.cxx | 104 ++++++++++++++++++++++++++++++++++ tools/clitkDicomWave2Text.ggo | 8 +++ tools/clitkDicomWave2Text.h | 30 ++++++++++ 4 files changed, 147 insertions(+) create mode 100644 tools/clitkDicomWave2Text.cxx create mode 100644 tools/clitkDicomWave2Text.ggo create mode 100644 tools/clitkDicomWave2Text.h diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index f5a62b4..925c1f8 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -35,6 +35,11 @@ IF (CLITK_BUILD_TOOLS) TARGET_LINK_LIBRARIES(clitkDicom2Image clitkCommon ${ITK_LIBRARIES}) SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkDicom2Image) + WRAP_GGO(clitkDicomWave2Text_GGO_C clitkDicomWave2Text.ggo) + ADD_EXECUTABLE(clitkDicomWave2Text clitkDicomWave2Text.cxx ${clitkDicomWave2Text_GGO_C}) + TARGET_LINK_LIBRARIES(clitkDicomWave2Text clitkCommon ${ITK_LIBRARIES}) + SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkDicomWave2Text) + WRAP_GGO(clitkImageInfo_GGO_C clitkImageInfo.ggo) ADD_EXECUTABLE(clitkImageInfo clitkImageInfo.cxx ${clitkImageInfo_GGO_C}) TARGET_LINK_LIBRARIES(clitkImageInfo clitkCommon ${ITK_LIBRARIES}) diff --git a/tools/clitkDicomWave2Text.cxx b/tools/clitkDicomWave2Text.cxx new file mode 100644 index 0000000..2ceef2d --- /dev/null +++ b/tools/clitkDicomWave2Text.cxx @@ -0,0 +1,104 @@ +#include "clitkDicomWave2Text.h" +#include "clitkDicomWave2Text_ggo.h" + +//gdcm include +#include "gdcmUtil.h" +#include "gdcmFile.h" +#include "gdcmBinEntry.h" +#include "gdcmValEntry.h" +#include "gdcmSeqEntry.h" +#include "gdcmSQItem.h" +#include "gdcmSerieHelper.h" + +#include +#include + +//========================================================================================================================== + +int main(int argc, char * argv[]) { + +//----------------------------------------------------------------------------- +// init command line +GGO(clitkDicomWave2Text, args_info); +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------- +// 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