miércoles, 3 de julio de 2013

Laboratorio 2


Código:


Resultados:


imagen original


mascara


mascara

mascara

mascara

mascara
normalizada

                                                     

martes, 2 de julio de 2013

jueves, 16 de mayo de 2013

Laboratorio 10. Detección de movimiento

Detección de movimiento


Mi Repositorio

Para esta semana la tarea de laboratorio es detectar los movimientos en una imagen

Las técnicas que yo utilice para realizar esto fueron basadas en tares anteriores:

  • Escala de grises 
  • Filtro 
  • Convolución 
  • Binarizacion 
  • Formas 
  • Diferencia 

Estas actividades se realizaron en tareas anteriores y podemos encontrar en que consiste cada una en entradas anteriores al blog.

Lo primero que realice fue hacer un programa que generara 3 imágenes en movimiento, y partir de una imagen tomada de ese movimiento.



Después de realizar esta actividad seguimos con el programa que detectara el movimiento de las figuras, en esta parte es donde se aplican  todas los procesos de las imágenes descritos en entradas anteriores. 

Al funcionar el programa se obtiene una primer imagen ala cual se le calculan sus centros de masa y se le aplican todas las funciones requeridas para procesar la imagen y de ahi al terminar de procesarla se genera otra imagen. 

La segunda imagen creada por la animación se le aplica el mismo proceso:
  • Escala de grises
  • Filtro
  • Convolución
  • Formas
De la misma manera se obtiene lo que son sus centros
Ahora para saber si existe movimiento comparamos lo la posición de los centros y si la posición es diferente entonces encontramos que si se realizo movimiento.

primer imagen generada
segunda imagen generada

primer imagen generada en escala

segunda imagen generada en escala

primer imagen en filtro
segunda imagen generada en filtro

primer imagen generada en convolución

segunda imagen generada en convolución 
resultados en la terminal


Código generador de movimiento:



Código detector de movimiento:




  

martes, 14 de mayo de 2013

Reporte de proyecto: Detección de glóbulos rojos en la sangre


Link del proyecto en mi repositorio: https://github.com/cristhianguardado/proyecto-de-vison-

Propósito:


El objetivo del siguiente trabajo es detectar círculos en una imagen de pruebas clínicas, donde se pone una muestra en un reactivo. El objetivo de reconocer los círculos en la imagen (coordenadas del centro y radio) puede ser contado, etiquetarlos o hacer un promediado de color dentro de estos.

Alcance:


Todo el procesamiento y la detección de los círculos en este trabajo esta pensado para las imágenes que se nos suministraron.

Estas imágenes siguen un patrón que comienza con una muestra en un fondo claro y luego viene una franja oscura donde no hay círculos.

Justificación:


La justificación del proyecto por sus aplicaciones en la vida real.

La aplicación más importante es o pude tener en un laboratorio clínico dando mejores resultados en el momento de un análisis clínico de frotis de sangre, ayudando al químico en este caso la persona que analiza la muestra de manera convencional la cual es observando desde un microscopio pudiendo tener un error al momento de no observar bien alguna área de la muestra o haciendo mal el conteo de dichas células en este caso los glóbulos rojos.

                                                   

Esto no descarta que sea bueno que el químico que analiza la muestra no haga su trabajo checando la muestra el programa fue echo para hacer más seguro el resultado obtenido y tener una mayor confiabilidad tanto para los pacientes como para las personas que analizan estas muestras de manera manual y visual mediante el uso de un microscopio.

EL vídeo explica un poco las células que se pueden encontrar en una muestra de sangre las cuales son analizadas por una persona.


Descripción textual:


Lo que el programa realiza básicamente es que al recibir una imagen de un amuestra de sangre o alguna muestra clínica, donde al analizar la imagen dada el programa realiza una serie de procesos a la imagen antes de poder detectar las células que se encuentran en una muestra clínica.

Al realizar todos los procesos se debe calcular un valor “umbral” para cada imagen individualmente para que funcione de mejor manera y se puedan detectar las figuras con mayor certeza y facilidad, al determinar el valor umbral de cada imagen se obtienen mejores resultados al aplicar las etapas de erosión y dilatación ayudando a que la imagen resultante no presente ruido.

Al tener identificado el umbral las demás etapas de la detección de células en la imagen que se procesara pasaran por más etapas de modificación las cuales darán una imagen resultante por cada etapa del procesamiento por la que pasa la imagen.

Al finalizar el procesamiento se presenta un resultado de cuantas células se detectaron en la imagen.

Morfología Matemática:


La palabra morfología significa forma y estructura de un objeto. Para imágenes binarias se definen operaciones morfológicas. Y con estas se constituye una herramienta de extracción de componentes de imagen útiles en la representación y descripción de la forma de las regiones.

