You are on page 1of 5

Curso de Imágenes Médicas - Laboratorio

Núcleo de ingeniería biomédica.


Facultades de medicina e ingeniería.
Universidad de la República Oriental del Uruguay

Práctica 1
Manejo de archivos DICOM

1. Objetivo
Crear, modificar, leer, mandar y recibir imágenes Dicom.

2. Introducción
Las imágenes DICOM se almacenan dentro de archivos binarios conformes a una codificación compleja y
estrictamente definida de información. A mitad de camino
entre el archivo binario y la representación de las imágenes desde un visualizador especializado es posible
una representación xml de los elementos de información contenidos en el archivo DICOM. Esta
representación tiene la ventaja de ser textual, pues de facilitar la lectura del archivo.
Durante esta práctica trabajararemos en paralelo con estos tres niveles de representación (binario, xml,
visualizador especializado) con fin de entender la mecánica íntima del archivo DICOM

3. Material necesario
(1) Manejo básico de un terminal, sea DOS, sea bash u otro en plataforma UNIX, LINUX, MAC.
Capacidad de moverse dentro de la estructura del HD, de ver el contenido de un directorio, de
ejecutar un programa.
(2) tener instalado la caja de herramientas de manejo de dicom mencionadas a continuación:
(3) http://sourceforge.net/projects/dcm4che/files/dcm4che2/2.0.21/dcm4che-2.0.21-bin.zip/download
(4) documentación http://www.dcm4che.org/confluence/display/d2/dcm4che2+DICOM+Toolkit
(5) Tener un programa que permite ver comodamente contenidos binarios en hexadecimal
(6) instalar un visualizador de imagen médica a elección desde la página http://www.idoimaging.com

(7) bajar las partes 3 5 y 6 de la norma dicom edición 2008 desde http://www.dclunie.com/dicom-
status/status.html

(8) Si el estudiante tiene computadora portatíl personal, vale realizar las instalaciones mencionada y
llevarla al curso

4. Ejercicios
Ejercicio 1: no requiere computadora (salvo para leer la documentación)

A continuación se encuentran, la representación xml, el binario con reconocimiento ASCII y el binario


hexadecimal de un mismo fragmento de archivo DICOM. Analyzar el binario hexadecimal, recortándolo
en elementos significativos a describir como en el ejemplo. La correspondencia con las otras
representación ayuda...

<?xml version="1.0" encoding="UTF-8"?>


