NOCIONES BÁSICAS SOBRE COMUNICACIÓN Y ALMACENAMIENTO DE IMÁGENES EN DICOM RODOLFO GROSSO [email protected] 1. Historia de DICOM Antes de 1970 los equipos que proporcionban imágenes médicas eran analógicos. Al aparecer la tomografı́a computada y otras técnicas de dianóstico digital comienza el mundo digital. Surgen dos temas importantes en el mundo digital: 1. El formato de los archivos: Al principio se trabajó separadamente con archivos de imagen y archivos de datos del paciente. Esta separación conducı́a a errores, por lo que surge la idea de formar archivos que contengan imágenes y datos. 2. La interconexión de equipos. Se produjo un aumento del número de equipos de imagen digitales, que entre si debı́an interconectarse. Por ejemplo, un equipo CT genera imágenes que deben ser guardadas en un servidor, o el equipo de CT genera imágenes que deben ser impresas en una placa. Diferentes fabricantes de equipos trabajaban con diferentes formatos de archivos que hacı́an muy difı́cil o imposible a un equipo decodificar la imagen generada por otro o la comunicación entre equipos de diferentes fabricantes. Ası́ aparece el concepto de PACS (Picture Archiving and Communication System) que son sistemas computarizados para el almacenamiento y comunicación de imágenes digitales médicas. Todo esto implica que debe haber un protocolo de entendimiento entre los equipos en cuestión. El American College of Radiology (ACR) y el National Electrical Manufacturers Association (NEMA) reconocieron la necesidad de la existencia de un standard para transferir imágenes e información entre equipos hechos por fabricantes diferentes. Ası́ formaron en 1983 un comité conjunto para desarrollar un standard para: 1. Tener un formato común de imágenes digitales independientemente del fabricante de los dispositivos. 1 2 RODOLFO GROSSO 2. Tener un protocolo común de trabajo y diálogo para todos los equipos facilitando el desarrollo y expansión de PACS que a su vez pueden también tener interfaces con otros sistemas de información hospitalaria. 3. Permitir la creación de bases de datos de información de diagnósticos que puedan ser consultadas por una gran cantidad de dispositivos distribuidos geográficamente. El resultado ha sido la creación de una norma, la cual tiene diferentes versiones: − Versión 1.0 en 1985 ACR/NEMA − Versión 2.0 en 1988 − Versión 3.0 en 1993 llamada DICOM. Se encuentra en http://medical.nema.org/ 2. Introducción a la norma DICOM Definición. Dicom (Digital Imaging and Communication in Medicine) es el estándar reconocido mundialmente para la creación, transmisión, almacenamiento, intercambio y visualización de imágenes médicas, formas de onda, reportes, etc.. Dimensiones de DICOM. Mientras en principio uno puede pensar a DICOM como un simple formato de archivos de imágenes médicas, es un standard mucho más amplio que trata sobre todos los temas concernientes al flujo de trabajo clı́nico. Las dimensiones de DICOM son: DICOM para transferencia de imágenes - Los archivos DICOM pueden intercambiarse entre dos entidades que tengan capacidad de recibir imágenes y datos de pacientes en formato DICOM. Considera la definición de un formato de archivo y un protocolo de comunicación de red. Para esto define Information Objets (Objetos de Información), Estructura de archivo, Service-object pair (Pares objetos-servicio) y Sintaxis de transferencia. Consistencia en la presentación de imágenes Conformance Statement Los diferentes dispositivos de trabajo tienen una declaración de conformidad DICOM (conformance statements) que establece claramente las clases DICOM que soportan. Ası́ DICOM permite la integración de dispositivos de red de múltiples proveedores. Integración con sistemas de información hospitalaria, PACS, RIS e HIS Intercambio de media DICOM 3 Modelo utilizado por DICOM. DICOM considera los datos del mundo real, imágenes, usuarios, estudios, equipamientos médicos, mediante un modelo abstracto de datos orientado a objetos1. En este modelo se definen Objetos de información y clases de servicios. En la parte 3 de la norma incisos 6 y 7 se define el modelo de información DICOM, mostrando los esquemas entidad relación. Es conveniente dar una mirada a estos esquemas, que por su extensión no son reproducidos en este documento. Si bien estos esquemas son completos, usaremos una versión muy simplificada para fijar ideas utilizando la figura 1. Ası́ entnces, y como se describe en [7], se tiene un modelo en que un paciente puede tener 1..n estudios, cada estudio 1..n series y una serie (que normalmente corresponde a una modalidad especı́fica o posición) contiene 1..n instancias de objetos, en general imágenes, reportes, formas de onda, etc. Este es el criterio sguido del modelo general. Figura 1. Un esquema muy simplificado del modelo entidad-relación de DICOM. Extraı́da de [7]. Sobre el estudio de DICOM. Se recomienda que frente a consultas sobre elementos de DICOM se acuda a la norma. Además los siguientes sitios proporcioan definiciones claras y cortas en general. http://www.medicalconnections.co.uk/ http://www.otpedia.com/index.cfm http://www.dicomlibrary.com/dicom/transfer-syntax/ http://www.leadtools.com/ 1No es un modelo que se ajuste exactamente a la programación orientada a objetos, ya que se empezó a gestionar con anterioridad a la consolidación de las definiciones de la POO. Ası́ es que dentro de DICOM, “clase” se refiere en general al modelo OSI ACSE (mecanismo para establecer un enlace lógico entre Application Entities) y “objeto” al sistema de identificación de objetos ISO OID. 4 RODOLFO GROSSO 3. Imágenes Digitales Imagen digital (en escala de grises). Una imagen digital está compuesta de un número finito de elementos llamados pixels dispuestos en filas y columnas. Un pixel es el componente elemental de la imagen y tiene un lugar y valor de brillo determinados. Figura 2. Imagen digital como una matriz de pixels. Extraı́da de [13] Una imagen digital se puede representar matemáticamente como una función de dos dimensiones f (x, y), donde x e y son las coordenadas en un plano y la amplitud de f es el llamado nivel de gris de la imagen en el punto, siendo x, y y f (x, y) cantidades discretas. Los valores de f (x, y) en una imagen monocromática usual van de 0 a 255, representando los diferentes niveles de gris de la imagen. Figura 3. El valor de un pixel se puede ver com una función de sus coordenadas. Representación de imágenes digitales. Tipos de representaciones de imágenes DICOM Figura 4. 5 Imagen como una función de dos dimensiones. − Formatos bitmaps La imagen se representa como una matriz de pixels. − Formatos vectoriales. Utiliza elementos geométricos para definir los valores de los pixels. Segmentos, polı́gonos, curvas de Bezier. Ejemplos son las letras. Las imágenes bitmaps al hacer zoom pixelan. Las vectoriales no, porque los valores estan definidos a partir de ecuaciones. Las vectoriales ocupan menos espacio de almacenamiento y requieren más procesamiento. Programas de dibujos que (posiblemente después sea necesario ampliarlos), como el Corel Draw usan vectoriales. Paint y similares usan bitmaps. Parámetros de interés en una imagen bitmap. Dimensiones. Corresponde al nro de columnas por el nro de filas. Figura 5. La misma imagen en diferentes resoluciones. Si se las lleva a ocupar una misma área se produce pixelado y pérdida de definición. Extraı́da de [13] Observación. Cuando se observa una imagen se habla de: Resolución por tamaño que constituye la dimensiones de la imagen, cantidad de pixels de ancho x cantidad de pixels de alto. Ejemplo 640x480 es un tamaño usual. También se habla de Resolución por densidad que indica cuantos pixels se encuentran en un cuadrado de una pulgada de lado (dpi/ppp, puntos por pulgada) 6 RODOLFO GROSSO Observación. Un megapı́xel o megapixel (Mpx) equivale a 1 millón de pı́xeles, a diferencia de otras medidas usadas en la computación en donde se suele utilizar la base de 1024 para los prefijos, en lugar de 1000, debido a su conveniencia respecto del uso del sistema binario. Usualmente se utiliza esta unidad para expresar la resolución de imagen de cámaras digitales; por ejemplo, una cámara que puede tomar fotografı́as con una resolución de 2048x1536 pı́xeles se dice que tiene 3,1 megapı́xeles Relación de aspecto. Se llama relación de aspecto a la proporción entre el ancho y el alto de la imagen. Se calcula dividiendo el ancho por el alto de la imagen, y se expresa normalmente como X:Y. Relaciones usuales son: 4:3 televisión común, 16:9 tv de alta definición, 1.85:1 y 2.39:1 cine, 3:2 fotografı́a. Modo de vistas de una imagen. Las imágenes se ven en los modos landscape y portrait. Profundidad. Se llama profunfdidad o resolución en escala de grises a la cantidad de bits utilizados para codificar cada pixel, por ejemplo, puede codificarse un pı́xel con un byte (8 bits), de manera que cada pı́xel admite hasta 256 variaciones, de 0 a 255. Figura 6. Imagen de RX en diferentes profundidades de escala de grises. Extraı́da de [13] Tabla con distintas imágenes médicas y sus parámetros. En la tabla de la figura 7 se muestran órdenes de valores de algunos parámetros para diferentes modalidades. Imagen color. Existen diferentes formas de introducir el color. La más simple de entender es la que permite crear un color compuesto por los tres colores primarios (rojo, verde y azul) según el sistema de mezcla aditiva. De esta forma, en función de la cantidad de cada uno de ellos que se use en DICOM Figura 7. 7 Parámetros según diferentes modalidades. cada pı́xel será el resultado del color final del mismo. En una imagen color un pixel es la tripleta de valores. En las imágenes llamadas de color verdadero, normalmente se usan tres bytes (24 bits), uno para cada primario. Modelo de color. Para poder visualizar, almacenar y procesar la información numérica que se representa de cada pı́xel, se debe conocer además el modelo de color que se está utilizando. Por ejemplo, el modelo de color RGB. Compresión. Definición. La compresión de datos es el proceso de reducción de la cantidad de bits necesarios para representar una cierta información. Siendo n1 la cantidad de bits de los datos originales y n2 la de los datos comprimidos, llamamos relación de compresión a Rc = nn12 . Compresor Decompresor Proceso. Datos originales −−−−−−−→ datos comprimidos −−−−−−−−→ Datos Recuperados. Clasificación. − Compresión sin pérdidas: la información recuperada coincide con la original. Aplicaciones informáticas, imágenes médicas, imágenes satelitales. Se logran relaciones de compresión de 3 o 4. 8 RODOLFO GROSSO − Compresión con pérdidas: la información recuperada es una aproximación de la origianl. La calidad depende de la aplicación. Ej fotos y videos. Se logran compresiones de 10 a 100. Procedimientos aplicados. − Sı́mbolos más probables se representan con menos bits (codificación estadı́stica) − Muchos sı́mbolos iguales por ej aaaaaaaabbbaaa se representa como 8a,3b,3a (Run Length Coding) − Otros procedimientos más sofisticados Formatos usados en imágenes médicas. − − − − − − Sin comprimir RLE DICOM JPEG lossless JPEG lossy (revisión) JPEG LS JPEG-2000 Metadata de una imagen médica. Se entiende por metadata como datos relativos a un dato. Metadata de cualquier imagen. Todos los formatos de imágenes contienen metadatos. − − − − − − formato de imagen dimensiones profundidad técnica usada para la captura identificación equipamiento metadata geográfica y cronológica Metadata de una imagen médica. Además tiene: − − − − − nombre paciente profesionales estudio serie enlaces a la historia clı́nica DICOM 4. 9 Objetos de Información Definidos DICOM define un conjunto de clases de objetos que proporcionan un modelo del mundo de las imágenes médicas. Definición. DICOM llama IOD (Information Object Definition, Objeto de Información Definido), a una clase de objetos que comparten las mismas propiedades o atributos. Los IODs los podemos pensar como un template con un conjunto de atributos, describiendo cada objeto de datos, que se usa una y otra vez. IOD’s definidos en la norma son, entre otros: − CR: Radiografı́a computada (radiografı́a en que se escanéa la placa fotoestimulable y se pasa a digital) − CT: Tomografı́a computada − MR: Resonancia magnética − NM: Medicina nuclear − US: Ultrasonido, ecografı́as, eco Doppler − US-MF − SC: Segunda captura − RX Angiografı́as − PET − Mamografı́a digital − Formas de onda (Electrocardiogramas, etc) − Reportes − Campos visuales − Etc Ejemplo. Un IOD imagen de tomografı́a computada, puede describirse por su cantidad de filas y columnas, cantidad de bits por pixel, si tiene compresión o no, nombre del paciente, la propia imagen, etc. En sentido amplio, una imagen de CT, como cualquier otro objeto DICOM, es el conjunto de atributos de los cuales consiste, como se puede ver en la figura 8. Una instancia de un IOD es una representación de una ocurrencia de un objeto del mundo real, la cual tiene valores para los atributos de la clase, por ejemplo cierta imagen de CT en particular, como se muestra en la figura 9. En un objeto existen atributos obligatorios, por ejemplo en una imagen la cantidad de filas y columnas y otros opcionales (información embebida en el archivo DICOM por el fabricante del equipo de captura). Identificación de los atributos: Tag. Como vimos, diferentes atributos para el IOD CT image son número de filas, número de columnas, cantidad de bits por pixel, etc. Surge la necesidad de identificarlos, para lo cual DICOM utiliza un tag. Cada tag está codificado como un par ordenado de enteros 10 RODOLFO GROSSO Figura 8. Ejemplo simplificado de una clase DICOM, donde se muestra al IOD image CT como un conjunto de atributos. Figura 9. Una instancia de la clase IOD image CT. sin signo de 16 bits, donde el primer número representa el Group Number y el segundo el Element Number. El group number es un identificador que nos dice a que entidad de información se aplica el tag, por ejemplo 0028 está dedicado a información acerca de una imagen, etc. El element number identifica la interpretación del valor tal como es la cantidad de filas, etc). En la literatura siempre aparece en la forma de dos grupos de cifras hexadecimales separadas por coma, entre paréntesis, como podemos apreciar en la figura 10. En la parte 6 de la norma se encuentran todos los tags utilizados por DICOM. También en el sitio: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/DICOM.html DICOM 11 Figura 10. En el tag (0028, 0010), 0028 especifica al grupo de atributos de imagen y 0010 la cantidad de filas. Tipos básicos definidos para encapsular los datos: VRs. Los datos clı́nicos se encuentran en una amplia variedad de formatos. Distancias pueden ser medidas en milı́metros, tiempo en segundos, los nombres de los pacientes son tı́picamente escritos en caracteres alfabéticos, etc. Para trabajar con esta multitud de formatos, DICOM define en la parte 5 del standard 27 tipos básicos de datos, conocidos como Value Representations (VRs), los cuales se encuentran diseñados para encapsular todos los posibles tipos de datos clı́nicos. Ası́ los VR describen el tipo de datos y el formato de los valores de los atributos. Por ejemplo, para la edad DICOM define un string de caracteres con el formato nnnD, nnnW, nnnM, nnnY, donde nnn es el número de dı́as para D; etc. Por ejemplo 018M representa una edad de 18 meses. Cada VR tiene su propia abreviatura de dos letras, una definición de lo que representa, una descripción de que caracteres son permitidos en sus datos y una longitud preestablecida de los datos. En la figura 11 se muestran algunos valores definidos de VR. Existen VRs adecuados para encapsular diferentes tipos de datos. Ası́ es que hay VRs para diferentes formas de textos (como ser SH=string de shorts, LO=string de longs, etc), para fechas y horas (DA fecha, TM hora etc), para encapsular números en diferentes formatos binarios (SS=signed short, US=unsigned short, etc), para guardar nombre de personas, para guardar nombres de entidades de aplicaciones e identificadores de (AEs y UIDs que veremos más adelante), etc. Existen valores de ciertos VRs que indican que los datos tienen una longitud fijada o limitada y otros no. DICOM Data Dictionay. El registro de todos los atributos standarizados, usados en medicina digital se encuentra en el Data Dictionary de DICOM que constituye la parte 6 de la norma. Para ordenar estos más de 2000 ı́tems, se dividen en grupos, basados en las similaridades de los contenidos y cada grupo tiene elementos individuales. En la figura 12, se muestra una parte del Data Dictionary, con algunos atributos y sus correspondientes tags. Construcción de los IODs. Si bien los objetos de DICOM se construyen a partir de atributos, es necesario una estructura dada la gran cantidad de atributos del Data Dictionary y por el hecho que cualquier combinación 12 RODOLFO GROSSO Figura 11. Algunos valores definidos de VR (extraı́da de [1]). Figura 12. Fragmento del Data Dictionary (extraı́do de [?]). La columna VM, Value Multiplicity, indica si el elemento relacionado puede contener un solo valor de su tipo de VR o varios. Por ejemplo, (0010,1001), “Other Patient Names” puede incluir más de un nombre, ası́ su multiplicidad se marca como “1 − n”, donde n es cualquier número. Para poner diferentes valores en un solo elemento DICOM concatena los valores, ver más detalles en 5.4.1 de [9] posible no es válida. No podemos tomar algunos atributos de MR, otros de CT, insertar una imagen de US y decir que es un objeto DICOM. Los atributos son los bloques constructivos elementales y pueden no necesariamente encajar juntos. Por ello, en la parte 3 de la norma “Information Object Definitions”, se describen los atributos requeridos, condicionales y opcionales DICOM 13 para cada tipo particular de objeto DICOM. Para ello se utiliza una estructura que agrupa los atributos en bloques jerárquicos usados para construir objetos coherentes. Éstos bloques son: Macro-atributes, Information Modules, Information Entities (IEs) e IODs. Macro-Atributes. A menudo es preferido agrupar atributos complementarios para realizar una descripción. DICOM llama a estos grupos de caracterı́sticas complementarias “Macro atributes”. Por ejemplo, el macro Image pixel contiene número de filas, número de columnas, cantidad de bits por pixel, etc, como se muestra en la figura 13. Figura 13. Parte del macro atributo Image pixel (extraı́da de [2]). El signo de > que aparece en algunos casos indica que es un atributo de cada ı́tem de la definida en la lı́nea previa. Las macros no corresponden a ningun objeto en particular y ayudan a evitar repeticiones. Information Module. Los módulos proveen un primer y esencial nivel de organización de atributos. Por ejemplo, el General Image Module que se muestra en la figura 14 agrupa infomación general de imágenes. Information Entities. Las IEs están contruidas de los Information modules simplemente listando los módulos que debe incluir. Por ejemplo, IE image que incluye el General Image Module, Image Plane Module, etc. Podemos preguntarnos ¿porqué necesitamos IEs si ya tenemos Information modules? Los IEs representan el nivel de complejidad siguiente en el modelo de información de DICOM. Si los módulos estaban destinados a combinar atributos relacionados, IEs fueron diseñados para representar entidades de la vida real implicadas en el flujo de trabajo médico. IODs. Combinando de un modo significativo IEs contruimos los IODs que constituyen la jerarquı́a más alta en el modelo de información de DICOM. Estos son los objetos usados en DICOM, o sea el procesamiento de datos completo de DICOM se realiza en térmionos de los IODs. Los IODs estan 14 RODOLFO GROSSO Figura 14. Parte del Information Module Image (extraı́da de [2]). formados para representar los tipos de datos más comunes en imágenes digitales, tales como imágenes de diferentes modalidades. En la figura 15 se muestra como podemos construir una IOD CT image a partir de u conjunto apropiado de IEs e Information Modules. Figura 15. Ejemplo de formación del IOD CT image a partir de IEs e Information modules (extraı́da de [2]). DICOM 15 Enhaced IODs. Existen IODs llamados enhanced. Enhanced significa mejorado, los IOD para tomografı́a, resonancia, etc, inicialmente tenı́an muchos atributos opcionales. La nueva versión de estos IOD, llamada “enhanced”, se encuentra prevista para soportar series más grandes, define muchos atributos obligatorios y pocos opcionales, reduciendo ası́ la cantidad de atributos privados y mejorando la interoperabilidad. Identificación de IODs. Al igual que en la industria se asignan números de identificación únicos para partes, en DICOM los objetos de información y demás elementos (SOP class, etc.) son identificados de manera única. Para ello DICOM ha adoptado el concepto de OID (Object IDentifier) utilizado por la ISO, que los llama con el nombre UID (Unique IDentifier). Estos identificadores constutuyen un string de números separados por puntos con una única raı́z para cada organización que es registrada por ISO y otros organismos. Ası́ por ejemplo se tiene el identificador: 1.2.840.10008.1.2 que corresponde a la sintaxis de transferencia Implicit VR Little Endian, el 1 identifica la ISO, el 2 la rama del miembro de la ISO, el 840 el código del miembro en el paı́s, en este caso ANSI y el 10008 está registrado por ANSI a NEMA para DICOM. Por ejemplo en el caso de un vendedor, una instancia de un IOD CT puede tener un UID: 1.2.840.113619.2.999999.940623.170717 donde el vendedor de USA registrado como 113619 es GE. IOD Reporte estructurado. Dado que el formato y contenido de un reporte depende del estudio en cuestión, no siendo lo mismo por ejemplo un reporte de una radiologı́a que de un estudio por ultrasonido, DICOM utiliza un IOD llamado DICOM Structured Reporting (DICOM SR) que utiliza listas, relaciones de jerarquı́a, contenido de texto plano, numérico y codificado, relación entre conceptos y referencias embebidas a imágenes y objetos similares. 5. Clases Objeto-Servicio Dado que DICOM está pensado para permitir que dispositivos de imágenes sean conectados juntos en una red, el standard no sólo define objetos, sinó además los mecanismos por los cuales los dispositivos pueden interoperar. Servicios DICOM. Las entidades de aplicación de DICOM proveen servicios unas a otras. Estos servicios se cumplen en DICOM usando construcciones conocidas como operaciones o notificaciones. DICOM define un conjunto de notificaciones y operaciones genéricas elementales que las llama 16 RODOLFO GROSSO DICOM Message Service Elements (DIMSEs). Los servicios se encuentran construı́dos sobre esos servicios elementales. Definición. DIMSE, DICOM Message Service Element son comandos de mensajes elementales de forma que mediante ellos o sus agrupaciones entidades de aplicación DICOM proveen servicios unas a otras. Existen dos categorı́as de DIMSE’s: las operaciones tal como “store” y las notificaciones tal como “event report”. Algunos servicios son: − C-STORE: Es el servicio invocado por un DIMSE-service-user para solicitar el almacenamiento de una instancia de un IOD. − C-FIND: Es el servicio invocado por un DIMSE-service-user donde envı́a dos conjuntos de atributos. Un conjunto corresponde a atributos de IOD’s con valores los cuales deben ser matcheados contra los valores de esos atributos en un conjunto de instancias deIOD’s (lo que serı́a un WHERE en SQL) y otro conjunto de atributos cuyos valores los envı́a en blanco para que el proveedor del servicio envı́e los correspondientes valores de esos atributos que matchearon (lo que serı̀a un SELECT en SQL). − C-MOVE: Es el servicio invocado por un DIMSE-service-user para mover información de una entidad a otra basado en los atributos suministrados.. − C-GET: Es el servicio invocado por un DIMSE-service-user para traer la información de uno o más IOD’s basados en los atributos suministrados. Es como un C-MOVE a si mismo. − C-ECHO: Es el servicio invocado por un DIMSE-service-user para verificar una comunicación end-to-end. Es más que un ping común. Más servicios se pueden encontrar en la norma, y una buena explicación en [11] Pares objeto-servicio. Dado que un servicio usualmente implica algún intercambio de datos, es natural asociar tipos de servicios particulares con los datos (IODs) que ellos procesan. Definición. Se llama Service-Object Pair a la asociación de un servicio con un IOD. Como DICOM es un standard orientado a objetos, los agrupa en clases y habla de SOP class (ver figura 16). Por ejemplo, como se muestra en la figura 17, un servicio puede ser almacenar y el objeto puede ser una imagen de CT con lo que se crea la clase SOP almacenar imagen de CT. Al igual que para los IOD’s, una SOP class es “guardar una imagen de CT” y una SOP instancia de esa clase es “guardar determinada imgen de CT”, como se muestra en la figura 17. DICOM Figura 16. 17 Definición de SOP. Extraı́do de [8] Figura 17. Clase de servicio de almacenamiento de imágenes CT (extraı́da de [8]). Observar como repaso, que la clase tiene un determindo UID de la base organizacional DICOM mientras que la instancia otro con otra base organizacional. SCU y SCP. Las entidades de aplicación de Dicom proveen servicios unas a otras. Ası́ una entidad Dicom puede pedir un servicio a otra y esta última proveer un servicio a la primera. En Dicom se llama SCU a la entidad que pide un servicio y SCP a la que lo proveé. Ası́ AE’s pueden funcionar como SCU y SCP para comunicarse una con otra. En la figura 18 se muestra un ejemplo. Figura 18. Ejemplo de SCU y SCP. Extraı́do de [9] 18 RODOLFO GROSSO Dicom Command Dictionary. Los comandos como Guardar, Obtener, etc no aparecen en el Data Dictionay de Dicom. Estos comandos se codifican con el mismo formato que para Data Elements, usando el grupo de comandos 0000. Por ejemplo (0000,0100) es usado para representar el “command type” y (0000,0110) para representar “command message ID”. La norma Dicom no provee un diccionario unificado de comandos. En su lugar explica el uso y contenidos de diferentes mensajes de comando en la parte 7. Conformance Statements. Es una declaración que especifica clases de servicio, objetos de información, protocolos de comunicación, etc., soportados por la implementación especı́fica del estandard DICOM. Cumple un formato estandarizado en la parte 2 de la norma. www.dcm4che.org/docs/conformance/dcm4chee-cs.pdf 6. Sintaxis de transferencia Cuando dos entidades negocian una conexión deben ponerse de acuerdo sobre el presentation context que es una combinación de que información es intercambiada (Abstract Syntax, SOP class) y como se encuentra codificada (Transfer Syntax). Debe especificarse una lista de sintaxis de transferencia para cada SOP class cuando una entidad DICOM comienza su negociación. La sintaxis de transferencia define como es intercambida la información y como son representados los datos. Especifica: − El endianismo o byte ordering (Little Endian or Big Endian) 2, Cuando estos números viajan entre sistemas con diferentes tipos de Endian sus tipos de Endian deben ser convertidos apropiadamente, sinó se recibe cualquier cosa. Para evitar errores en la transferencia, las aplicaciones DICOM siempre mantienen un seguimiento de sus tipos de Endian. Para ello DICOM reserva Little Endian como su tipo de ordenamiento de bytes por defecto. − Si es especificado o no el VR (VR explı́cito o implñicito). Si se usa VR implı́cito, los datos del tipo de VR correspondiente al atributo se obtienen del Data Dictionary. Actualmente todas las máquinas son Little Endian y se usa VR explı́cito, ya que la sobrecarga de incluir los VR es menor, más teniendo en cuenta las capacidades actuales de almacenamiento. 2Mientras algunos sistemas almacenan los números comenzando desde el byte menos significativo, (orden Little Endian), otros almacenan los mismos números comenzando comenzando desde el byte más significativo (orden Big Endian). Por ejemplo lo que una computadora Little Endian lo guarda como 0x007F, una Big Endian lo guardarı́a como 0x7F00. Debemos tener en cuenta que dos números hexadecimales forman un byte, y por eso la inversión es de a pares. Little Endian o Big Endian es una caracterı́stica del procesador y no del sistema operativo. MAC utilizaba Big Endian cuando tenı́a los procesadores PowerPC y ahora utiliza Little Endian con los procesadores Intel. DICOM 19 − El tipo de compresión de la imagen, si es que está comprimida. Sintaxis de transferencia DICOM por defecto. Se puede leer una buena explicación en [12]. DICOM define una sintaxis de transferencia por defecto en el ordenamiento de los bytes como Implicit VR Little Endian Transfer Syntax (UID = ”1.2.840.10008.1.2”). Además define sintaxis de transferencia por defecto para imágenes comprimidas es JPEG sin pérdidas. Sintaxis de transferencia básicas. Tres sintaxis de transferencia básicas son las indicadas en la tabla con sus UID’s. Sintaxis de transferencia OID Explicit Big Endian 1.2.840.10008.1.2.2 Implicit Little Endian 1.2.840.10008.1.2 Explicit Little Endian 1.2.840.10008.1.2.1 Se pueden ver más detalles en: \href{https://www.medicalconnections.co.uk/kb/Transfer_Syntax} 7. Estructura de un archivo DICOM Un archivo DICOM está compuesto de una cabecera y un conjunto de datos (Header y Data Set para DICOM). El Header sirve para comunicar a la aplicación que está leyendo el archivo, que se trata de un archivo DICOM de un cierto tipo de SOP y con cierto formato de sintaxis de transferencia. El Data Set representa una instancia de un IOD del mundo real y está constituido por Data Elements que contienen los valores codificados de los atributos. Cada archivo contiene un único Data Set. En la figura 19 se esquematiza dicha estructura. Figura 19. Estructura de un archivo DICOM (extraı́da de [9]). Header. El Header está formado por el preámbulo, el prefijo DICOM y el meta-information Header. El header puede o no estar incluı́do en el archivo. 20 RODOLFO GROSSO Preámbulo. El standard DICOM no especifica ninguna estructura para el preámbulo, a menos de su longitud, que está determinada en 128 bytes. Está pensado para facilitar el acceso a las imágenes y otros datos del archivo DICOM. El uso de preámbulo es común en muchos formatos de datos e imágenes, por ejemplo en imágenes TIFF, y DICOM adoptó el mismo criterio, dando compatibilidad con formatos de imágenes comunmente usados. Si el preámbulo no es usado por una Application profile 3 o por una implementación especı́fica, cada uno de los 128 bytes serán seteados a 00h. El preámbulo puede por ejemplo contener información de aplicaciones multimedia para acceder aleatoriamente a imágenes guardadas en un DICOM Data Set. El mismo archivo puede ser accedido de dos maneras: por una aplicación multimedia usando el preámbulo y por una aplicación DICOM la cual ignora el preámbulo. Prefijo DICOM. El uso de un prefijo (también llamado “el número mágico” es también muy usado en muchos formatos de archivos y DICOM sigue el mismo criterio. El prefijo en DICOM tiene una longitud de cuatro bytes que contienen los caracteres del string “DICM”. este prefijo tampoco tiene estructura. Meta-information Header. El Meta-information Header contiene principalmente información de sintaxis de transferencia. Se encuentra codificado como un conjunto de atributos DICOM con VR explı́cito (como definiremos luego). Todos los atributos pertenecen al grupo 0002. Entre los elementos más importante del grupo se destaca el ”Transfer Syntax UID”, que tiene el tag (0002,0010) el cual define como es codificada la secuencia del DICOM Data Object. También en esta parte se especifica si los Data Elements tienen VR explı́cito o implı́cito. La información está siempre codificada en ELE. En la figura 20 se muestran algunos valores. Data Set. Un Data Set es una secuencia de Data Elements. En la figura 21 se muestra un ejemplo para fijar ideas. Un Data Element está unı́vocamente identificado por su tag. Los Data Element en un Data Set estarán ordenados en orden creciente de su tag. Un Data Elemnt en particular ocurrirá a lo más una vez en un Data Set. Estructura de un Data Element. Como se mencionó antes, cada Data Element contienen el valor codificado de un atributo de una instancia de un objeto. Para ello, los Data Element tienen una estructura formada por los campos Data Element tag, Value Representation, Value length y Value field. El campo Value Representation solo se encuentra presente en estructuras de Data Elements con VR explı́cito. Esta estructura se muestra en la figura 22. 3Application profile es un conjunto de elementos de metadata, polı́ticas y lineamientos, definidos para una aplicación particular. DICOM Figura 20. 21 Algunos valores del File Meta Information Header (extraı́da de [9]). Figura 21. Figura 22. Ejemplo de Data Set. Estructura de un Data Element (extraı́da de [1]). Data Element Tag. Corresponden a los tags como fueron definidos antes. Dentro del archivo, los tags están dispuestos en orden creciente. Los tags con número de grupo par 4 están definidos en de la norma DICOM. Se autoriza a fabricantes definir tags fuera de la norma. En este caso, tienen que ser impares 5 y debidamente documentados. 4Excepto algunos números prohibidos en la norma 5Ídem hay impares prohibidos 22 RODOLFO GROSSO Value Representation. Es el valor definido antes. Puede estar explicito o implicito. Explicito significa que el VR está especificado con cada objeto, mientras que implı́cito significa que la aplicación debe obtener el VR de una tabla que mapea pares (group, element) a valores de VR. La aplicación describe si usa implı́cito o explı́cito VR en el Application Header 6. Value Length, longitud de los datos. DICOM hace el seguimiento de las longitudes de los datos para saber donde cada Data Element comienza y termina. Dicho valor figura en el campo Value Field que es un número entero sin signo de 2 o 4 bytes. Existe el valor de Value Length = FFFFFFFFh que indica longitud indefinida. Observamos que para algunos VR’s, la longitud de los datos se encuentra fija o limitada. Sean de longitud fija o no, todos los Data Elements de DICOM deben tener longitud par. O sea deben contener un número par de caracteres si es texto o de bytes si es binario. Si originalmente no es ası́, DICOM agrega un caracter de espacio en blanco o un byte NULL. Ası́ por ejemplo el nombre “SmithˆJoe” se almacenará internamente como “SmithˆJoe ” (con un espacio en blanco al final). Value Field, valor del atributo. Contiene el el propio valor del atributo mediante un número par de bytes. El tipo de valores almacenados en este campo se encuentran especificados en el VR. Value Fields con longitud indefinida se delimitan mediante el uso de Sequence Delimitation Items e Item Delimitation Data Elements, descriptos en la sección 7.5 del standard DICOM. Volviendo al ejemplo anterior del tag (0028, 0010) que correspondı́a a la cantidad de filas de una imagen, debemos tener en cuenta que este atributo tiene como VR a US, o sea que la cantidad de filas se expresa como un unsigned short. Otro ejemplo es el tag (7FE0,0010) que anuncia el principio del atributo que contiene los pixeles de la imagen. Resumen de campos de un Data Element con VR explı́cito e implı́cito. En las figuras 23 y 24 se resumen los campos de un Data Element con VR explı́cito y con VR implı́cito, respectivamente. Figura 23. Campos de un Data Element con VR explı́cito (extraı́da de [1]). 6Un caso especial es para los tags (FFFE,E000), (FFFE,E00D) y (FFFE,E0DD) los cuales siempre son VR implı́cito DICOM Figura 24. 23 Campos de un Data Element con VR implı́cito (extraı́da de [1]). Ejemplos. Ejemplo. Como ejemplo “de escritorio” a partir de lo visto podemos hacer nuestra primera escritura en Dicom. Si queremos escribir la parte del archivo de una imagen de CT con 512 filas, 512 columnas y 12 bits por pixel yendo al diccionario tenemos: − Rows (0028,0010) − Columns (0028,0011) − Bits Allocated (0010,0100) Sustituyendo y teniendo en cuenta el formato indicado por los VR’s se tiene: (0028,0010)512(0028,0011)512(0028,0100)12 Ejemplo. Como ejemplo real veamos como se muestra un archivo DICOM correspondiente a una imagen en xml. <Dicom> <attr tag="00020000" vr="UL" len="4">182</attr> <attr tag="00020001" vr="OB" len="2">00\01</attr> <attr tag="00020002" vr="UI" len="26">1.2.840.10008.5.1.4.1.1.7</attr> <attr tag="00020003" vr="UI" len="52"> 1.2.40.0.13.1.33638594054633409850481847740018507266</attr> <attr tag="00020010" vr="UI" len="22">1.2.840.10008.1.2.4.50</attr> <attr tag="00020012" vr="UI" len="16">1.2.40.0.13.1.1</attr> <attr tag="00020013" vr="SH" len="12">dcm4che-2.0</attr> <attr tag="00080005" vr="CS" len="10">ISO_IR 100</attr> <attr tag="00080012" vr="DA" len="8">20120314</attr> <attr tag="00080013" vr="TM" len="10">202644.234</attr> <attr tag="00080016" vr="UI" len="26">1.2.840.10008.5.1.4.1.1.7</attr> <attr tag="00080018" vr="UI" len="52"> 24 RODOLFO GROSSO 1.2.40.0.13.1.33638594054633409850481847740018507266</attr> <attr tag="00080020" vr="DA" len="0" /> <attr tag="00080030" vr="TM" len="0" /> <attr tag="00080050" vr="SH" len="0" /> <attr tag="00080060" vr="CS" len="2">OT</attr> <attr tag="00080064" vr="CS" len="2">SI</attr> <attr tag="00080070" vr="LO" len="0" /> <attr tag="00080090" vr="PN" len="0" /> <attr tag="00100010" vr="PN" len="0" /> <attr tag="00100020" vr="LO" len="0" /> <attr tag="00100030" vr="DA" len="0" /> <attr tag="00100040" vr="CS" len="0" /> <attr tag="0020000D" vr="UI" len="54"> 1.2.40.0.13.1.110176780541369219423499710276709663223</attr> <attr tag="0020000E" vr="UI" len="54"> 1.2.40.0.13.1.236641157153453916146655261549295596491</attr> <attr tag="00200010" vr="SH" len="0" /> <attr tag="00200011" vr="IS" len="2">1</attr> <attr tag="00200013" vr="IS" len="2">1</attr> <attr tag="00280002" vr="US" len="2">3</attr> <attr tag="00280004" vr="CS" len="12">YBR_FULL_422</attr> <attr tag="00280006" vr="US" len="2">0</attr> <attr tag="00280010" vr="US" len="2">512</attr> <attr tag="00280011" vr="US" len="2">512</attr> <attr tag="00280100" vr="US" len="2">12</attr> <attr tag="00280101" vr="US" len="2">8</attr> <attr tag="00280102" vr="US" len="2">7</attr> <attr tag="00280103" vr="US" len="2">0</attr> <attr tag="7FE00010" vr="OB" len="-1"> <item off="828" len="0" /> <item off="836" len="45250">FF\D8\FF\E0\00\10\4A\46\49\46 \00\01\02\01\00\48\00\48\00\00\FF\E1\11\00\8\02\01\49\ ............. \20\10\08\04\02\01\00\80\40\20\10\08\04\02\01\00\8\02\01 </item> </attr> </Dicom> Se observan los valores de número de filas y columnas en los tags (0028,0010) y (0028,0011). A partir del tag (7FE0,0010) comienzan los valores de los pixels de la imagen, que son una gran cantidad, por ello se pusieron los puntos suspensivos. DICOM 25 Referencias [1] National Electrical Manufacturers Association Digital Imaging and Communications in Medicine (Dicom) Part 5: Data Structures and Encoding [2] National Electrical Manufacturers Association Digital Imaging and Communications in Medicine (Dicom) Part 3: Information Object Definitions [3] National Electrical Manufacturers Association Digital Imaging and Communications in Medicine (Dicom) Part 6: Data Dictionary [4] Leadtools - Overview: Basic Dicom File Structure http://www.leadtools.com/SDK/medical/Dicom-spec1.htm [5] Jacques Fauquex - Diapositivas de clase Dicom - Curso “Imágenes médicas, Adquisición, Instrumentación y Gestión”. Facultad de Ingenierı́a UdelaR [6] Dicom - Apuntes para el curso “Imágenes médicas, Adquisición, Instrumentación y Gestión”. Facultad de Ingenierı́a UdelaR, 2009 [7] dcm4che.org - A Very Basic DICOM Introduction http://www.dcm4che.org/confluence/display/d2/A+Very+Basic+DICOM+Introduction [8] Jose Varela Pernas - Universidad de Santiago de Compostela Curso sobre Dicom Service Classes http://www.usc.es/~catelmed/cursoDicom/classes.html [9] Oleg S. Pianykh, Digital Imaging and Communications in Medicine (Dicom), Springer, 2008. [10] Charles Parisot. The Basic Structure of Dicom, SSRPM Course - Neuchatel, 2003. [11] Medical Connections - Basic DICOM Operations https://www.medicalconnections.co.uk/kb/Basic_DICOM_Operations [12] DICOM is easy - Introduction to DICOM - Chapter 6 - Transfer Syntax http://dicomiseasy.blogspot.com/2012/01/introduction-to-dicom-chapter-6.html [13] R. Gonzalez and R. Woods, Digital Image Processing, 2nd ed., Prentice Hall, 2002.