Las operaciones básicas de la morfología matemática son: dilatación se puede simplificar a decir que es agregar píxeles a un objeto, hacerlo más grande, y luego erosión es hacerlo mas chico.

Luego la combinación de estas da origen a los operadores de Apertura y Clausura. El primero consiste en aplicar una erosión seguida de una dilatación aplicando la misma forma estructurada, como resultado esta tiende a “abrir pequeños huecos”. La clausura es el la aplicación de las operaciones básicas en el sentido inverso, y resulta en “cerrar los huecos”.

Estas operaciones morfológicas son de gran importancia para lograr obtener un resultado en el análisis de dichas imágenes.

Dilatación:
Las operaciones morfológicas en el valor de cada píxel en la imagen de salida depende del valor de ese píxel en la imagen de entrada y su relación con la vecindad. El elemento estructural define el tamaño y la forma de la vecindad en la que se aplicara la operación morfológica.

                                        

Dilatación:
En la dilatación se adiciona píxeles al contorno de objetos presentes en la imagen mientras que los píxeles de salida el máximo de estos presentes en la vecindad está definida por el elemento estructural.



Erosión:
En las imágenes binarias la erosión elimina los píxeles del contorno de objetos presentes en la imagen y el píxel de salida debe ser el mínimo de los píxeles presentes en la vecindad definida por el elemento estructural


Diseño:


  1. Carga imagen 
  2. Escala de grises
  3. Filtro 
  4. Convolución 
  5. Normalización 
  6. Binarizacion 
  7. Erosión
  8. Dilatación 
  9. Detección de círculos 


                                 

Librerías, lenguajes etc.:


Lenguaje de programación:
  • Python 
Librerías: 
  • Pil 
  • Numpy 

Evaluación y desempeño:



Lo primero fue conseguir las imágenes de frotis sanguíneo, las cuales fueron encontradas en diferentes sitios web relacionados con imágenes histologícas, estudios clínicos y materias relacionadas con el área medica, algunas referencias son:

http://www.elrincondelamedicinainterna.com/2012/10/frotis-de-sangre-periferica-extendido.html

http://tmumayor.com/moodle/course/info.php?id=15

http://mondomedico.es/2012/07/01/el-oraculo-del-microscopio/

Y algunos lugares de interés donde podríamos encontrar imágenes interesantes.

http://lahistoteca.blogspot.mx/2008_10_01_archive.html
http://miriamencalada.wordpress.com/2010/02/11/frotis-sanguineo/

En esos link´s se habla sobre las histologia de las células pero para este caso solo fue de interés las imágenes que se encontraban ahí, y alguna que otra referencia sobre la morfología de las células, lo cual me ayudo un poco a entender la forma que tienen. es importante que las imágenes que utilizaremos para realizar las pruebas no contengan figuras muy pequeñas si no que hayan sido tomadas con un buen aumento.

Como para cada imagen es necesario calcular un valor umbral único ya que si no se mostrarían resultados distintos o poco seguros usando un umbral estándar para todas.
Calcule el umbral para cada imagen y son los siguientes:

Umbral calculado de 100
Umbral calculado de 170
Umbral calculado de 255
Umbral calculado de 95


Al calcular esto para cada imagen el ruido se disminuye de manera considerable en las imágenes al aplicarle la binarizacion y se obtienen mejores resultados en la dilatación obteniendo las figuras totalmente cerradas.


Estas son algunas pruebas:



Imagen original
escala de grises
filtro
binarizada
mascara
 erosión
 dilatación
resultado final

Otro ejemplo:                                                         
   
  imagen original
escala de grises 
filtro
convolución
binarizada 
erosión 
dilatación                                                                    
resultado final    
                             

   

En cuanto al desempeño el programa suele ser un poco tardado en identificar todas las formas en imágenes que cuentan con demasiadas formas en ella haciendo lento el procedimiento de relleno de las formas en total.

Trabajo futuro:


Implementar directamente en el microscopio para que el sistema analice directamente los análisis clínicos e incorporar un módulo que se encargue de formatear la información obtenida por el sistema y que sea guardado en un documento pdf.

Bibliografias:

1.- Omar Sanchez (2008).
     Disponible en: http://www.slideshare.net/omarspp/imagen-morfologicas
     (Fecha de consulta 13 de mayo de 2013)
2.- Rafael Proveda, "Filtros y  operaciones en imágenes", (2011)
      Disponible en: http://www.raerpo.com/2011/01/13-ejercicios-capitulo-5.html
      (Fecha de consulta 13 de mayo de 2013)

Presentación: