¿Editar la nube de puntos LiDAR para eliminar el ruido / valores atípicos presentes debajo y por encima del suelo?


10

Tengo datos LiDAR "sucios" que contienen el primer y el último retorno y también inevitablemente errores debajo y por encima del nivel de la superficie. (captura de pantalla)

ingrese la descripción de la imagen aquí

Tengo a mano SAGA, QGIS, ESRI y FME, pero no tengo ningún método real. ¿Cuál sería un buen flujo de trabajo para limpiar estos datos? ¿Existe un método completamente automatizado o de alguna manera estaría borrando manualmente?


¿Sus datos de nube de puntos tienen clasificación de ruido bajo / alto (clases 7 y 8 de las especificaciones 1.4 R6)?
Aaron

¿Qué has probado con alguno de esos productos de software y dónde te quedaste atascado con él? Parece que quiere discutir opciones en lugar de hacer una pregunta enfocada. Discutir opciones siempre está bien en la sala de chat SIG.
PolyGeo

1
Votar para volver a abrir, ya que el moderador confunde preguntas que solicitan software con preguntas que solicitan métodos / formas de hacer algo. Las respuestas que solo enumeran software no son respuestas reales en este contexto. Explico mejor mi POV en gis.meta.stackexchange.com/questions/4380/… .
Andre Silva

1
Además, parece que el cierre unilateral "demasiado amplio" se ha utilizado en exceso: gis.meta.stackexchange.com/questions/4816/… . Creo que el caso se aplica aquí. Lo que hace que la pregunta sea singular es tener todo tipo de valores atípicos en la nube de puntos.
Andre Silva

Respuestas:


9

Parece que tienes valores atípicos:

  • i) debajo de la superficie del suelo;
  • ii) sobre la superficie del suelo y verticalmente entre otras características reales sobre el suelo;
  • iii) puntos sobre el suelo con una altura mayor que todos los objetos de interés, por ejemplo, los causados ​​por nubes o pájaros (esto no se muestra en la imagen, pero supongo que también podría ser el caso).

Para 'i', la opción es usar un algoritmo de filtro de tierra que pueda tener en cuenta los 'errores negativos' para obtener una nube de puntos de tierra LiDAR limpia. Vea el algoritmo de Clasificación de Curvatura Multiescala (MCC) de Evans y Hudak (2007). Se dice en la página 4:

Los errores negativos son una ocurrencia común en los datos LiDAR, que pueden ser causados ​​por la dispersión de los fotones en un pulso láser devuelto. La dispersión alarga el tiempo para que un pulso láser emitido regrese al sensor de la aeronave, lo que infla el cálculo de la distancia recorrida, lo que provoca un error de medición donde la elevación de la superficie se registra erróneamente por debajo de las mediciones circundantes. Cabe señalar que los enfoques de clasificación de curvatura pueden eliminar potencialmente los retornos válidos que rodean los errores negativos, lo que puede expandir el artefacto del borde alrededor de un error negativo para crear un efecto distintivo de "cráter de bomba". Para abordar los errores negativos, Haugerud y Harding sugirieron establecer el parámetro de tolerancia de curvatura en cuatro veces el tamaño de celda interpolado y seleccionar retornos que excedan este umbral de curvatura negativa. Sin embargo, debe tenerse en cuenta que, en determinadas circunstancias, los retornos que parecen ser errores negativos pueden ser, de hecho, retornos válidos (por ejemplo, sumideros). Por lo tanto, la sugerencia anterior para eliminar posibles errores negativos puede implementarse como un último bucle de modelo opcional para emplear a discreción del usuario si es necesario.

A continuación hay una publicación con un ejemplo sobre el uso de MCC-LIDAR:

Una vez que tenga una nube de puntos de tierra LiDAR precisa para hacer una DEM precisa, es posible normalizar la nube de puntos y excluir los puntos que están debajo de la superficie DEM (los que tienen valores negativos). Con el mismo enfoque, también es posible abordar el número de punto 'iii' eliminando puntos por encima de un umbral fijo. Ver, por ejemplo:

