[Code Camp 2009] Aplicaciones de .NET en la medicina (Armando A. Meabe)
1. .NET en la MedicinaDesarrollamosnuestraprimerasoluciónaplicada al diagnósticobioquímicoporimagen. Armando Andrés Meabe MSP – MAP Estudiante UNL Santa Fe capital.
2.
3. Orígenes de nuestros proyectos Inicio como proyecto de estudiantes de informática, en tiempos libres año 2007: Software capaz de reconocer cartas de póker (y jugar solo). Perfeccionamiento de los métodos del ‘autoPoker’, modelado matemático del algoritmo y ‘evolución’ hacia un sistema de reconocimiento facial (CodeCamp 2008). Ante la determinación de enfocarse a la medicina; se implementaron conceptos equivalentes a los usados en el reconocimiento facial pero aplicados a escala microscópica. 2007 (autoPoker) 2008 (FaceRec) 2009 (Medicina) Primeros desarrollos en proceso Proceso de imágenes según modelado Reimplementación de técnicas de digital de imágenes matemático ‘PCA’ ‘faceRec’ aplicadas a tejido humano.
4. Lógica rudimentaria (2007) Las imágenes eran bitmaps, siempre iguales por lo que la complejidad del problema era baja. Se procedió a comparar pixel por pixel. El rendimiento era muy pobre en tiempo real, generalmente colgando la aplicación por el ‘solapamiento’ de pasos y por el exceso de recursividades – ‘stackoverflow’. Se procedió a mejorar el algoritmo.
5. Mejor algoritmo -> Mejores aplicacionesNace ‘faceRec.NET’ (Jidis 08, Ccamp 08) Evolucionamos la lógica ‘por nuestra cuenta’, descartamos regiones muy grandes o muy pequeñas y ‘deducimos’ cuales son los rostros de una imagen. Llegamos a un ‘techo’ en cuanto a la efectividad y encontramos la necesidad de aplicar algoritmos mas complejos.
6. ¿Que hacemos con la imagen?Entra el primer algoritmo matemático complejo: PCA (Principal ComponentsAnalysis) Se considera la imagen como un vector. Un vector cualquiera en un espacio vectorial de n dimensiones X1,X2…Xn se puede representar en términos de cuanto tiene de cada vector-dimensión X1, X2 … Xn. “¿Que “cantidad” tiene el nuevo rostro, de cada rostro existente?” Ej, vector C1 = (2, 3, 5) -> C1 = (2x1, 3x2, 5x3)
7. Ejemplo para dos rostros humanos que difieren en F’ Dispersión de puntos, cada punto representa una foto de un rostro humano. Las agrupaciones (nubes) de puntos sugieren que son fotos de la misma persona. Cuanto mas cerca están dos puntos, mas similares son dos rostros, hasta que se puede sugerir que son la misma persona. Apliquemos esta teoría a los glóbulos rojos y blancos. F’
8. Hecho el algoritmo de manera genérica, apuntamos a nuevos problemas. Ante la vocación de desarrollar soluciones orientadas a la medicina, se decide empezar por un problema en el cual tenemos experiencia: El conteo de elementos en sangre mediante análisis de imágenes.
9. Aplicaciones de nuestro proyectoEscenario ideal; Entidad médica de capacidad adquisitiva reducida (Hospitales regionales o pequeños, consultorios privados…) Principal ventaja; La diferencia de costos con otros métodos de automatización de conteo de elementos en el tejido humano. (~30.000AR$) Estos equipos tienen dimensiones muy grandes y solo cumplen una única función. Con el sistema propuesto, por software, no se necesita implementar ningún tipo de hardware siempre que se cuente con una PC/Notebook adecuada y un microscopio con conector para salida de tv/proyector/video o una buena cámara digital (menor precisión). Costo total; entre 0$ (hardware existente) y no mas de 5.000$ ante la necesidad de implementar hardware específico.
10. Definición y utilidad Definición: El hemograma completo es la prueba de laboratorio en la se van a cuantificar y evaluar diferentes grupos celulares, las glóbulos rojos (eritrocitos), los glóbulos blancos (leucocitos), las placas, el contenido de hemoglobina, y otros parámetros relacionados con su cantidad, forma y contenido. Utilidad Clínica: Ayuda a diagnosticar problemas específicos de la sangre como la anemia y otros trastornos como determinados cánceres como las leucemias; permite a monitorizar la pérdida de sangre y la respuesta de un paciente a la terapia contra el cáncer, como la quimioterapia y la radioterapia; permite sospechar cuadros agudos infecciosos y/o inflamatorios, y así, su utilidad clínica resulta invaluable.
19. La alternativa económicaDesventajas del método ‘a la vieja usanza’. En la ‘vieja escuela’ se cuenta con un método en teoría muy efectivo, que sin embargo puesto en práctica resulta en una alta pérdida de precisión y de tiempo. El bioquímico debería hacer uso de la ‘cámara de Neubauer’ y un microscopio eficaz, y realizar el conteo de glóbulos totalmente ‘a ojo’. Como ventaja, se resalta el hecho de que un profesional entrenado puede detectar casos especiales de inmediato. Este método se considera obsoleto.
20.
21. Luego debe mover la muestra y reiterar los pasos 4 veces mas, 5 en total.
22. El margen de error por contar elementos diferentes y aleatoriamente dispersos es muy elevado.
27. Casos de glóbulos blancos. Si bien hay varias formaciones de glóbulos blancos, nos interesa diferenciar entre monocitos y ‘el resto’.
28. Estandarización y preproceso de una imagen. Se definen los estándares que se consideren mas aptos para facilitar la lógica del algoritmo y lograr robustez en el resultado. Se considera la plataforma en la que se usará el sistema, el hardware de captura, etc. Se eliminan los bordes de imágenes apaisadas. Se calcula la media con la siguiente fórmula Se corrigen los niveles de brillo y contraste de acuerdo a la media [R,G,B] obtenida. Imagen original Imagen redimensionada y ajustada en brillo y contraste.
29. Definición de colores y tonos. Las imágenes adquiridas no serán como el software las espera. Hay que alterarlas previamente. Estandarización de colores y utilización de algoritmo floodfill. int max = 0; int min = 0; int r = 0; int b = 0; int g = 0; for (int x = 0; x < imgOriginal.Width; x++) { for (int y = 0; y < imgOriginal.Height; y++) { r = imgOriginal.GetPixel(x, y).R; g = imgOriginal.GetPixel(x, y).G; b = imgOriginal.GetPixel(x, y).B; if (r > max) max = r; if (g > max) max = g; if (b > max) max = b; if (r < min) min = r; if (g < min) min = g; if (b < min) min = b; if !((r > 95 && g > 40 && b > 20) && (Math.Abs(r - g) > 15) && ((r > g) && (r > b)) && ((max - min) > 15) && (r != 0 && g != 0 && b != 0)) { imgOriginal.SetPixel(x, y, Color.Black); } } } imgNormalizada = new Bitmap(imgOriginal);
30. Un pequeño paréntesis… ¿Que es el método floodfill? Comparable con la típica herramienta “varita mágica”, nos permite pasar de la imagen A a la imagen B y así discriminar los glóbulos del medio en el que se encuentran. A B
38. Por el contrario, los GB poliformes (2) se dispararán en múltiples direcciónes (tantas como dimensiones haya).
39.
40. ¿Es este método perfecto? NO, como la mayoría de los métodos estadísticos, hace evidente una tendencia con X% grado de precisión, pero tiene un punto débil, y es el área en el cual los monocitos ‘se parecen’ suficiente a los GB poliformes, y sus representaciones se mezclan en el espacio imaginario. De todos modos los resultados son alentadores. Zona de error (falso conteo)
41. ¿Conclusiones? Es natural que no seamos los indicados para sacar conclusiones médicas, lo mismo pasa en el caso del artefacto mostrado anteriormente para el conteo de glóbulos. Nos limitamos a exponer las cantidades encontradas de cada tipo de elemento y dependiendo de cada caso y del paciente, el profesional médico sabrá que concluir. En otras palabras, nuestra solución es acotada, empieza y termina cumpliendo su función: Contar. Es decir, es una herramienta, y no un médico virtual. Como herramienta, sus funciones solo están limitadas por lo pertinente al hemograma completo y por la capacidad del profesional de interpretar los resultados.
42. ¿Innovación?Puede que sea un proyecto innovador, pero, ¿En que sentido? Haciendo honor a la verdad, en este último proyecto no hemos inventado nada. Se trata de un uso ‘visionario’ para algoritmos ya desarrollados (por nosotros), y utilizados. Durante el desarrollo del reconocimiento facial, nos aseguramos de que el algoritmo sea genérico. De ahí el hecho de que sirve para identificar rostros humanos, casas, automóviles… y hasta glóbulos rojos! Ventajas Escalabilidad y objetivosgenéricos; Incluso en el momento de desarrollo (facerec), no sabíamosqueotrosusos le daríamos al algoritmo. La idea esquesirvatantoparanosotroscomopara el potencialcliente. Para el 2010 proyectamosimplementarexactamente lo mismo (Si, ¡De nuevo!) para el diagnósticotemprano de aneurismas en la retina del ojo. De estemodo, el tiempo no se utilizadesarrollandoproyectosdiferentessinoperfeccionando lo hecho.
43. Otros usos para los algoritmos desarrolladosLos alcances del algoritmo genérico.
44. Otros usos para los algoritmos desarrolladosLos alcances del algoritmo genérico.
45. Agenda: CodeCamp 20102da. incursión en la medicina, detección de aneurismas en la retina.Identificación de individuos por escaneo de retina. Identificación de aneurismas en la retina del ojo humano. Otro proceso que hoy en día se realiza ‘a ojo’ y está librado a la imprecisión del error humano. Identificación de individuos por escaneo de retina, otra aplicación obvia para nuestro algoritmo.