[Dcmlib] Re: [Gdcm2] [Fwd: Attributes in a derived image (e.g. MPR)]
Jean-Pierre Roux
Jean-Pierre.Roux at creatis.insa-lyon.fr
Thu Jan 19 14:15:59 CET 2006
Hi!
Since a lot of people seem to really wonder what they actually have to
write in the header of Dicom images of their own,
I describe what gdcm does.
It's at least as clever -well, say : at least no more stupid- than what
other people do.
--------------------------------------------------------------------------------------------------------------
We have to deal with 4 *very* different cases :
-1) user created ex nihilo his own image and wants to write it as a
Dicom image.
-2) user modified the pixels of an existing image.
-3) user created a new image, using existing images (eg MIP, MPR,
cartography image)
-4) user anonymized an image without processing the pixels.
gdcm::FileHelper::CheckMandatoryElements() deals automatically with
these cases :
case 1)2)3)4)
0008 0012 Instance Creation Date
0008 0013 Instance Creation Time
0008 0018 SOP Instance UID
are *always* created with the current values; user has *no* possible
intervention on
them.
'Serie Instance UID'(0x0020,0x000e)
'Study Instance UID'(0x0020,0x000d) are kept as is if already exist,
created if it doesn't.
The user is allowed to create his own Series/Studies,
keeping the same 'Serie Instance UID' / 'Study Instance UID' for
various images
Warning :
The user shouldn't add any image to a 'Manufacturer Serie'
but there is no way no to allowed him to do that
None of the 'shadow elements', if any, are droped out.
case 1)
'Modality' (0x0008,0x0060) is defaulted to "OT" (other) if missing.
'Study Date', 'Study Time' are defaulted to current Date and Time.
case 1)2)3)
'Media Storage SOP Class UID' (0x0002,0x0002)
'SOP Class UID' (0x0008,0x0016) are set to
[Secondary Capture Image
Storage]
'Image Type' (0x0008,0x0008) is forced to
"DERIVED\PRIMARY"
'Conversion Type' (0x0008,0x0064) is forced to 'SYN'
(Synthetic Image)
case 2)4)
If 'SOP Class UID' exists in the native image ('true DICOM' image)
we create the 'Source Image Sequence' SeqEntry (0x0008, 0x2112)
--> 'Referenced SOP Class UID' (0x0008, 0x1150)
whose value is the original 'SOP Class UID'
--> 'Referenced SOP Instance UID' (0x0008, 0x1155)
whose value is the original 'SOP Class UID'
case 3)
TODO : find a trick to allow user to pass to the writter the list of the
Dicom images
or the Series, (or the Study ?) he used to created his image
(MIP, MPR, cartography image, ...)
These info should be stored (?) in
0008 1110 SQ 1 Referenced Study Sequence
0008 1115 SQ 1 Referenced Series Sequence
0008 1140 SQ 1 Referenced Image Sequence
case 4)
When user *knows* he didn't modified the pixels, (he just anonymize the
image, for instance)
(he may ask the writer to keep some informations unchanged :
'Media Storage SOP Class UID' (0x0002,0x0002)
'SOP Class UID' (0x0008,0x0016)
'Image Type' (0x0008,0x0008)
'Conversion Type' (0x0008,0x0064)
He has to use gdcm::FileHelper::SetKeepMediaStorageSOPClassUID(true)
If he doesn't we are in case 2)
(probabely name 'SetKeepMediaStorageSOPClassUID' has to be changed)
-------------------------------------------------------------------------------------------------------------------------
Bellow follows the full description (hope so !) of the consistency
checks performed
by gdcm::FileHelper::CheckMandatoryElements()
-->'Media Storage SOP Class UID' (0x0002,0x0002)
-->'SOP Class UID' (0x0008,0x0016) are set to
[Secondary Capture Image
Storage]
(Potentialy, the image was modified by user, and post-processed;
it's no longer a 'native' image)
Except if user told he wants to keep MediaStorageSOPClassUID,
when *he* knows he didn't modify the image (e.g. : he just anonymized
the file)
--> 'Image Type' (0x0008,0x0008)
is forced to "DERIVED\PRIMARY"
(The written image is no longer an 'ORIGINAL' one)
Except if user told he wants to keep MediaStorageSOPClassUID,
when *he* knows he didn't modify the image (e.g. : he just anonymized
the file)
--> Conversion Type (0x0008,0x0064)
is forced to 'SYN' (Synthetic Image)
Except if user told he wants to keep MediaStorageSOPClassUID,
when *he* knows he didn't modify the image (e.g. : he just anonymized
the file)
--> 'Modality' (0x0008,0x0060)
is defaulted to "OT" (other) if missing.
(a fully user created image belongs to *no* modality)
--> 'Media Storage SOP Instance UID' (0x0002,0x0003)
--> 'Implementation Class UID' (0x0002,0x0012)
are automatically generated; no user intervention possible
--> 'Serie Instance UID'(0x0020,0x000e)
--> 'Study Instance UID'(0x0020,0x000d) are kept as is if already exist
created if it doesn't.
The user is allowed to create his own Series/Studies,
keeping the same 'Serie Instance UID' / 'Study Instance UID'
for various images
Warning :
The user shouldn't add any image to a 'Manufacturer Serie'
but there is no way no to allowed him to do that
--> If 'SOP Class UID' exists in the native image ('true DICOM' image)
we create the 'Source Image Sequence' SeqEntry (0x0008, 0x2112)
--> 'Referenced SOP Class UID' (0x0008, 0x1150)
whose value is the original 'SOP Class UID'
--> 'Referenced SOP Instance UID' (0x0008, 0x1155)
whose value is the original 'SOP Class UID'
--> Bits Stored, Bits Allocated, Hight Bit Position are checked for
consistency
--> Pixel Spacing (0x0028,0x0030) is defaulted to "1.0\1.0"
--> Samples Per Pixel (0x0028,0x0002) is defaulted to 1 (grayscale)
--> Imager Pixel Spacing (0x0018,0x1164) : defaulted to Pixel Spacing value
--> Instance Creation Date, Instance Creation Time are forced to current
Date and Time
--> Study Date, Study Time are defaulted to current Date and Time
(they remain unchanged if they exist)
--> Patient Orientation : (0x0020,0x0020), if not present, is deduced from
Image Orientation (Patient) : (0020|0037) or from
Image Orientation (RET) : (0020 0035)
--> Study ID, Series Number, Instance Number, Patient Orientation (Type 2)
are created, with empty value if there are missing.
--> Manufacturer, Institution Name, Patient's Name, (Type 2)
are defaulted with a 'gdcm' value.
--> Patient ID, Patient's Birth Date, Patient's Sex, (Type 2)
--> Referring Physician's Name (Type 2)
are created, with empty value if there are missing.
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Gdcm-developers mailing list
Gdcm-developers at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gdcm-developers
More information about the Dcmlib
mailing list