Program: gdcm
Module: $RCSfile: exCTPET.cxx,v $
Language: C++
- Date: $Date: 2006/01/02 21:54:23 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2007/05/23 14:18:05 $
+ Version: $Revision: 1.3 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
int main(int argc, char *argv[])
{
- if(argc < 2 )
+ if(argc < 3 )
{
- std::cerr << "RTFM" << std::endl;
+ std::cerr << argv[0] << " reference directory" << std::endl;
return 1;
}
- // Get the directory name
- const char *directory = argv[1];
-#if 0
- gdcm::SerieHelper *s;
- std::cout << "Dir Name :[" << directory << "]" << std::endl;
-
- s = gdcm::SerieHelper::New();
- s->SetLoadMode(gdcm::LD_NOSHADOW | gdcm::LD_NOSEQ);
- // 0008|0060 [CS] [Modality] [CT]
- gdcm::TagKey modality(0x0008,0x0060);
- s->AddRestriction(modality, "CT", gdcm::GDCM_EQUAL); // Keep only files where
- // restriction is true
- s->SetDirectory(directory, true); // true : recursive exploration
-
-// std::cout << " ---------------------------------------- Finish parsing :["
-// << directory << "]" << std::endl;
-//
-// s->Print();
-// std::cout << " ---------------------------------------- Finish printing (1)"
-// << std::endl;
-
- int nbFiles;
- // For all the Single SerieUID Files Sets of the gdcm::Serie
- gdcm::FileList *l = s->GetFirstSingleSerieUIDFileSet();
- while (l)
- {
- nbFiles = l->size() ;
- //if ( l->size() > 3 ) // Why not ? Just an example, for testing
- {
- //std::cout << "Sort list : " << nbFiles << " long" << std::endl;
- s->OrderFileList(l); // sort the list
- }
- l = s->GetNextSingleSerieUIDFileSet();
- }
- s->Delete();
-#endif
+ // Get the reference & directory name
+ const char *reference = argv[1];
+ const char *directory = argv[2];
// Open a file A
// Open another file B
// No -> Return
// Yes: We found a match
- const char filename1[] = "/tmp/PETCT/case1/WHOLEB001_CT001.dcm";
- const char filename2[] = "/tmp/PETCT/case1/CT_PET001_CT100.dcm";
- gdcm::File *fileRef = gdcm::File::New();
- fileRef->SetFileName( filename2 );
+ GDCM_NAME_SPACE::File *fileRef = GDCM_NAME_SPACE::File::New();
+ fileRef->SetFileName( reference );
+ fileRef->SetLoadMode(GDCM_NAME_SPACE::LD_NOSHADOW | GDCM_NAME_SPACE::LD_NOSEQ);
fileRef->Load();
// 0008 0060 CS 1 Modality
std::string modalityRef = fileRef->GetEntryString(0x0008,0x0060);
- if( modalityRef == gdcm::GDCM_UNFOUND ) return 1;
- if ( !gdcm::Util::DicomStringEqual(modalityRef, "CT") ) return 1;
- // 0020 000d UI 1 Study Instance UID
- // 0020 000e UI REL Series Instance UID
+ if( modalityRef == GDCM_NAME_SPACE::GDCM_UNFOUND ) return 1;
+ if ( !GDCM_NAME_SPACE::Util::DicomStringEqual(modalityRef, "CT") ) return 1;
+ // 0020 000d UI 1 Study Instance UID
+ // 0020 000e UI REL Series Instance UID
std::string series_uid_ref = fileRef->GetEntryString(0x0020, 0x000e);
// 0020 0052 UI 1 Frame of Reference UID
std::string frame_uid_ref = fileRef->GetEntryString(0x0020, 0x0052);
// 0020 0032 DS 3 Image Position (Patient)
- gdcm::DataEntry *imagePosRef = fileRef->GetDataEntry(0x0020,0x0032);
+ GDCM_NAME_SPACE::DataEntry *imagePosRef = fileRef->GetDataEntry(0x0020,0x0032);
assert( imagePosRef->GetValueCount() == 3 );
- gdcm::DirList dirList( directory, true );
- const gdcm::DirListType filenames = dirList.GetFilenames();
- gdcm::DirListType::const_iterator it = filenames.begin();
- gdcm::File *file = gdcm::File::New();
+ GDCM_NAME_SPACE::DirList dirList( directory, true );
+ const GDCM_NAME_SPACE::DirListType filenames = dirList.GetFilenames();
+ GDCM_NAME_SPACE::DirListType::const_iterator it = filenames.begin();
+ GDCM_NAME_SPACE::File *file = GDCM_NAME_SPACE::File::New();
+ file->SetLoadMode(GDCM_NAME_SPACE::LD_NOSHADOW | GDCM_NAME_SPACE::LD_NOSEQ);
for( ; it != filenames.end(); ++it)
{
file->SetFileName( *it );
std::string modality = file->GetEntryString(0x0008,0x0060);
// This is a dual modality: modality should be *different*
if( modality == modalityRef ) continue;
- if ( !gdcm::Util::DicomStringEqual(modality, "PT") ) continue;
+ if ( !GDCM_NAME_SPACE::Util::DicomStringEqual(modality, "PT") ) continue;
std::string series_uid = file->GetEntryString(0x0020, 0x000e);
// Not same series !
if( series_uid == series_uid_ref ) continue;
std::string frame_uid = file->GetEntryString(0x0020, 0x0052);
if( frame_uid_ref != frame_uid ) continue;
- gdcm::DataEntry *imagePos = file->GetDataEntry(0x0020,0x0032);
+ GDCM_NAME_SPACE::DataEntry *imagePos = file->GetDataEntry(0x0020,0x0032);
assert( imagePos->GetValueCount() == 3 );
if( imagePos->GetValue(0) == imagePosRef->GetValue(0)
- && imagePos->GetValue(1) == imagePosRef->GetValue(1)
- && imagePos->GetValue(2) == imagePosRef->GetValue(2) )
+ && imagePos->GetValue(1) == imagePosRef->GetValue(1)
+ && imagePos->GetValue(2) == imagePosRef->GetValue(2) )
{
std::cerr << "We found a match: " << *it << std::endl;
}