Procesamiento Neuronal Natural

 Procesamiento Neuronal Natural

Análisis Neuronal

Podríamos definir como procesamiento neuronal natural al análisis de una neurona biológica o natural, también podría diferir del procesamiento neuronal artificial, en ambos conceptos son utilizados algoritmos de Inteligencia Artificial.

Comparativa de una Neurona Biologica y una Neurona Artificial.


Después de que hicimos el Análisis Neuronal el siguiente paso será procesar los datos obtenidos por lo que vamos a crear un archivo de texto guardando en este toda la información de la neurona para su posterior acomodo. 

El siguiente código en python3 almacena las coordenadas obtenidas del archivo Original.tif en el archivo de texto llamado Neurona_InfoXYZ.txt

https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea4.py

https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Neurona_InfoXYZ-2020-11-04.txt

Este archivo contiene solo las primeras y ultimas coordenadas por lo que será necesario almacenar dentro de un for.

2020-11-04 05:01:39 -
[[[ 0 2919 2559 2919]]
[[2843 1919 2843 611]]
[[2842 1069 2842 0]]
...
[[ 397 152 405 164]]
[[ 863 1970 874 1954]]
[[ 227 2712 242 2713]]]

El código para el almacenamiento de todas las coordenadas lineales

https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea5.py

Resultado Completo:

https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Neurona_InfoRXYZ-2020-11-04.txt

Resultado Resumido:

...

2020-11-04 05:52:24 - 

 Coordenadas 

x1,y1 - x2,y2 

0,2919 - 2559,2919 

2843,1919 - 2843,611 

2842,1069 - 2842,0 

283,1 - 2004,1 

2559,2918 - 2559,1921 

283,998 - 283,101 

282,2 - 1052,2 

1404,0 - 2005,0 

2844,1914 - 2844,1556 

2561,1919 - 2842,1919 

2266,1139 - 2393,1040 

1135,1558 - 1172,1622 

0,999 - 282,999 

...

El ordenamiento de las coordenadas va a depender mucho para que lo ocupemos pero por lo pronto lo dejaremos así, si es para un modelado en 3D o para otro procesamiento, podríamos utilizar un json o bien algún otro tipo de cadena.

Lo siguiente que vamos a hacer es marcar un extremo de cada linea ( X2, Y2 ) con el atributo circle y le vamos a asignar un color azul (255) a cada circulo.

https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea6.py
LineaNeuronaNodoOriginal.tif ( 6.4 MB )

Marcando el extremo ( X1 , Y1 ) con un circulo verde (200) :


LineaNeuronaNodosOrig.tif ( 6.5 MB )

Si coincide un punto azul ( X2, Y2 ) con uno verde ( X1 , Y1 ) significa que es parte del mismo Axon.
Comparando Y1 == Y2
https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea6_2.py
Comparando X1 == X2
https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea6_3.py

Comparativa:


OTRAS NEURONAS

En este punto ya podemos probar con otro tipo de neuronas para comprobar el funcionamiento del algoritmo,  hasta el momento se ha probado con una imagen escala a grises pero vamos a ver que tal se comporta con otras imágenes de neuronas.

 El material que hemos analizado hasta el momento podría decirse que es en 2D, en este caso vamos a analizar una neurona en 3D como el de la siguiente neurona fluorescente:

Neurona Fluorescente

Las neuronas fluorescentes se logran modificando su DNA como en este caso, su fluorescencia se logra con alguna longitud de onda que detecta el microscopio y que a la vez con este método se puede elegir el color con un programa, por lo que en este caso será rojo, posteriormente podremos cambiar de colores haciendo un código en Python para que se ajuste automáticamente.




Obteniendo como resultado un archivo de texto con las coordenadas de esta neurona fluorescente:

COMPARATIVAS

Buscando en la Red alguna otra comparativa de neuronas y del código realizado, se encontró un algoritmo realizado en ImageJ que encontramos en el blog de Erik Meijering un programa que realizo con un complemento en JAVA. 

 Link del Articulo:

Donde encontramos la siguiente neurona:



y que al aplicar el algoritmo de Erik obtuvo el siguiente resultado:



Como podemos observar es muy similar a la neurona que obtuvimos, por lo que hicimos la prueba con el algoritmo hecho en Python, teniendo como resultado la siguiente imagen procesada:



https://github.com/iarobotixyz/Python/blob/main/Procesamiento%20Neuronal%20Natural/Archivo_linea6_4_2.py

Como la imagen capturada es pequeña a comparación de las otras neuronas que procesamos, la linea queda muy ancha para percibirse por lo que  se ajusto el grosor de la linea quedando de la siguiente manera:


Marcando los nodos con circulos:



Teniendo como resultado de esta neurona las siguientes coordenadas:






Tema siguiente: 




Comentarios