#include <mitkGEDicomDiffusionImageHeaderReader.h>
Public Types | |
typedef GEDicomDiffusionImageHeaderReader | Self |
typedef DicomDiffusionImageHeaderReader | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
virtual void | Update () |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
GEDicomDiffusionImageHeaderReader () | |
virtual | ~GEDicomDiffusionImageHeaderReader () |
Definition at line 27 of file mitkGEDicomDiffusionImageHeaderReader.h.
typedef itk::SmartPointer<const Self> mitk::GEDicomDiffusionImageHeaderReader::ConstPointer |
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Definition at line 31 of file mitkGEDicomDiffusionImageHeaderReader.h.
typedef itk::SmartPointer<Self> mitk::GEDicomDiffusionImageHeaderReader::Pointer |
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Definition at line 31 of file mitkGEDicomDiffusionImageHeaderReader.h.
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Definition at line 31 of file mitkGEDicomDiffusionImageHeaderReader.h.
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Definition at line 31 of file mitkGEDicomDiffusionImageHeaderReader.h.
mitk::GEDicomDiffusionImageHeaderReader::GEDicomDiffusionImageHeaderReader | ( | ) | [protected] |
Definition at line 54 of file mitkGEDicomDiffusionImageHeaderReader.cpp.
{ }
mitk::GEDicomDiffusionImageHeaderReader::~GEDicomDiffusionImageHeaderReader | ( | ) | [protected, virtual] |
Definition at line 58 of file mitkGEDicomDiffusionImageHeaderReader.cpp.
{ }
virtual const char* mitk::GEDicomDiffusionImageHeaderReader::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
static Pointer mitk::GEDicomDiffusionImageHeaderReader::New | ( | ) | [static] |
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Referenced by mitk::DicomDiffusionImageHeaderReader::Update().
void mitk::GEDicomDiffusionImageHeaderReader::Update | ( | ) | [virtual] |
Reimplemented from mitk::DicomDiffusionImageHeaderReader.
Definition at line 63 of file mitkGEDicomDiffusionImageHeaderReader.cpp.
References GEDictBValue(), GEDictXGradient(), GEDictYGradient(), and GEDictZGradient().
{ // check if there are filenames if(m_DicomFilenames.size()) { // adapted from namic-sandbox // DicomToNrrdConverter.cxx VolumeReaderType::DictionaryArrayRawPointer inputDict = m_VolumeReader->GetMetaDataDictionaryArray(); #ifndef DGDCM2 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); #endif ReadPublicTags(); //int mMosaic; // number of raws in each mosaic block; //int nMosaic; // number of columns in each mosaic block float x0, y0, z0; float x1, y1, z1; std::string tag; tag.clear(); itk::ExposeMetaData<std::string> ( *(*inputDict)[0], "0020|0032", tag ); sscanf( tag.c_str(), "%f\\%f\\%f", &x0, &y0, &z0 ); std::cout << "Slice 0: " << tag << std::endl; tag.clear(); // assume volume interleaving, i.e. the second dicom file stores // the second slice in the same volume as the first dicom file itk::ExposeMetaData<std::string> ( *(*inputDict)[1], "0020|0032", tag ); sscanf( tag.c_str(), "%f\\%f\\%f", &x1, &y1, &z1 ); std::cout << "Slice 1: " << tag << std::endl; x1 -= x0; y1 -= y0; z1 -= z0; x0 = x1*this->m_Output->xSlice + y1*this->m_Output->ySlice + z1*this->m_Output->zSlice; if (x0 < 0) { m_SliceOrderIS = false; } ReadPublicTags2(); int nSliceInVolume; int nVolume; nSliceInVolume = m_sliceLocations.size(); nVolume = m_nSlice/nSliceInVolume; // assume volume interleaving std::cout << "Number of Slices: " << m_nSlice << std::endl; std::cout << "Number of Volume: " << nVolume << std::endl; std::cout << "Number of Slices in each volume: " << nSliceInVolume << std::endl; for (int k = 0; k < m_nSlice; k += nSliceInVolume) { tag.clear(); bool exist = itk::ExposeMetaData<std::string> ( *(*inputDict)[k], "0043|1039", tag); float b = atof( tag.c_str() ); this->m_Output->bValue = b; vnl_vector_fixed<double, 3> vect3d; if (!exist || b == 0) { vect3d.fill( 0 ); this->m_Output->DiffusionVector = vect3d; continue; } vect3d.fill( 0 ); tag.clear(); itk::ExposeMetaData<std::string> ( *(*inputDict)[k], "0019|10bb", tag); vect3d[0] = atof( tag.c_str() ); tag.clear(); itk::ExposeMetaData<std::string> ( *(*inputDict)[k], "0019|10bc", tag); vect3d[1] = atof( tag.c_str() ); tag.clear(); itk::ExposeMetaData<std::string> ( *(*inputDict)[k], "0019|10bd", tag); vect3d[2] = atof( tag.c_str() ); vect3d.normalize(); this->m_Output->DiffusionVector = vect3d; } TransformGradients(); } }