Index: Modules/DiffusionImaging/DicomImport/mitkSiemensDicomDiffusionVolumeHeaderReader.cpp =================================================================== --- Modules/DiffusionImaging/DicomImport/mitkSiemensDicomDiffusionVolumeHeaderReader.cpp (revision 19392) +++ Modules/DiffusionImaging/DicomImport/mitkSiemensDicomDiffusionVolumeHeaderReader.cpp (working copy) @@ -18,14 +18,10 @@ #include "mitkSiemensDicomDiffusionVolumeHeaderReader.h" -#include "gdcm.h" #include "gdcmGlobal.h" +#include "gdcmFile.h" +#include "gdcmImageReader.h" -// relevant Siemens private tags -const gdcm::DictEntry SiemensDictBValue( 0x0019, 0x100c, "IS", "1", "B Value of diffusion weighting" ); -const gdcm::DictEntry SiemensDictDiffusionDirection( 0x0019, 0x100e, "FD", "3", "Diffusion Gradient Direction" ); -const gdcm::DictEntry SiemensDictDiffusionMatrix( 0x0019, 0x1027, "FD", "6", "Diffusion Matrix" ); -const gdcm::DictEntry SiemensDictShadowInfo( 0x0029, 0x1010, "OB", "1", "Siemens DWI Info" ); mitk::SiemensDicomDiffusionVolumeHeaderReader::SiemensDicomDiffusionVolumeHeaderReader() { @@ -79,19 +75,6 @@ VolumeReaderType::DictionaryArrayRawPointer inputDict = m_VolumeReader->GetMetaDataDictionaryArray(); - //if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensMosiacParameters.GetKey()) == 0) - // gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensMosiacParameters); - //if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensDictNMosiac.GetKey()) == 0) - // gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensDictNMosiac); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensDictBValue.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensDictBValue); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensDictDiffusionDirection.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensDictDiffusionDirection); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensDictDiffusionMatrix.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensDictDiffusionMatrix); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(SiemensDictShadowInfo.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(SiemensDictShadowInfo); - ReadPublicTags(); //int mMosaic; // number of raws in each mosaic block; @@ -139,33 +122,43 @@ { gdcm::File *header0 = new gdcm::File; - gdcm::BinEntry* binEntry; + + gdcm::ImageReader reader; + reader.SetFileName( m_DicomFilenames[k].c_str() ); + if( !reader.Read() ) + { + itkExceptionMacro(<< "Cannot read requested file"); + } + // const gdcm::Image &image = reader.GetImage(); + const gdcm::File &f = reader.GetFile(); + const gdcm::DataSet &ds = f.GetDataSet(); + // const unsigned int *dims = image.GetDimensions(); + + + + + +/* header0->SetMaxSizeLoadEntry(65536); header0->SetFileName( m_DicomFilenames[k] ); header0->SetLoadMode( gdcm::LD_ALL ); header0->Load(); +*/ + // gdcm::DataSet ds = header0->GetDataSet(); + gdcm::DataSet::ConstIterator it = ds.Begin(); + + // Copy of the header->content // copy information stored in 0029,1010 into a string for parsing - gdcm::DocEntry* docEntry = header0->GetFirstEntry(); - while(docEntry) + for(; it != ds.End(); ++it) { - if ( docEntry->GetKey() == "0029|1010" ) - { - binEntry = dynamic_cast ( docEntry ); - int binLength = binEntry->GetFullLength(); - tag.resize( binLength ); - uint8_t * tagString = binEntry->GetBinArea(); - - for (int n = 0; n < binLength; n++) - { - tag[n] = *(tagString+n); - } - break; + const gdcm::DataElement &ref = *it; + // const gdcm::Tag &tag2 = ref.GetTag(); + if (ref.GetTag() == gdcm::Tag(0x0029,0x1010)) { + tag = std::string(ref.GetByteValue()->GetPointer(),ref.GetByteValue()->GetLength()); } - docEntry = header0->GetNextEntry(); } - // parse B_value from 0029,1010 tag std::vector valueArray(0); vnl_vector_fixed vect3d; Index: Modules/DiffusionImaging/DicomImport/mitkGEDicomDiffusionVolumeHeaderReader.cpp =================================================================== --- Modules/DiffusionImaging/DicomImport/mitkGEDicomDiffusionVolumeHeaderReader.cpp (revision 19392) +++ Modules/DiffusionImaging/DicomImport/mitkGEDicomDiffusionVolumeHeaderReader.cpp (working copy) @@ -18,15 +18,40 @@ #include "mitkGEDicomDiffusionVolumeHeaderReader.h" -#include "gdcm.h" +// #include "gdcm.h" #include "gdcmGlobal.h" +#include "gdcmDict.h" +#include "gdcmDicts.h" +#include "gdcmDictEntry.h" + +// #include "gdcmCommon.h" +// #include "gdcmUtil.h" +// #include "gdcmDebug.h" + +#include "gdcmDictEntry.h" +#include "gdcmDict.h" +// #include "gdcmDictSet.h" + +// #include "gdcmDocument.h" +#include "gdcmFile.h" + +// #include "gdcmFileHelper.h" +#include "gdcmSerieHelper.h" + +// #include "gdcmValEntry.h" +// #include "gdcmBinEntry.h" +// #include "gdcmSeqEntry.h" + +// #include "gdcmValidator.h" + + // relevant Siemens private tags // relevant GE private tags -const gdcm::DictEntry GEDictBValue( 0x0043, 0x1039, "IS", "1", "B Value of diffusion weighting" ); -const gdcm::DictEntry GEDictXGradient( 0x0019, 0x10bb, "DS", "1", "X component of gradient direction" ); -const gdcm::DictEntry GEDictYGradient( 0x0019, 0x10bc, "DS", "1", "Y component of gradient direction" ); -const gdcm::DictEntry GEDictZGradient( 0x0019, 0x10bd, "DS", "1", "Z component of gradient direction" ); +const gdcm::DictEntry GEDictBValue( "0043,1039", gdcm::VR::IS, gdcm::VM::VM1, "B Value of diffusion weighting" ); +const gdcm::DictEntry GEDictXGradient( "0019,10bb", gdcm::VR::DS, gdcm::VM::VM1 , "X component of gradient direction" ); +const gdcm::DictEntry GEDictYGradient( "0019,10bc", gdcm::VR::DS, gdcm::VM::VM1 , "Y component of gradient direction" ); +const gdcm::DictEntry GEDictZGradient( "0019,10bd", gdcm::VR::DS, gdcm::VM::VM1 , "Z component of gradient direction" ); mitk::GEDicomDiffusionVolumeHeaderReader::GEDicomDiffusionVolumeHeaderReader() { @@ -48,16 +73,6 @@ VolumeReaderType::DictionaryArrayRawPointer inputDict = m_VolumeReader->GetMetaDataDictionaryArray(); - - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GEDictBValue.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(GEDictBValue); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GEDictXGradient.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(GEDictXGradient); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GEDictYGradient.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(GEDictYGradient); - if(gdcm::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GEDictZGradient.GetKey()) == 0) - gdcm::Global::GetDicts()->GetDefaultPubDict()->AddEntry(GEDictZGradient); - ReadPublicTags(); //int mMosaic; // number of raws in each mosaic block; Index: Modules/DiffusionImaging/CMakeLists.txt =================================================================== --- Modules/DiffusionImaging/CMakeLists.txt (revision 19392) +++ Modules/DiffusionImaging/CMakeLists.txt (working copy) @@ -1,3 +1,7 @@ +IF(GDCM_MAJOR_VERSION EQUAL 2) + ADD_DEFINITIONS(-DGDCM2) +ENDIF(GDCM_MAJOR_VERSION EQUAL 2) + MITK_CREATE_MODULE( MitkDiffusionImaging INCLUDE_DIRS Algorithms DicomImport IODataStructures/DiffusionWeightedImages IODataStructures/QBallImages IODataStructures Reconstruction Tractography Rendering DEPENDS Mitk