Como dice el título, la finalidad es extraer aquellos puntos pertenecientes a cubiertas a partir de fotogrametría oblicua. Para ello partimos de un vuelo empleando una cámara Pictometry Penta View N5 16MP con 5 sensores (1 ortogonal y 4 oblicuos a 45º) con un GSD promedio de 0.106 m. La dirección del vuelo es este-oeste con un recubrimiento 60/40
En una primera fase de trabajo, con el software Agisoft PhotoScan, procesamos las imágenes y generamos una nube de puntos, siguiendo el siguiente flujo de trabajo;
Al no ser el objetivo del post hablar como funciona la herramienta o que variables se han ingresado para cada fase, me remito únicamente a mostraros el resultado de la nube generada. No obstante, si alguien estuviera interesado, no dude en contactar conmigo. (Sólo muestro la nube generada para el área de estudio)
Una vez tenemos la nube de puntos (georreferenciada), el procesado para la extracción de cubiertas lo realizaremos utilizando la aplicación gratuita CloudCompare. Si no la conocéis, os dejo el enlace para que podáis descargar esta potentísima aplicación.
El flujo de trabajo seguido es el siguiente;
COMPUTACIÓN DE NORMALES
Para futuros pasos, necesitaremos calcular las normales de la
nube de puntos. La computación es totalmente automática. Los parámetros
ingresados son los siguientes;
·
Modelo
local de superficie: “Plano”
· Vecino
más próximo: Usando el cálculo automático, nos generará un octree R=12,62
· Orientación:
El método trata de reorientar todas las normales de una manera consistente,
comenzando desde un punto aleatorio y propagando la orientación de la normal de
un vecino a otro. La propagación se basa en el método minimum spanning tree). Para este caso, el número máximo de vecinos
conectado a cada nodo se ha determinado tal que knn=6
SEGMENTACIÓN MANUAL DE ZONAS VERDES
En esta fase de trabajo, se optará por segmentar toda la
zona correspondiente al monte Urgul, ya que tras una inspección visual, nos
damos cuenta de que a partir de la cota 42 aproximadamente, no se encuentra
ningún edificio, por lo que a fin de aligerar los cálculos posteriores
decidimos segmentar manualmente esta zona.
SEGMENTACIÓN DE FACHADAS
A fin
de eliminar los puntos correspondientes a fachadas de edificios, se procederá a
un filtrado por pendientes. Suponiendo
que las fachadas son verticales o casi verticales, eliminaremos todos aquellos
puntos que tengan una pendiente inferior a 87 º.
En esta fase, realizaremos una segmentación de terreno. De
esta manera, se intentarán eliminar todos aquellos puntos que pertenezcan a
aceras, viales, escolleras, etc. Para ello se utilizará el filtro CSF (Cloth
Simulation Filter) integrado
en CloudCompare.
Para aplicar el filtro se introducirán los siguientes
parámetros:
·
Scene: Se
refiere a la topografía del terreno. En nuestro caso asumimos que el terreno es
plano, o al menos que carece de grandes pendientes.
·
Cloth
resolution: Referido al tamaño de la malla o la hipotética tela. El valor
que ingresaremos será de 0,7.
·
Max
iteraciones: Se proponen 1.000 iteraciones para el cálculo
·
Classification
threshold: Umbral de clasificación para clasificar la nube de puntos en
puntos terreno y no-terreno. Por defecto se estipula en 0,5.
Una vez aplicamos el filtro
sobre nuestra nube de puntos, obtendremos dos nubes; Una primera en la que se
mostrarán únicamente los puntos correspondientes al terreno, y una segunda nube
con puntos no-terreno. Superponiendo ambas nubes, se aprecia la clasificación
hecha;
SEGMENTACIÓN DE PUNTOS AISLADOS
Tras haber realizado satisfactoriamente la segmentación de
terreno, procederemos a eliminar todos aquellos puntos dispersos que se
encuentren en la nube. Para ello utilizaremos la herramienta “SOR” (Statistical Outlier Removal). En un
primer paso, la herramienta calculará la distancia media de cada punto a sus vecinos, considerando “k” vecinos más
cercanos para cada punto. A continuación rechaza los puntos que están más lejos
que la distancia más un número “n” de veces la desviación estándar. La
herramienta nos pedirá que ingresemos el número de puntos a usar para el
cálculo de la estimación de la distancia media (k) y el multiplicador de la
desviación estándar (nSigma).
Para nuestro caso en concreto, previamente habiendo
realizado diferentes experimentos con diferentes valores, asumimos los siguientes valores;
·
K =
2.500
·
nSigma = 1
SEGMENTACIÓN DE TEJADOS
En
esta última fase, tras haber dejado la nube lo más limpia posible, procederemos
a extraer aquellos puntos que pertenecen a cubiertas. El procesado lo realizaremos
con la herramienta qCANUPO (Brodu, Lague,
2012) en CloudCompare. En el siguiente enlace os dejo la documentación de esta herramienta
http://www.cloudcompare.org/doc/wiki/index.php?title=CANUPO_(plugin)
Obteniendo el siguiente resultado:
Como siempre pasa, a muy pesar de muchos "profesionales" no existe el botón mágico, y este caso no iba a ser menos, por lo que el proceso final de segmentación será manual, obteniendo el siguiente resultado
Me gustaría aclarar que cuando decimos que se ha hecho algún proceso automático, habría que decir que ha sido "semi-automático", ya que aunque tengamos herramientas que "nos hacen las cosas" hay que decirle como queremos que nos las haga.
Espero que os haya gustado lo que fue una parte de mi TFM y cualquier duda o comentario será bien recivido