Luego, nos deja con 'ii', que se aborda en la respuestalasnoise de AlecZ que recomienda LAStools. También manejará 'iii', y quizás parte de 'i' también (LAStools requiere una licencia). Aquí se citaron otras herramientas específicamente creadas para verificar / eliminar valores atípicos: la filters.outlierherramienta de PDAL en la respuesta de Charlie Parr, que tiene una explicación detallada sobre cómo funciona la herramienta, y con la ventaja de que PDAL es un software gratuito.

Luego, lo que queda del proceso automatizado (si hay valores atípicos) se puede eliminar manualmente. Por ejemplo:


Evans, Jeffrey S .; Hudak, Andrew T. 2007. Un algoritmo de curvatura multiescala para clasificar LiDAR de retorno discreto en entornos forestales . Transacciones IEEE sobre Geociencia y Teledetección. 45 (4): 1029-1038.


3

Recomendaré PDAL la biblioteca de abstracción de datos de puntos. He tenido buen éxito al usar PDAL para un problema de filtrado similar. Me gusta PDAL porque es de código abierto, proporciona soporte para Python y me facilita la reproducción del procesamiento y el seguimiento de mis parámetros de filtrado. También me gusta porque tiene 'tuberías' donde puedes encadenar varios pasos (por ejemplo, recortar, luego filtrar y luego exportar) y ejecutarlos a la vez. Tenga en cuenta que si tiene nubes de puntos realmente grandes, PDAL podría no ser tan rápido como algunas otras soluciones (LASTools, QTM, etc.).

Puede abordar el problema de los puntos periféricos con una tubería PDAL similar a la siguiente:

{
"pipeline": [
    "input_utm.las",
    {
        "type":"filters.crop",
        "bounds":"([401900,415650],[7609100,7620200])"
    },
    {
        "type":"filters.outlier",
        "method":"statistical",
        "mean_k":12,
        "multiplier":2.0
    },
    {
        "type":"filters.range",
        "limits":"Classification![7:7]"
    },
    {
      "filename":"output.tif",
      "resolution":1.0,
      "output_type":"mean",
      "radius":3.0,
      "bounds":"([401900,415650],[7609100,7620200])",
      "type": "writers.gdal"
    }
    ]
}

Esta tubería lee en un LAS, lo recorta en una extensión UTM especificada, luego realiza un filtro que marca todos los puntos periféricos, luego realiza un segundo filtro que retiene solo puntos no periféricos (es decir, el indicador de Clasificación! = 7), luego exporta a una resolución de 1 m GeoTIFF. El filtro estadístico está realizando un cálculo de distancia media del vecino más cercano para probar si un punto está "demasiado lejos" de sus vecinos y, por lo tanto, un valor atípico.

De la documentación :

ingrese la descripción de la imagen aquí


1
@AndreSilva editado! esencialmente pregunta qué es una distancia 'normal' para que un punto se forme sus vecinos (mean_k), y si la distancia para un punto es demasiado grande (mayor que (multiplicador) * sigma por encima de la distancia media) entonces se marca como un caso atípico
Charlie Parr

1

Dado que OP no limitó las soluciones al código abierto, sugeriría Quick Terrain Modeler ( QT Modeler ). Requiere una licencia. Cargue la nube de puntos en QT, y esencialmente la inclina para obtener la vista de perfil que desea, coloca el clúster que desea eliminar y simplemente presiona eliminar.


1

He tenido suerte simplemente usando una varianza focal en un ráster interpolado. Luego asigna los valores de varianza a sus puntos y utiliza un umbral para eliminar las variaciones localmente altas, que representan grandes desviaciones de la estimación del núcleo local.

Debe asegurarse de que la resolución de la superficie interpolada sea un grano lo suficientemente pequeño como para capturar la variación local en un nivel de punto (s). El tamaño del kernel también tendrá un efecto, pero para valores atípicos individuales debería ser suficiente una ventana de 3x3. Puede perder algunos puntos adicionales de escuchar y escuchar, pero con lidar tiene muchos datos de sobra.


1

