Vous êtes sur la page 1sur 13

Miguel ngel Snchez Montiel

1 Que es OsiriX? ___________________________________________________________________ 2 2 Caractersticas de OsiriX ________________________________________________________ 2 3 Versiones de OsiriX _____________________________________________________________ 2


3.1 3.2 3.3 3.4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 OsiriXMD _____________________________________________________________________________2 OsiriX 64-bit _________________________________________________________________________2 OsiriX HD _____________________________________________________________________________2 OsiriX _________________________________________________________________________________2 Cocoa _________________________________________________________________________________3 OpenGL _______________________________________________________________________________4 OpenCL _______________________________________________________________________________4 VTK ___________________________________________________________________________________5 ITK ____________________________________________________________________________________5 DCMTK ________________________________________________________________________________6 Papyrus_______________________________________________________________________________6

4 Arquitectura de software OsiriX ________________________________________________ 3

5 Obtener y compilar cdigo fuente de OsiriX ___________________________________ 6


5.1 Requerimientos ______________________________________________________________________6 5.2 Pasos _________________________________________________________________________________7

6 Crear un nuevo plugin para OsiriX _____________________________________________ 8


6.1 Requerimientos ______________________________________________________________________8 6.2 Pasos _________________________________________________________________________________8

7 Principales objetos en OsiriX para creacin de plugins _______________________ 9 8 Diseo de un plugin ____________________________________________________________ 11 9 Conclusin ______________________________________________________________________ 12 10 Bibliografa ____________________________________________________________________ 12

1 Que es OsiriX?
OsiriX es un software de procesamiento de imagen, dedicado a imgenes DICOM producidas por equipos radiolgicos, es totalmente compatible con el estndar DICOM en cuanto al formato de archivo y protocolos de comunicacin. Su desarrollo inici en el 2003 y actualmente se considera como el visor DICOM ms ampliamente usado en el mundo con ms de 50.000 usuarios.

2 Caractersticas de OsiriX
OsiriX es un proyecto de cdigo abierto, desarrollado en plataforma Macintosh, distribuido bajo licencia LGPL, desarrollado y mantenido por Pixmeo (una empresa con sede en Ginebra, en Suiza). Est construido sobre una arquitectura integralmente expansible por plugins, lo que nos permite ampliar sus capacidades para las necesidades personales.

3 Versiones de OsiriX
Podemos encontrar varias versiones de OsiriX disponibles (ver Figura 1). Para un ambiente medico se requiere que sea una versin certificada para manejo de imgenes, igualmente para las estaciones de trabajo usadas como diagnostico primario se requiere usar un monitor certificado para manejo de imgenes. Las diferentes versiones de OsiriX son:

3.1 OsiriXMD
Aprobado y regulado por la FDA, es completamente certificado para el manejo de imgenes mdicas.

3.2 OsiriX 64-bit


Desarrollado especialmente para plataformas de 64 bits, el cual evita problemas de memoria (memoria insuficiente) que en ocasiones se puede presentar en Osirix bsico y se considera mucho ms rpido que este ltimo (entre 25 y 400 %).

3.3 OsiriX HD
desarrollado para iOS (S.O. mvil de Apple), por tanto se puede usar en iphone y en ipad.

3.4 OsiriX
Es la versin bsica, es de cdigo abierto tanto en la aplicacin como tal como en sus plugins, no es aprobada por la FDA.

Figura 1: Versiones de OsiriX Fuente: http://www.osirix-viewer.com/

4 Arquitectura de software OsiriX


OsiriX est conformado por un conjunto de libreras (ver Figura 2) que contribuyen en la visualizacin y procesamiento de imgenes, adems del manejo de archivos DICOM. Son un conjunto de herramientas de gran utilidad para el manejo de imgenes mdicas.

Figura 2: Arquitectura de OsiriX Fuente: http://www.osirix-viewer.com/AboutOsiriX.html

La integracin de todas estas libreras fue uno de los aspectos ms importantes y desafiantes del desarrollo de este proyecto, aunque son herramientas multiplataforma, de cdigo abierto, desarrolladas en C/C++, estas no fueron diseados para ser totalmente compatibles, causando as inconsistencias e incompatibilidades que hicieron que la integracin resultara algo difcil y laboriosa. Integracin que da como resultado un conjunto de funciones y caractersticas de gran riqueza para el desarrollo de una aplicacin de imgenes medicas. Una de las caractersticas ms importantes OsiriX es su desarrollo sobre plataforma Macintosh para beneficiarse de Cocoa, herramienta que facilita enormemente la rapidez de desarrollo de aplicaciones graficas interactivas que permiten una fcil personalizacin del programa al ser adaptable a las necesidades de diferentes usuarios.

