lunes, 27 de julio de 2015

Contar Olivos con Ortofoto: Parte I (Algoritmo Secuencial de Etiquetado)

Contar Olivos con Ortofoto: Parte I (Algoritmo Secuencial de Etiquetado)


Introducción


Hace muchos años, trabaje en Tragsatec, donde trabajaba manteniendo el GIS Dinamap. Había una parte del programa que me fascinaba. A partir de una ortofoto de un campo de olivos, Dinamap, contaba los olivos. De esta forma, se podría saber los olivos de un terreno y la subvención correspondiente. De esta forma, se evitaba que una persona, se trasladase al lugar y contarlos.

Siempre me pregunte que tipo de algoritmo se usaba. ¿Como los contaba? Y siempre me quedo esa espinita. Y creo que hoy, poco a poco, me lo voy sacando.

Pero, es lo mismo que contar estrella en una foto, solo que aquí, el fondo es negro y los elementos a contar blancos o más claros.


Mi implementación - Algoritmo Secuencial de Etiquetado


Primeramente, no he implementado todo el proceso, pero si una parte. Los pasos que yo veo para contar olivos, o estrellas...es el siguiente.

1-  Extraer todos los elementos de la imagen sean o no olivos. (Algoritmo Secuencial de Etiquetado)
2. - Determinar si el elemento extraído es un olivo.

En este post se ha implementado la primera parte, extraer todos los elementos de la imagen. Para este proceso se el algoritmo de tipo Algoritmo Secuencial de Etiquetado.



Implementación Algoritmo Secuencial de Etiquetado.

Imagen de test.



Dado una imagen en una escala de grises, se transforma esta imagen una matrix nxm donde n es la anchura de la imagen y m la altura de la imagen. Así, obtenemos una imagen donde los ceros, será el fondo de la imagen y los 1s, definiran los elementos contendidos en la imagen.



Aquí se ve como los 1s forman tres figuras, tres circulos. Ahora, con el algoritmo de etiquetado secuencial, se etiqueta cada figura, dando lugar a la extracción de la información de cada figura, lo que ocupa en ancho y algo en la imagen y su etiqueta asociada. Asi, el numero de figuras en la imagen, nos daría el numero de olivos aproximados.l



Aunque, claro, las figuras etiquetadas, pueden ser otra cosa que no sean olivos, como casas, o zonas osucaras de carreteras, y entonces, habría que pasar las matrices que forman las figuras, por otra fase, que detecte que figuras son olivos.

-Determinar si el elemento extraído es un olivo.


Aquí se puede usar redes neuronales la cuales, habrán sido entrenadas para reconocer patrones de imágenes de olivos. Como una imagen de un olivo puede estar en 20x15 pixeles, o en 15x17 pixeles, se realiza una transformación de la imagen a una conocida, por ejemplo a 5x5, Y asi, entrenaremos la red neuronal con imágenes de olivos de 5x5 pixelesy también de no olivos con esta resolución. Y también importante, entrenar a esta red neuronal contra el fraude, por si pusiesen en el campo olivos de cartón para que en la ortofoto se cuente como un olivo. Pero esta parte, ya se realizará en otro post.



CounterOlives


CounterOlives es el programa de testeo para probar la primera fase de esta implantación de contar olivos. 










En este link esta un fichero comprimido con el ejecutable y algunas ortofotos en formato .bmp.


En el siguiente ejemplo, se ve como cuenta como olivos, figuras que no son olivos. Aquí, es donde un segundo algoritmo (redes neuronales por ejemplo) debería de clasificar cada figura y asi contar verdaderamente los olivos que hay en la imagen.





Conclusión

Con unas pocas modificaciones, se podría contar el número de piscinas en un municipio, el numero de estrellas, número de personas en una concentración...lo mismo he pecado de optimista con 'unas pocas modificaciones'..pero se podría intentar.

Noticias relacionadas:

"Google Earth es utilizada para encontrar piscinas ilegales": 
http://www.marketingdirecto.com/actualidad/digital/google-earth-es-utilizada-para-encontrar-piscinas-ilegales/



No hay comentarios:

Publicar un comentario