Proyecto Análisis Neuronal

 


El proyecto inicia con la captura de una neurona a travez de un microscopio electrónico, esta es almacenada como imagen con terminación " *.tif " que es un archivo escala a grises como en la siguiente imagen:

neurona.tif ( 8.3 MB )

Para este proyecto utilizaremos Python3 ya que se ejecuta en la mayoría de los sistemas operativos, recomiendo Linux, Mac OS, Windows, ademas cuentas con una gran cantidad de Librerías muy útiles para el procesamiento de imágenes como lo es la librería cv2 la cual usaremos y la podemos descargar con el comando:


  • Para módulos principales se debe ejecutar 
    • pip install opencv-python
  • Para módulos principales como complementos (contrib) se debe ejecutar 
    • pip install opencv-contrib-python


Nota: Recuerda que para Linux y Mac lo puedes hacer desde la terminal.

Si llegaras a tener dudas con la instalación de esta librería, es recomendable visitar la pagina oficial:

https://pypi.org/project/opencv-python/

Documentacion de OpenCV

https://docs.opencv.org/3.0-beta/index.html


El análisis inicia ejecutando nuestro código con python desde la terminal

Código uno.py , se ejecuta de la siguiente manera python uno.py

MacBook-Pro-Robotxyz:$ python uno.py  


https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/uno.py

Ya que hemos hecho nuestro primer ejemplo de abrir la imagen con python 2 como en el ejemplo uno.py optamos por usar python 3 para el procesamiento de la imagen, esto cambia la forma de abrir el archivo.

Abrir un archivo con python 3 , se ejecuta desde la terminal python3 uno_dos.py

MacBook-Pro-Robotxyz:$ python3 uno_dos.py 

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/uno_dos.py

Ya que logramos abrir el archivo original neurona.tif lo guardaremos como un archivo Original.tif para que posteriormente usemos para un doble procesamiento y hacer un análisis mas rápido de la imagen ya que se reduce el tamaño de la imagen.

Original
Original.tif ( 3.9 MB ) 


En el Código dos.py generara dos archivos, el Original.tif y Binario.tif este ultima imagen es la conversión a binario de la imagen neurona.tif 



Binario.tif ( 235 KB )

Tambien existe la posibilidad de crear un archivo binario invertido para mejorar el análisis del recorrido de los nodos o dendritas.

  • TRES

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/tres.py


Binario_Invertido.tif ( 234 KB )

Un metodo de análisis de diferencia de pixel es el THRESH_TRUNC

  • CUATRO

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/cuatro.py

Binario_DPixel.tif ( 322 KB )

  • CINCO

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/cinco.py

Binario_Cero.tif ( 3.8 MB )

  • SEIS

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/seis.py

Binario_CeroInvertido.tif ( 321 KB )

  • SIETE

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/siete.py

Binario_Optimo.tif ( 563 KB )

En conclusión la tabla de operaciones queda de la siguiente manera:



Recorrido Lineal de la Neurona

El siguiente paso es tratar de hacer el recorrido para poder asi encontrar la dendrita , basicamente se debe encontrar entre dos rectas aun cuando sean rectas pequeñas por lo que lo primero es marcar lineas y después tratar de marcar un recorrido con esas lineas, en el caso de una curva es encontrar la linea recta mas pequeña hasta incluso llegar al par de pixel para poder determinar la dendrita mas pequeña.

Ejemplo de Linea 

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/linea2.py

MacBook-Pro-:NEURONA$ python3 linea2.py 




Binario_Linea2.tif ( 538 KB )

Utilizando el mismo código pero ahora utilizamos la imagen de Binario_Invertido.tif generada del código del punto tres.

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/linea2_1.py

Binario_Linea2_INV_1.tif ( 1.5 MB )


Haciendo la prueba con Binario_Cero.tif del punto cinco:

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/linea2_2.py



Binario_Linea2_CERO_1.tif ( 6.4 MB )

Tomando el ejemplo de Binario_CeroInvertido.tif del punto seis, queda de la siguiente manera:

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/linea2_3.py


Binario_Linea2_CEROinv_1.tif ( 1.7 MB )


Por ultimo el análisis es para la imagen Binario_Optimo.tif del punto siete:

https://github.com/iarobotixyz/Python/blob/main/Análisis%20Neuronal/linea2_4.py

Binario_Linea2_Optimo_1.tif ( 1.1 MB )




Se dio un cambio de color ya que el verde es difícil de apreciar con el fondo blanco por lo que se eligió mejor un color rojo para el recorrido de la neurona.

Tomando la imagen Original.tif y haciendo ajustes a HoughLinesP

LineaNeuronaOriginal.tif ( 6.4 MB )


Tomando la imagen Binario.tif y haciendo ajustes a HoughLinesP

LineaNeuronaBinario.tif ( 534 KB )

LineaNeuronaCeroINV.tif ( 527 KB )


Comparativa Lineal



Siguiente tema:

Procesamiento Neuronal Natural


Comentarios