4.1 Cocoa
Cocoa es un conjunto de frameworks orientados a objetos que proveen un entorno de ejecucin y de desarrollo para las aplicaciones que se ejecutan sobre Mac OS X y sobre iOS. La mayora de aplicaciones presentes en Mac OS X e iOS (Mail, Safari, etc.) son aplicaciones Cocoa. El IDE XCode soporta el desarrollo de aplicaciones para ambas plataformas. La combinacin de este IDE y Cocoa facilita la creacin de aplicaciones completas y bien

estructuradas. Existen clases de Cocoa para casi todas las necesidades de desarrollo concebibles, desde objetos de interfaz de usuario hasta el formateo de datos. Cocoa provee componentes para desarrollo de GUIs que permiten disear y desarrollar rpidamente GUIs complejas, adems es desarrollado en lenguaje Objective-C, el cual presenta los beneficios de C++ y evita su complejidad. El lenguaje Objective-C provee administracin de memoria, lo que previene el desbordamiento de memoria comnmente presente en aplicaciones graficas que manipulan grandes conjuntos de datos de imgenes.

4.2 OpenGL
OpenGL (Open GraphicsLibrary) es un API basada en lenguaje C para el manejo de hardware de grficos, encargado de describir un conjunto de comandos, funciones, procedimientos y el comportamiento que debe tener. Como tal, OpenGL es una especificacin estndar que define un API para hardware de grficos, es multilenguaje y multiplataforma y en efectos prcticos se reconoce como una librera altamente portable y muy rpida, que permite modelar objetos 2D y 3D de alta calidad visual a partir de un conjunto de procedimientos de bajo nivel que definen primitivas geomtricas simples, tales como puntos, lneas y tringulos. OpenGL proporciona un conjunto de comandos, funciones y procedimientos de bajo nivel que permiten el modelado de objetos 2D y 3D en las tarjetas de grficos, pero no provee funciones para interactuar con el sistema de grficos del sistema operativo, esto quiere decir que el alcance de cualquier objeto creado por medio de OpenGL est en el hardware (tarjeta de grficos), por lo que cualquier objeto modelado en OpenGL no ser visible en una ventana del sistema operativo. Siendo ms especfico, cuando le decimos a OpenGL que cree un objeto, lo que realmente se est haciendo, es pidindole a OpenGL que se comunique con la tarjeta de grficos y cree el objeto, lo cual se lleva a cabo en la tarjeta de grficos, mas no se le est pidiendo que muestre dicho objeto en una pantalla. Tiene como propsito comunicarse con la tarjeta de grficos, adaptndose automticamente a cualquier configuracin de hardware para tomar ventaja de cualquier acelerador de hardware que se proporciona para la visualizacin de datos de video 2D y 3D, ocultando al desarrollador la complejidad de que sus aplicaciones soporten los diferentes tipos de tarjetas y

4.3 OpenCL
OpenCL (Open Computing Language) es un framework estndar multilenguaje, multiplataforma, libre, diseado para aprovechar la capacidad de paralelismo de los diversos dispositivos de procesamiento, permitiendo que las GPUs y otros coprocesadores trabajen en conjunto con la CPU. Aunque define su propio lenguaje denominado OpenCL-C, est basado en lenguaje C. Es un estndar abierto para programacin paralela de propsito general sobre sistemas heterogneos (que incluyen CPUs, GPUs y otros coprocesadores). OpenCL fue propuesto por Apple, quien luego lo otorgo al Grupo Khronos (el mismo que administra el estndar OpenGL) para mantenerlo como un estndar libre, abierto e independiente del fabricante.

4.4 VTK
El Visualization Toolkit (VTK) es una librera de software de propsito general para computacin grfica en 3D, procesamiento y visualizacin de imgenes. Actualmente se ha convertido en la herramienta estndar de facto para tal fin, debido a su alta funcionalidad. Se considera una librera de alto nivel, ya que a diferencia de OpenGL, provee funciones sencillas para construir y visualizar objetos grficos complejos. VTK es un software de dominio pblico, esta construida sobre OpenGL para asegurar la aceleracin de hardware para renderizado sobre diferentes plataformas, distribuido bajo el modelo de cdigo abierto, creado y mantenido por Kitware Inc., es portable (multiplataforma, se puede ejecutar sobre plataformas Windows, Linux, Mac e Unix), orientado a objetos, de alto nivel de abstraccin para grficos 3D e independiente de las libreras de grficos, es una librera robusta dado a su eficiencia, independencia con el lenguaje de grficos y a su capacidad de portabilidad y extensibilidad. Esta implementado en C++ y soporta los lenguajes TCL, Python y Java, no provee ningn componente para la construccin de interfaz grfica de usuario, pero se pude integrar con herramientas como Qt, Tk y en Java se pueden usar sin ningn inconveniente sus propios componentes de interfaz grfica de usuario. Esta herramienta de cdigo abierto ofrece funciones poderosas para manipulacin de imgenes complejas, adems de un gran rendimiento para visualizacin de imgenes 3D en tiempo real.

