[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