[intro | Notions de Bases | Agencement de l'information | Applet Dicom | EViewBox ! | Conclusions | Résumé | Références | Glossaire | Idées Reçues ]
Informations habituellement contenues dans un fichier DICOM :
Un fichier DICOM comprends les données correspondantes aux pixels de l'image
, habituellement ces données sont groupées à la fin du fichier DICOM
, elles sont précédées par d'autres données techniques et démographiques.
L'organisation de l'information contenue dans les fichiers DICOM a été inspirée par la sauvegarde des données sur des bandes magnétiques. L'information est organisée sous une forme séquentielle.
Chaque information élémentaire est constituée de 3 champs de données . Le premier champs est codé sur 8 octets, il s'agit d'une "balise" ou "tag" , répertoriée dans le dictionnaire DICOM, qui indique le type d'information qui va suivre. Le deuxième champs de 8 octets indique la longueur de l'information contenue dans le 3ème champs, jusqu' à la balise suivante.
Ainsi une information élémentaire est formée par 3 champs de données successifs :
Exemple : Codage de l'identification du patient :
Si on rencontre dans un flux de données DICOM les éléments suivants en hexadécimal:
00 10 00 20 00 00 00 0A 4A 6F 68 6E 5E 48 65 6E 72 79 ,
Ce flux se décompose ainsi :
4 octets balise groupe |
4 octets balise élément |
8 octets longueur l du champs suivant |
Longueur variable l, information : |
||||||||||||||||||||
0010 |
0020 |
0000000A |
4A 6F 68 6E 5E 48 65 6E 72 79 (ici l = 10 ) |
||||||||||||||||||||
où : 0x0010 correspond dans le dictionnaire au code hexadécimal du groupe de données codant l'information du patient. |
0x0010 0010, balise du dictionnaire indiquant que l'information sera le nom du patient |
Indique la longueur du champs suivant. (ici A en hexadécimal correspond à 10 en décimal ) |
ici signification = ASCII
|
Ces informations se succèdent à la suite les unes des autres dans un ordre de balises croissant, il est ainsi possible d'ignorer certaines informations contenues dans des champs d'information et de passer à la balise suivante , ce qui permet de " sauter " une balise dont on ne connaît pas la signification.
Organisation du Flux de Données :
on trouve ainsi les données suivantes dans le flux DICOM
L'identification de la machine |
|
Les informations sur le patient : |
|
Les informations sur l'acquisition de l'information : |
|
Les informations en rapport avec l'examen : |
|
Les informations concernant l'image elle-même et la façon dont elle est codée. |
|
Les pixels ; |
|
ou encore, d'après un document Philips :
Quelques éléments
intéressants du Dictionnaire DICOM : (Pour les informaticiens)
Chacun des premier champs de 8 octets d'une information élémentaire est décomposé en 2 séries de 4 octets , les 4 premiers octets codent pour un groupe d'information ( exemple groupe 0008H identification de la machine , groupe 0010h identification du patient, groupe 0018H identification de l'image largeur , hauteur etc...) et les 4 octets suivant précisent quel élément du groupe sera définit dans la balise.
Les groupes sont agencés de la façon
suivante :
Group element | Signification |
0000 | Command |
0008 | Identification du centre |
0010 | Information sur le patient |
0018 | Type d'acquisition (épaisseur de coupe, bolus, inclinaison du statif, paramètres kV, temps d'écho etc..) |
0020 | Positionnement et information relatives à l'acquistion (Relationship ) |
0028 | Présentation de l'image (dimensions, niveaux de gris, tables de couleurs) Image Presentation |
4000 | Text |
6000-601E (even) | Overlay, type de compression.... |
7FE0 | Pixel Data, Pixels de l'image. |
Quelques un des éléments les plus intéressants
sont :
(nnnn,0000) BD S Group Length # longueur du groupe en octets nnnn/ l
(nnnn,4000) AT M Comments #commentaires
(0008,0010) AT S Recognition Code # ACR-NEMA 1.0 or 2.0
(0008,0020) AT S Study Date # yyyy.mm.dd
(0008,0021) AT S Series Date # yyyy.mm.dd
(0008,0022) AT S Acquisition Date # yyyy.mm.dd
(0008,0023) AT S Image Date # yyyy.mm.dd
(0008,0030) AT S Study Time # hh.mm.ss.frac
(0008,0031) AT S Series Time # hh.mm.ss.frac
(0008,0032) AT S Acquisition Time # hh.mm.ss.frac
(0008,0033) AT S Image Time # hh.mm.ss.frac
(0008,0060) AT S Modality # CT,NM,MR,DS,DR,US,OT
(0010,0010) AT S Patient Name
(0010,0020) AT S Patient ID
(0010,0030) AT S Patient Birthdate # yyyy.mm.dd
(0010,0040) AT S Patient Sex # M, F, O pour les autres
(0010,1010) AT S Patient Age # xxxD or W or M or Y
(0018,0010) AT M Contrast/Bolus Agent # ou RIEN
(0018,0030) AT M Radionuclide
(0018,0050) AN S Slice Thickness # mm
(0018,0060) AN M KVP
(0018,0080) AN S Repetition Time # ms
(0018,0081) AN S Echo Time # ms
(0018,0082) AN S Inversion Time # ms
(0018,1120) AN S Gantry Tilt # degrés
(0020,1040) AT S Position Reference # exemple crête iliaque
(0020,1040) AN S Slice Location # en mm (signé)
(0028,0010) BI S Rows
(0028,0011) BI S Columns
(0028,0030) AN M Pixel Size # rangées\colonnes en mm
(0028,0100) BI S Bits Allocated # ex. 12 bits pour la TDM
(0028,0101) BI S Bits Stored # ex. 16 bits
(0028,0102) BI S High Bit # ex. 11
(0028,0102) BI S Pixel Representation # 1 signé, 0 non signé
(7FE0,0010) BI M Pixel Data # données image, comme décrites au groupe 0028
Organisation des pixels de l'image DICOM :
(pour les techniciens )
La façon dont les pixels sont sauvegardés peut énormément changer,
bien que heureusement la plupart des utilisateurs et des fabricants utilisent le
schéma le plus simple . Par exemple 1 pixel de 12 bits est sauvegardé dans
un mot de 16 bits sans essayer de le présenter sous une forme plus compacte.
Voici quelques exemples.Notez que lorsque on y ajoute le problème de lecture
little/big endian , les permutations s'effectuent !
Bits Allocated = 16 (Bits alloués )
Bits Stored = 12 (Bits enregistrés )
High Bit = 11 (Bit le plus significatif)
|<------------------ pixel ----------------->|
______________ ______________ ______________ ______________
|XXXXXXXXXXXXXX| | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
---------------------------
Bits Allocated = 16
Bits Stored = 12
High Bit = 15
|<------------------ pixel ----------------->|
______________ ______________ ______________ ______________
| | | |XXXXXXXXXXXXXX|
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
---------------------------
Bits Allocated = 12
Bits Stored = 12
High Bit = 11
------ 2 ----->|<------------------ pixel 1 --------------->|
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
-------------- 3 ------------>|<------------ 2 --------------
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
|<------------------ pixel 4 --------------->|<----- 3 ------
______________ ______________ ______________ ______________
| | | | |
|______________|______________|______________|______________|
15 12 11 8 7 4 3 0
[intro | Notions de Bases | Agencement de l'information | Applet Dicom | EViewBox ! | Conclusions | Résumé | Références | Glossaire | Idées Reçues ]