4.5 ITK
El Insight Toolkit (ITK) es una librera de software especfica para procesamiento de imgenes, es una extensin de VTK y est basado sobre el mismo framework, especializado en resolver problemas de imgenes mdicas tales como tales como la segmentacin y registro de imgenes de multimodalidad. Provee algoritmos de punta para 2D, 3D y mas dimensiones enfocados en dichos problemas. La segmentacin es el proceso de identificar y analizar datos encontrados en una imagen digital por medio de la separacin de los objetos grficos que la componen. Por lo general estas imgenes son adquirida desde un instrumento medico, tal como un escner CT o MRI. El registro es la tarea de alinear o desarrollar correspondencias entre los datos, por ejemplo, un escaneo CT puede estar alineado con un escaneo MRI con el fin de combinar la informacin contenida en ambos. ITK es un software de dominio pblico, distribuido bajo el modelo de cdigo abierto, creado y mantenido por Kitware Inc., es portable (multiplataforma, se puede ejecutar sobre plataformas Windows, Linux, Mac e Unix), orientado a objetos, esta implementado en C++ y soporta los lenguajes TCL, Python y Java. ITK no provee componentes ni de visualizacin, ni de interfaz de usuario, por tanto no tiene dependencias o requerimientos de ninguna librera de visualizacin ni de interfaz de usuario en particular. Para visualizacin se puede llevar a cabo una integracin con VTK o con OpenGL y para interfaz de usuario se puede hacer uso de herramientas Qt, Tk y en Java se pueden usar sin ningn inconveniente sus propios componentes de interfaz grfica de usuario. La adjuncin de ITK adiciona herramientas para procesamiento y renderizado de imgenes para aplicaciones medicas.

4.6 DCMTK
DICOM ToolKit (DCMTK) es un conjunto de libreras y aplicaciones software que implementan gran parte del estndar DICOM, dentro de sus funcionalidades podemos encontrar examinar, construir y convertir archivos de imagen DICOM, consulta, envo y recepcin de imgenes por una red, etc. Esta librera provee un completo conjunto de funciones que facilitan ampliamente la administracin e implementacin del extremadamente complejo protocolo de red de DICOM. DCMTK es un software de dominio pblico, distribuido bajo el modelo de cdigo abierto, creado y mantenido por OFFIS. Es escrito en una mezcla de ANSI C y C++, es multiplataforma, puede ser compilado bajo Windows y una amplia gama de sistemas operativos Unix incluyendo Linux, Solaris, HP-UX, IRIX, FreeBSD, OpenBSD y Mac OS X. En general, DCMTK es una librera gratuita de cdigo abierto, multiplataforma y de alto nivel para manejo de imgenes DICOM que provee gran cantidad de funcionalidades acordes con el estndar.

4.7 Papyrus
Papyrus toolkit es una librera de software que provee un conjunto de funciones que facilitan la gestin de los complejos formatos de archivos Papyrus, DICOM y DICOMDIR. Papyrus toolkit es un software de dominio pblico, distribuido bajo el modelo de cdigo abierto, desarrollado por University Hospital of Geneva. Es escrito en lenguaje ANSI C, no es orientado a objetos, es multiplataforma, compatible con sistemas operativos Windows, Macintosh y plataformas Unix en general. Esta herramienta es til para el desarrollo de aplicaciones que requieran manejo de imgenes digitales, ofrece todas las funciones necesarias para administrar el complejo y engorroso formato de archivos DICOM, como leer y escribir archivos DICOM, incluyendo su meta-data. Provee un completo conjunto de funciones para administrar el complejo y engorroso formato de archivos DICOM. Permite la extraccin de datos de imgenes pero tambin para toda la meta-data numrica y textual asociada a el archivo DICOM, por tanto, es una extensin conveniente para VTK e ITK.

5 Obtener y compilar cdigo fuente de OsiriX


A continuacin se dar a conocer la forma de obtener el cdigo fuente de OsiriX, el cual se encuentra en un repositorio subversion en el sitio web de SourceForce.

