miércoles, 15 de abril de 2015

Precisión de los datos LIDAR.

Una vez manejados con relativa soltura los datos LIDAR que el CNIG nos ofrece, nos hemos preguntado, a modo de conclusión, por la precisión de los mismos. ¿Realmente los puntos LIDAR aparecen bien clasificados según el terreno que representan? ¿Qué fiabilidad tienen? Cuando un punto aparece clasificado como Alta Vegetación o como Edificio, ¿es realmente cierto sobre el terreno? Sinceramente que miles de puntos recogidos de una manera masiva tuvieran una precisión y realismo exactos nos parecía algo casi milagroso, por lo que hemos hecho algunas pruebas al respecto.
Abrimos en Global Mapper la ortofoto de la zona de pruebas: un pequeño pueblo de montaña que conocemos bien a fin de tener tanto vegetación como edificios en el área de estudio.
Cargamos la cuadrícula LIDAR de la zona. Es más, cargamos solamente los puntos que cubren nuestra ventana a fin de que el rango de alturas se ajuste lo máximo posible a este área (no al área de la cuadrícula LIDAR completa). Empezamos coloreando los puntos LIDAR por elevación.
LIDAR coloreado por elevación. La precisión parece magnífica: cambio de tonos en el comienzo de las montañas, diferencia de tono entre suelo y edificios, algunos grupos de árboles muy altos,...
Cambiamos el coloreado del LIDAR por altura respecto al suelo. La escala de alturas de Global Mapper se reajusta y de nuevo la precisión nos parece muy buena: tono rojo general para la altura del suelo, y edificios y grupos de árboles con distinto tono de altitud.
Por tanto, la precisión por alturas de los datos recogidos parece no tener ningún problema. Ello nos permite obtener, como hemos visto ya, modelos de superficie de una fiabilidad pasmosa. Os pongo una muestra de la zona de estudio para que comprobéis el nivel de detalle que puede captar la nube de puntos (todos los puntos activados):
Impresionante capacidad de los datos LIDAR para captar las elevaciones del terreno. Pequeños huertos con frutales, iglesia y cementerio, o una pista de tierra, como vemos señalados en rojo, quedan fielmente reflejados.
Distinto asunto parece el de la clasificación de estos puntos. Filtramos los puntos para visualizar sólo los correspondientes a suelo, vegetación y edificios (colores marrón, verde y rojo respectivamente).
Vemos que los colores empiezan a entremezclarse con algo de caos, y muchos puntos situados sobre los tejados de las casas aparecen clasificados como vegetación (verde).
Activamos todos los puntos disponibles en el LIDAR y descubrimos que la mayoría de la zona nos aparece cubierta por puntos clasificados como Overlap (superpuestos o coincidentes) y nos preguntamos si estos overlap points son la razón de la poca precisión en la clasificación de edificios y vegetación en ese área.
Overlap points en morado con todos los puntos LIDAR activos.
Así pues, ¿podríamos concluir que los puntos están ahí, perfectamente captados, y que el único "problema" para rozar la perfección sería la clasificación de los mismos? Entendemos que la captación de los puntos, con su altitud y coordenadas, está perfectamente conseguido... Pero, ¿podemos decir lo mismo del método de clasificación? Esto nos lleva a que si seleccionamos sólo los puntos que representan los tres tipos de vegetación, los resultados son bastante inexactos en esta zona concreta:
Multitud de puntos clasificados como vegetación se encuentran evidentemente sobre edificios.
Y si hacemos lo mismo visualizando solamente los puntos clasificados como edificios, aún peor:
Los puntos clasificados como edificios son, a todas luces, insuficientes.
Sin una clasificación más exacta de estos puntos los resultados en la zona evidentemente están algo lejos de la realidad. Desconozco si esto pasa en todas las zonas, si ha sido casualidad en este ejemplo, o si a estas escalas con las que hemos probado a los puntos LIDAR no se les puede pedir más y están pensados para extraer datos más en general. Pero si en estas condiciones extraemos una malla de elevaciones (suelo+edificios) el resultado es este:
Así se da la paradoja de que, si queremos representar con más fiabilidad los edificios, es preferible extraer una malla de elevaciones incluyendo todos los puntos ya que, aunque erróneamente clasificados, al menos el volumen será representado.
Global Mapper nos permite clasificar manualmente los puntos de la nube LIDAR. Esto es importantísimo. Quizá no para un Modelo Digital de Superficie (en el que en el fondo todo queda representado y nos puede resultar indiferente a veces si esa elevación es un edificio o un grupo de árboles), pero sin duda lo es si queremos elaborar otros modelos digitales. Si los puntos tienen una clasificación errónea, difícilmente nuestro modelo quedará realista. Si tenemos puntos clasificados como alta vegetación donde no la hay, creeremos que hay árboles donde no los hay. Hemos cambiado, de manera tosca y sin mucha precisión, muchos de los puntos clasificados como vegetación que en la anterior captura estaban evidentemente sobre los edificios, y los hemos clasificado como Building. Sin haber sido meticulosos como digo, el cambio en la malla de elevaciones (suelo+edificios) respecto a la captura anterior ya es evidente:
Resumiendo, la clasificación de los puntos LIDAR, que imagino se hace en base a complicadas fórmulas matemáticas respecto a puntos vecinos, parece no ser muy precisa cuando entramos al detalle. Y así como sus datos de altura y posición seguramente sean incontestables, la clasificación a posteriori de los puntos puede no ser tan fiable como quisiéramos a la hora de trabajar en zonas más pequeñas. Obviamente esta mala clasificación, que supone un problema inapreciable a la hora de elaborar un MDT de muchos kilómetros cuadrados, puede no ser tan menor si queremos conocer con cierta exactitud las masas de arbolado de una zona más concreta o la existencia de edificios aislados. Quizá le estoy pidiendo a los datos LIDAR lo que no pueden dar... En cualquier caso ahí quedan mis experimentos; ojalá los que sabéis más de esto comentéis el artículo para corroborar o desmentir mis novatas impresiones. Gracias y saludos.