<dicomfile>
<filemetainfo>
<preamble>73\73\42\0\252\18\66\1\70\1\50\0\176\155\116\26\0\8\0\0\58\6\0\0\252\18\66\1\4\0\0\0\243\81\20\0\101\70\88\65\0\0\0
\0\0\0\0\0\52\3\0\0\10\0\0\0\30\3\0\0\14\0\0\0\70\3\0\0\8\0\0\0\200\4\0\0\50\0\0\0\2\5\0\0\50\0\0\0\82\5\0\0\2\0\0\0\8\0\0\0\0\0\0\0\
198\1\0\0\56\0\0\0\92\5\0\0\2\0\0\0\102\5\0\0\2\0\0\0</preamble>
<attr tag="00020000" vr="UL" pos="132" name="Group Length" vm="1" len="4">202</attr>
<attr tag="00020001" vr="OB" pos="144" name="File Meta Information Version" vm="1" len="2">0\1</attr>
<attr tag="00020002" vr="UI" pos="158" name="Media Storage SOP Class UID" vm="1"
len="28">1.2.840.10008.5.1.4.1.1.12.1</attr>
<attr tag="00020003" vr="UI" pos="194" name="Media Storage SOP Instance UID" vm="1"
len="56">1.3.46.670589.7.5.10.80008191025.20070731.155457.12.1.1</attr>
<attr tag="00020010" vr="UI" pos="258" name="Transfer Syntax UID" vm="1" len="20">1.2.840.10008.1.2.1</attr>
<attr tag="00020012" vr="UI" pos="286" name="Implementation Class UID" vm="1"
len="28">1.2.276.0.7230010.3.0.3.5.4</attr>
<attr tag="00020013" vr="SH" pos="322" name="Implementation Version Name" vm="1" len="16">OFFIS_DCMTK_354 </attr>
</filemetainfo>
<dataset>
<attr tag="00080005" vr="CS" pos="346" name="Specific Character Set" vm="1" len="10">ISO_IR 100</attr>
<attr tag="00080008" vr="CS" pos="364" name="Image Type" vm="4" len="38">ORIGINAL\PRIMARY\SINGLE
PLANE\SINGLE A</attr>
<attr tag="00080016" vr="UI" pos="410" name="SOP Class UID" vm="1" len="28">1.2.840.10008.5.1.4.1.1.12.1</attr>
<attr tag="00080018" vr="UI" pos="446" name="SOP Instance UID" vm="1"
len="56">1.3.46.670589.7.5.10.80008191025.20070731.155457.12.1.1</attr>
<attr tag="00080020" vr="DA" pos="510" name="Study Date" vm="1" len="8">20070731</attr>
<attr tag="00080021" vr="DA" pos="526" name="Series Date" vm="1" len="8">20070731</attr>
<attr tag="00080022" vr="DA" pos="542" name="Acquisition Date" vm="1" len="8">20070731</attr>
<attr tag="00080030" vr="TM" pos="558" name="Study Time" vm="1" len="12">143119.0000 </attr>
<attr tag="00080031" vr="TM" pos="578" name="Series Time" vm="1" len="12">143119.0000 </attr>
<attr tag="00080032" vr="TM" pos="598" name="Acquisition Time" vm="1" len="12">145932.0000 </attr>
<attr tag="00080050" vr="SH" pos="618" name="Accession Number" vm="0" len="0"/>
<attr tag="00080060" vr="CS" pos="626" name="Modality" vm="1" len="2">XA</attr>
<attr tag="00080070" vr="LO" pos="636" name="Manufacturer" vm="1" len="38">Philips Medical Systems (Netherlands) </attr>
<attr tag="00080080" vr="LO" pos="682" name="Institution Name" vm="1" len="14">HHHHH HOSPITAL</attr>
<attr tag="00080081" vr="ST" pos="704" name="Institution Address" vm="0" len="0"/>
<attr tag="00080090" vr="PN" pos="712" name="Referring Physician's Name" vm="0" len="0"/>
<attr tag="00081010" vr="SH" pos="720" name="Station Name" vm="1" len="6">VISUB </attr>
<attr tag="00081050" vr="PN" pos="734" name="Performing Physician's Name" vm="1" len="2">VP</attr>
<attr tag="00081070" vr="PN" pos="744" name="Operator's Name" vm="1" len="2">VP</attr>
<attr tag="00081090" vr="LO" pos="754" name="Manufacturer's Model Name" vm="1" len="28">P H I L I P S INTEGRIS
V</attr>
<attr tag="00100010" vr="PN" pos="790" name="Patient's Name" vm="1" len="14">DE XXXX^YYYYY </attr>
<attr tag="00100020" vr="LO" pos="812" name="Patient ID" vm="1" len="10">7777777-1 </attr>
<attr tag="00100030" vr="DA" pos="830" name="Patient's Birth Date" vm="1" len="8">19360520</attr>
<attr tag="00100040" vr="CS" pos="846" name="Patient's Sex" vm="1" len="2">F </attr>
<attr tag="00180060" vr="DS" pos="856" name="KVP" vm="1" len="2">83</attr>
<attr tag="00181020" vr="LO" pos="866" name="Software Version(s)" vm="3" len="18">7.7.2\5.3.1\3.3.1 </attr>
<attr tag="00181030" vr="LO" pos="892" name="Protocol Name" vm="1" len="14">Cerebral (fr) </attr>
<attr tag="00181065" vr="DS" pos="914" name="Frame Time Vector" vm="10"
len="40">0.0\320\320\320\320\320\320\320\320\240 </attr>
<attr tag="00181066" vr="DS" pos="962" name="Frame Delay" vm="1" len="4">320 </attr>
<attr tag="00181110" vr="DS" pos="974" name="Distance Source to Detector" vm="1" len="4">1094</attr>
<attr tag="00181150" vr="IS" pos="986" name="Exposure Time" vm="1" len="4">150 </attr>
<attr tag="00181151" vr="IS" pos="998" name="X-ray Tube Current" vm="1" len="4">182 </attr>
<attr tag="00181155" vr="CS" pos="1010" name="Radiation Setting" vm="1" len="2">GR</attr>
<attr tag="00181162" vr="DS" pos="1020" name="Intensifier Size" vm="1" len="10">169.99998 </attr>
<attr tag="00181500" vr="CS" pos="1038" name="Positioner Motion" vm="1" len="6">STATIC</attr>
<attr tag="00181510" vr="DS" pos="1052" name="Positioner Primary Angle" vm="1" len="12">-0.40000001 </attr>
<attr tag="00181511" vr="DS" pos="1072" name="Positioner Secondary Angle" vm="1" len="12">-0.40000001 </attr>
<attr tag="00190010" vr="LO" pos="1092" vm="1" len="16">CARDIO-D.R. 1.0 </attr>
<attr tag="00191000" vr="CS" pos="1116" vm="2" len="20">RECTANGULAR\CIRCULAR</attr>
<attr tag="00191002" vr="IS" pos="1144" vm="1" len="2">1 </attr>
<attr tag="00191004" vr="IS" pos="1154" vm="1" len="4">1024</attr>
<attr tag="00191006" vr="IS" pos="1166" vm="1" len="2">1 </attr>
<attr tag="00191008" vr="IS" pos="1176" vm="1" len="4">1024</attr>
<attr tag="00191010" vr="IS" pos="1188" vm="2" len="8">512\512 </attr>
<attr tag="00191012" vr="IS" pos="1204" vm="1" len="4">570 </attr><attr tag="0020000D" vr="UI" pos="1216" name="Study
Instance UID" vm="1" len="50">1.3.46.670589.7.5.8.80008191025.20070731.143119.1</attr><attr tag="0020000E" vr="UI"
pos="1274" name="Series Instance UID" vm="1" len="50">1.3.46.670589.7.5.7.80008191025.20070731.143119.1</attr>
<attr tag="00200010" vr="SH" pos="1332" name="Study ID" vm="1" len="14">31072007143119</attr>
<attr tag="00200011" vr="IS" pos="1354" name="Series Number" vm="1" len="2">1 </attr>
<attr tag="00200012" vr="IS" pos="1364" name="Acquisition Number" vm="1" len="2">12</attr>
<attr tag="00200013" vr="IS" pos="1374" name="Instance Number" vm="1" len="2">12</attr>
<attr tag="00200020" vr="CS" pos="1384" name="Patient Orientation" vm="0" len="0"/>
<attr tag="00201002" vr="IS" pos="1392" name="Images in Acquisition" vm="1" len="2">1 </attr>
<attr tag="00280002" vr="US" pos="1402" name="Samples per Pixel" vm="1" len="2">1</attr>
<attr tag="00280004" vr="CS" pos="1412" name="Photometric Interpretation" vm="1" len="12">MONOCHROME2
4449434D02000000554C0400CA000000
020001004F4200000200000000010200
020055491C00312E322E3834302E3130
3030382E352E312E342E312E312E3132
2E310200030055493800312E332E3436
2E3637303538392E372E352E31302E38
303030383139313032352E3230303730
3733312E3135353435372E31322E312E
31000200100055491400312E322E3834
302E31303030382E312E322E31000200
120055491C00312E322E3237362E302E
373233303031302E332E302E332E352E
340002001300534810004F464649535F
44434D544B5F33353420080005004353
0A0049534F5F49522031303008000800
435326004F524947494E414C5C505249
4D4152595C53494E474C4520504C414E
455C53494E474C452041080016005549
1C00312E322E3834302E31303030382E
352E312E342E312E312E31322E310800
180055493800312E332E34362E363730
3538392E372E352E31302E3830303038
3139313032352E32303037303733312E
3135353435372E31322E312E31000800
20004441080032303037303733310800
21004441080032303037303733310800
2200444108003230303730373331...

