[Dcmlib] 0018 1310 US ACQ Acquisition Matrix
Mathieu Malaterre
mathieu.malaterre at kitware.com
Fri Sep 3 21:17:06 CEST 2004
Salut JP,
J'ai modifier TestChangeHeader pour qu'il essai de modifier
"Acquisition Matrix". Voila les etapes pour reproduire le bug:
cd /tmp
cp gdcmData/012345.002.050.dcm input.dcm
cp gdcmData/012345.002.050.dcm output.dcm
(on peut verifier que vtkgdcmViewer peut ouvrir input.dcm et output.dcm)
Puis compiler l'ex(*), j'ai modifier TestChangeHeader dans mon cas:
gdcmTests TestChangeHeader input.dcm output.dcm
(le test ecris une image output-matrix.dcm)
on peut verifier que output-matrix.dcm est devenu gdcm non readable.
Idee ?
Merci,
Mathieu
(*)
#include "gdcmHeader.h"
#include "gdcmFile.h"
// This examples read two images (could be the same). Try to modify
// Acquisition Matrix and then write the image again
int TestChangeHeader(int argc, char* argv[])
{
if (argc < 3)
{
std::cerr << "usage :" << std::endl <<
argv[0] << " nomFichierPourEntete nomFichierPourDonnées" <<
std::endl;
return 1;
}
gdcmFile *f1 = new gdcmFile( argv[1] );
gdcmFile *f2 = new gdcmFile( argv[2] );
// 0018 1310 US ACQ Acquisition Matrix
gdcmDictEntry *dictEntry =
f2->GetHeader()->GetPubDict()->GetDictEntryByName( "Acquisition
Matrix" );
std::cerr << std::hex << dictEntry->GetGroup() << "," <<
dictEntry->GetElement() << std::endl;
std::string matrix = f2->GetHeader()->GetEntryByNumber(0x0018, 0x1310);
if(matrix != "gdcm::Unfound")
{
std::cerr << "Matrix:" << matrix << std::endl;
f1->GetHeader()->ReplaceOrCreateByNumber( matrix, 0x0018, 0x1310);
//f1->GetHeader()->ReplaceOrCreateByNumber( matrix,
dictEntry->GetGroup(),
// dictEntry->GetElement());
}
f1->GetImageData();
f1->WriteDcmExplVR("output-matrix.dcm");
return 0;
}
More information about the Dcmlib
mailing list