Lastools proporciona exactamente lo que necesita: scripts automatizados que eliminarán todos estos puntos por usted. Sin embargo, hay un costo de licencia para eso, pero si este es un proceso que desea realizar rápidamente como una tarea regular, usar el script lasnoise de su conjunto de herramientas es una opción perfecta.

Como señaló @Andre Silva, ArcGIS tiene un conjunto de herramientas de última generación, que puede usar después de ejecutar la herramienta de geoprocesamiento Crear dataset LAS. Desde allí, puede ingresar manualmente para reclasificar o eliminar estos puntos de ruido. El inconveniente es que no es un proceso tan intuitivo o efectivo como QT Modeler (sugerido por @auslander), probablemente el mejor programa para visualizar / analizar / manipular los archivos manualmente, y también con un costo de licencia. ArcMap limitará la cantidad de puntos visibles al editar su nube de puntos, lo que significa que probablemente tendrá que acercarse a áreas con ruido, eliminarlas o reclasificarlas, y luego moverse como parte de un proceso de limpieza manual. Pero esto hará el trabajo.


1

Como dijo Andre Silva , MCC-LIDAR es una buena opción para extraer los puntos básicos, pero desde mi experiencia, tendrá dificultades si tiene una nube de puntos muy grande (500 millones de puntos o incluso menos). En otras palabras, devolverá un error y no ejecutará el algoritmo, incluso si cambia la configuración (parámetros de escala y curvatura). Además, desde mi experiencia, mantiene algunos de los "errores negativos" en los datos.

Mi alternativa para eso es invertir la nube de puntos (los puntos debajo del suelo subirán y el suelo arriba bajará). Para obtener esto, cargo los datos en R e invierto la altura, luego ejecuto MCC-LIDAR y reinvierto los datos. Probablemente podría hacer esto en QGIS o ArcGIS, pero dependiendo del tamaño de su conjunto de datos, podría llevar un tiempo hacerlo.

La herramienta PDAL planta es también una buena opción, ya que funciona mejor con grandes conjuntos de datos, pero, de nuevo, algunos de los puntos bramido todavía se mantenía suelo. Invertir el conjunto de datos nuevamente ayudará a resolver este problema.

Para los puntos sobre el suelo, mi mejor enfoque es una limpieza manual y la mejor herramienta de código abierto que he encontrado para hacerlo es dentro de CloudCompare. Elegirás Segmenten el menú de la barra superior y podrás eliminar los puntos seleccionados o todos los demás. He usado LAStools antes ( lasviewherramienta) para esto, pero la forma en que funciona la interfaz 3D no es tan fácil de usar.


Enfoque interesante que invierte la nube de puntos para eliminar errores negativos. ¿Fue fácil cargar una nube de puntos de 500 millones de puntos en R?
Andre Silva

Puede tomar un par de minutos. Por lo general, subo desde un archivo ASCII usando fread desde el paquete de desarrollo data.table donde puedo jugar con la cantidad de hilos a usar.
Andre

1

Soy un soporte técnico de GreenValley International, la herramienta de eliminación de valores atípicos en nuestro software insignia LiDAR360 se puede utilizar para eliminar estos errores tanto como sea posible y, por lo tanto, mejorar la calidad de los datos.

El algoritmo primero buscará los puntos vecinos de cada punto dentro de un vecindario definido por el usuario, y calculará la distancia promedio desde el punto a sus puntos vecinos. Luego, se calcula la media y la desviación estándar de estas distancias promedio para todos los puntos. Si la distancia promedio de un punto a sus vecinos es mayor que la distancia máxima (distancia máxima = media + n * desviación estándar, donde n es un número múltiple definido por el usuario), se considerará un valor atípico y se eliminará del original punto de nube.

ingrese la descripción de la imagen aquí


-1

Como opción de código abierto, 3D Forest tiene algunas buenas herramientas para filtrar automáticamente, así como herramientas manuales para limpiar nubes de puntos. Es posible que deba probar con diferentes parámetros de filtro para obtener el resultado que necesita. Aunque está orientado a las nubes de puntos del bosque, muchas herramientas son útiles en cualquier nube de puntos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.