6 comentarios:

  1. hola, como estas.

    sigo mucho tus publicaciones, la verdad muy buenas. Soy Agrimensor, en Argentina y tengo una pagina donde publico algunas cositas interesantes. Despues pasate si querés: www.paginadelui.com.ar

    Con respecto al artículo.. Es muy interesante! el algoritmo de clasificacion de puntos es dependiente del programa. Global Mapper es un muy buen programa, todos lo conocemos. Pero tambien podríamos ver otras opciones. Qgis tiene algun componente Lidar? su codigo libre puede ayudar a fomentar una mejora en cuanto al codigo (me imagino). Existe tambien un programa que conozco (que es pago) que se llama Pythagoras... tambien tiene tratamiento de puntos LIDAR.. y podriamos compararlos!...

    Con lo que respecta a mi trabajo, de agrimensor, por lo general necesito informacion altimetrica del TERRENO solamente... de esta manera, y viendo tu post, hay problemas en la clasificacion de construcciones con vegetacion en altura... pero ¿si elimino ambas variables, vegetacion y construcciones, obtengo un modelo limpio del terreno?. De ser asi por lo menos para algunas aplicaciones tenemos resuelto el problema.

    Saludos desde Salta, Argentina!!! y que rico es el chorizo colorado español jajajaja. Mi abuelo era de Hinojosa de Duero (creo que queda en Salamanca) y nos dejó la costumbre de esos chorizos. Y los jamones.

    ResponderEliminar
    Respuestas
    1. Saludos Lui. Respecto a QGIS justo el artículo anterior a este habla de cómo tratar datos LIDAR en él:
      http://digimapas.blogspot.com.es/2015/04/lidar-en-qgis-lastools.html
      Y en este se habla de lo que comentas de obtener un Modelo limpio del terreno....
      http://digimapas.blogspot.com.es/2015/04/mdt-con-datos-lidar-en-global-mapper.html
      Saludos desde España y muy bueno chorizo y jamones por Salamanca, cierto!!! Visitaré tu página.

      Eliminar
  2. Hola Javier;
    Muy interesante esta serie de post relacionados con el LIDAR y el análisis que haces de los puntos obtenidos por el PNOA.
    Como bien has concluido, lo relativo a la precisión en la toma de datos es asombrosa, sin embargo, la clasificación deja mucho que desear y es ahí donde está lo dificil.
    Los datos del PNOA vienen con una clasificación previa que, como has demostrado, puede ser algo más que inexacta en muchas zonas. Es por eso que es más interesante desclasificar todos los puntos y clasificarlos nosotros mismos nuevamente.
    Lo más importante, a mi modo de ver, es clasificar correctamente los puntos que corresponden a suelo, ya que son el punto de partida para todo lo demás. Para hacer esta clasificación hay multitud de algoritmos, uno (o varios) por cada programa y programas que te permiten definir tus propios algoritmos. Como se puede imaginar, cada algoritmo dará un resultado diferente, unos trabajan mejor en zonas arboladas, otros en zonas con edificios, otros interpretan mejor los barrancos... Desconozco que exista el algoritmo perfecto.
    A partir de aquí, clasificar los puntos de edificios, arbolado... también depende de los valores que queramos asignar, pudiéndonos salir de la clasificación estandar y crear varios tipos de vegetación o lo que queramos. En función de nuestras elecciones tendremos mejores o peores resultados.
    Una vez clasificados todos los puntos y eliminado los errores, podemos proceder a crear los modelos de lo que queramos.
    En resumen, la clasificación de los puntos en la categoría correcta es vital. Si los puntos están mal clasificados, los modelos serán erróneos.

    Un saludo

    ResponderEliminar
    Respuestas
    1. Muchas gracias por tus comentarios y aclaración, tocayo. Imagino que sin un refinado manual final (y aún así) siempre habrá imprecisiones. Porque aunque tengamos los puntos de suelo perfectos, ¿qué algoritmo puede distinguir un árbol de un tejado si por ejemplo el parámetro del algoritmo es que considere edificio los puntos 5 metros por encima del suelo? Imagino que afinamientos de ese tipo sólo pueden hacerse manualmente. Un saludo!!

      Eliminar
    2. Buena de nuevo;

      El refinado manual suele ser para puntos anómalos (p.e.: Un pájaro) y para cosas muy puntuales o trabajos muy concretos (No vas a trabajar manualmente mirando árbol a árbol en un inventario forestal de 1000ha).
      Respecto a la clasificación por medio de algoritmos y utilizando un ejemplo, lo que se hace para discriminar los edificios es utilizar ángulos. Es decir, normalmente (Excepto cuando los arquitectos innovan demasiado), un edificio arranca desde el suelo con una pared que forma un ángulo de 90º con el suelo. Si al algoritmo le decimos que cuando entre un punto y otro haya un ángulo superior a 80º clasifique el punto como provisionalmente edificio (Hay que hacer más comprobaciones), es posible que ya estemos discriminando bien bastantes edificios. Esto es de manera muy sencilla, hay que tener en cuenta tejados, cubiertas, salientes...
      Para el arbolado si que se discrimina mejor por altura, pero claro, habiendo clasificado primero los edificios (Y el suelo, por supuesto) así ya no los tomaremos como vegetación. Según zonas, podemos decir que los puntos entre 0 y 2m de altura respecto al suelo correspondan a matorral, entre 2 y 5 se trata de un pinar joven (Insisto, por ejemplo) y de más de 5m pinar adulto.
      Para hacer una correcta clasificación de la vegetación NO generalista, hay que conocer el monte.
      La verdad es que el tema es muy interesante y los datos LIDAR dan mucho juego, pero hay que tener cuidado, ya que los algoritmos y clasificaciones admiten todo lo que le echemos, si lo hacemos incorrectamente el error puede ser todo lo grande que podamos imaginar.
      Espero haber ayudado.
      Un saludo

      Eliminar
    3. Por supuesto que si.... Es más, con estos comentarios siempre quedan más completas las lagunas del artículo, y para eso están. Muchas gracias.

      Eliminar