I've a problem with the value multiplicity, when the value representation is OW. Here is a simple sample code:
Code: Select all
int main(int argc, char *argv[])
{
DcmFileFormat fileformat;
OFCondition status = fileformat.loadFile(argv[1]);
if (status.good())
{
DcmItem *ditem = fileformat.getDataset();
DcmObject *object = NULL;
for( int i = 0; i < ditem -> card(); i++)
{
object = ditem -> nextInContainer( object );
DcmTagKey tagKey = object -> getTag();
DcmVR vr( object->getVR() );
if( vr.getEVR() == EVR_OW )
{
unsigned long vm = object -> getVM();
cout << hex << "(" << tagKey.getGroup() << "," << tagKey.getElement() << dec << "), "
<< vr.getVRName() << ", " << vm << endl;
}
}
}
}
But the dcmdump produces:(5000,3000), OW, 1
(7fe0,10), OW, 1
Could anybody explain it?(5000,3000) OW 001b\001b\001b\001b\001b\001b\001b\001b\001a\001b\001b\001a\001b... # 660, 1 CurveData
(7fe0,0010) OW 2727\2526\2625\2224\2222\2322\2224\181d\1b1a\1b1c\191a\1b1a\1b1a... # 262144, 1 PixelData
(dicom file can be found here: pet.dote.hu/~ogabor)
Thanks