5.1 Requerimientos
Sistema operativo Mac OS X 10.6 o superior IDE XCode 3 o superior controlador de versiones subversion

5.2 Pasos
Abrir terminal En la terminal, ubicarse en la carpeta donde se desea obtener el cdigo fuente En la terminal, ejecutar:
svn co https://osirix.svn.sourceforge.net/svnroot/osirix osirix

Abrir el Finder Ir a los fuentes bajados, en la carpeta osirix y abrir el archivo Osirix.xcodeproj En XCode, seleccionar el target 'Unzip Binaries' y ejecutar (ver Figura 3) Luego seleccione el target 'OsiriX' y compilar (ver Figura 4)

Figura 3: seleccionar el target 'Unzip Binaries' y ejecutar

Figura 4: seleccionar el target 'OsiriX' y compilar

6 Crear un nuevo plugin para OsiriX


A continuacin se dar a conocer la forma de crear e incorporar un nuevo plugin en OsiriX, para ello es necesario bajar el cdigo fuente de los plugins distribuidos con OsiriX.

6.1 Requerimientos
Sistema operativo Mac OS X 10.6 o superior IDE XCode 3 o superior controlador de versiones subversion

6.2 Pasos
Abrir terminal En la terminal, ubicarse en la carpeta donde se desea obtener el cdigo fuente En la terminal, ejecutar:
svn co https://osirixplugins.svn.sourceforge.net/svnroot/osirixplugins osirixplugins

Abrir el Finder Ir a los fuentes bajados En la carpeta '_help' descomprimir el archivo ' Osirix Plugin Generator.zip' Ejecutar el script 'Osirix Plugin Generator' Se abre una ventana para indicar el nombre del plugin y otra para indicar el autor. Al llenar esta informacin se crea una carpeta con el nombre indicado, en el cual est el

proyecto XCode con el mismo nombre. El proyecto est totalmente configurado para crear el plugin En el Finder, abrir el proyecto <nombre_proyecto>.xcodeproj En XCode, abrir el archivo <nombre_proyecto>Filter.m. Este archivo contiene la clase que representa el plugin creado, el cual hereda de la clase ' PluginFilter ' El metodo 'initPlugin' se ejecuta cuando OsiriX es ejecutado y el metodo 'filterImage' se ejecuta cuando el plugin es ejecutado El cdigo que lleve a cabo la funcionalidad del plugin tiene que estar en el metodo 'filterImage' En XCode, compilar el proyecto En el Finder, en el directorio del proyecto ir a la carpeta 'build/Development' y ejecutar el archivo '<nombre_proyecto>.osirixplugin', el cual es el plugin generado Al ejecutar el paso anterior, el plugin ser movido automticamente a la carpeta
/Usuarios/<nombre_usuario>/Librera/Application Support/OsiriX/Plugins

Cuando OsiriX se ejecuta, busca en el directorio de plugins y estos son cargados. Los plugins instalados en el directorio de plugins mencionado en el paso anterior, es accesible solo por el usuario especificado, para ser accesible por todos los usuarios se debe copiar manualmente el plugin al directorio /Librera/Application
Support/OsiriX/Plugins

7 Principales objetos en OsiriX para creacin de plugins


Al ejecutar OsiriX se abre una ventana principal, sta es un objeto 'BrowserController' (ver Figura 5) en la que podemos observar los pacientes guardados junto con los estudios realizados, las imgenes de estos son visualizadas en un objeto 'ViewerController' (ver Figura 6), el cual est compuesto por un objeto 'DCMView' (ver Figura 7) y este a su vez por un arreglo de objetos 'DCMPix' (ver Figura 8).

Figura 5: objeto 'BrowserController' en ejecucin

Figura 6: objeto 'ViewerController' en ejecucin

Figura 7: objeto 'DCMView' en ejecucin. Enmarcado en el recuadro rojo

Figura 8: arreglo de objetos 'DCMPix' (NSArray *dcmPixList)

A continuacin se da una breve explicacin de la representacin de cada uno de estos objetos y de otros disponibles en OsiriX para usar dentro de un plugin.

ViewerController: Hereda de la clase OSIWindowController. Objeto que representa una ventana de un visor 2D DCMView: Hereda de NSOpenGLView. Objeto que representa el panel 2D contenido en el ViewerController, el cual contiene la imagen visualizada DCMPix: Hereda de NSObject. Objeto que representa una imagen, el cual contiene los datos de los pixeles de esta PluginFilter: Hereda de NSObject. Objeto que representa un plugin, todo plugin que se crea es subclase de este objeto DicomFile: Hera de NSObject. Objeto que representa un archivo DICOM, el cual contiene los datos que conforman este archivo MyPoint: Hereda de NSObject. Objeto que representa un punto 2D de la imagen visualizada.