4449434D DICM firma en caracteres ASCII que indica que se trata de un archivo
DICOM
02000000 tag (0002,0000) escrito en ELE
554C UL en caracteres ASCII. Datatype unsigned long del tag (0002,0000)
0400 4 bytes, tamaño del tag de tipo unsigned long
CA000000 202, valor del tag

02000100 tag (0002,0000)


4F42 OB Byte String "Other Byte String "
"OB is a VR which is insensitive to Little/Big Endian byte ordering
The string of bytes shall be padded with a single trailing NULL byte value
(00H) when
necessary to achieve even length."
00000200 2 bytes
00000001 0000\0001

... (seguir)
Ejercicio 2:
crear un archivo DICOM desde un archivo JPG usando la herramienta jpg2dcm y verlo desde el
visualizador DICOM. El instructivo relativo al comando se encuentra en la documentación. Se puede usar
los archivos de configuración homer.jpg y homer.cfg que se encuentran en la subcarpeta etc/jpg2dcm
como ejemplos.

Ejercicio 3:
Usar transformaciones dcm2xml y xml2dcm para transformar el nombre del paciente y cambiar el jpg
también. Por ejemplo reemplazándolos por sus propios nombres y fotos. Llevar una foto suya en su
memoria usb o computadora...

Ejercicio 4:
Arrancar un receptor de archivo DICOM o configurar el que viene con la aplicación de visualización
dicom, y mandar el archivo que hemos creado a este destino mediante el comando dcmsnd del toolkit

You might also like