8 Diseo de un plugin
Anteriormente se han descrito algunos de los objetos principales que intervienen en la ejecucin de OsiriX, tambin se mencionaron los pasos para crear un plugin, el cual hereda de la clase 'PluginFilter' desde donde se puede obtener el objeto ViewerController y a su vez los objetos DCMView y DCMPix.

Figura 9: diseo de un plugin dentro de OsiriX

En la Figura 9 podemos observar un diseo general del resultado de incorporar un plugin en OsiriX. Aqu se refleja como el plugin hereda de 'PluginFilter' y a su vez puede obtener acceso a los objetos que disponen de la informacin necesaria de la imagen que se est visualizando y de su respectiva visualizacin

9 Conclusin
La creacin de un plugin para incorporar en OsiriX, est sujeta a requerimientos factibles de cumplir, si se dispone con un sistema operativo Mac OS X 10.6 o superior, ya que estos se distribuyen gratuitamente a travs de la red. Para el desarrollo de este plugin es necesario tener un conocimiento bsico de los principales objetos que componen a OsiriX, adems de desarrollo de aplicaciones Cocoa con el lenguaje Objective-C.

10 Bibliografa
Rosset, L. Spadola, y O. Ratib, OsiriX: An Open-Source Software for Navigating in Multidimensional DICOM Images, Journal of Digital Imaging, Vol. 17 No. 3, pp. 205-216, Septiembre 2004 OSIRIX. About OsiriX. [En lnea], Disponible en: <http://www.osirix-viewer.com/AboutOsiriX.html> [Consulta: 26 de enero de 2012]

OSIRIX. OsiriX Development Guide. [En lnea], Disponible en: <http://osirix.svn.sourceforge.net/viewvc/osirix/Documentation/Guides/Development/index.html> [Consulta: 28 de enero de 2012] OSIRIX. About OsiriX. [En lnea], Disponible en: <http://www.osirix-viewer.com/OsiriXDevKeynote.html> [Consulta: 28 de enero de 2012] Cocoa Fundamentals Guide, Apple Inc., 2010 Apple. Cocoa. [En lnea]. Disponible en: <http://developer.apple.com/technologies/mac/cocoa.html>[Consulta: 22 de septiembre de 2011] R. S. Wright, N. Haemel, G. Sellers y B. Lipchak OpenGL superbible, 5th ed., Addison-Wesley, 2010 D. Shreiner, J. Neider, M. Woo y otros, OpenGL programming guide, 6th ed., Addison-Wesley, 2010 OpenGL Programming Guide for Mac OS X, Apple Inc., 2011 SGI. OpenGL. [En linea]. Disponible en: <http://www.sgi.com/products/software/opengl/> [Consulta: 26 de septiembre de 2011] Khronos Group. OpenGL. [En lnea]. Disponible en: <http://www.opengl.org/resources/libraries/> [Consulta: 27 de septiembre de 2011] Introduction to OpenCL Programming Training Guide, AMD, 2010 OpenCL Programming Guide for Mac OS X, Apple, 2009 The OpenCL Specification Document Revision: 48, Aaftab Munshi, 2009 W. J. Schroeder, L. S. Avila y W. Hoffman, Visualizing with VTK: A Tutorial, Kitware Inc, 2000 A. Joshi, An Introduction to Programming for Medical Image Analysis with the Visualization Toolkit, BioImage Suite, 2nd ed., 2009 W. J. Schroeder, K. M. Martin y W. E. Lorensen, The design and implementation of an object-oriented toolkit for 3D graphics and visualization, GE Corporate Research & Development W. J. Schroeder, The Visualization Toolkit Users Guide Version 4.0, Kitware Inc, 2001 A. Ferrero y J. Rodrguez, Visualizacin 3D con VTK (Visualization Toolkit) Grficas 3D, Linux Magazine, 2005 L. Ibez, W. Schroeder, Lydia Ng y otros, The ITK Software Guide, 2nd ed., 2005. OFFIS. DCMTK. [En lnea]. Disponible en: <http://www.dcmtk.org/> [Consulta: 09 de noviembre de 2011] Papyrus toolkit v3.6 The DICOM compatible Image File Format Users Manual, University Hospital of Genova University Hospital of Genova.Papyrus. [En lnea]. Disponible en: <http://www.sim.hcuge.ch/papyrus/01_Papyrus_Presentation_EN.htm> [Consulta: 12 de noviembre de 2011]