Tutoriales

A continuación, encontrará instrucciones para algunos casos de uso comunes.

Creación de Ortofotos de Alta Calidad

Imagen de ortofoto de OpenDroneMap

Sin ningún ajuste de parámetros, ODM elije un buen balance entre calidad, velocidad y uso de memoria. Si quiere obtener resultados de mayor calidad, debe modificar algunos parámetros:

  • --orthophoto-resolution es la resolución de la ortofoto en cm/pixel. Disminuya este valor para obtener un resultado de mayor resolución.

  • --ignore-gsd es un indicador de instruye a ODM a omitir ciertas optimizaciones de memoria y velocidad que afectan la ortofoto. El uso de este indicador aumentará el tiempo de ejecución y el uso de la memoria, pero puede producir resultados mas nítidos.

  • --texturing-data-term debe establecerse en area para áreas forestales.

  • --mesh-size debe incrementarse a 300000-600000 y --mesh-octree-depth debe incrementarse a 10-11 en áreas urbanas para recrear mejor los edificios/techos.

Calibrar la cámara

La calibración de la cámara es un desafío especial con las cámaras básicas. Los cambios de temperatura, las vibraciones, el enfoque y otros factores pueden afectar los parámetros derivados con efectos sustanciales en los datos resultantes. La calibración automática o la autocalibración es posible y deseable para los vuelos de drones, pero dependiendo del patrón de vuelo, la calibración automática puede no eliminar toda la distorsión de los productos resultantes. James y Robson (2014) en su artículo Mitigating systematic error in topographic models derived from UAV and ground‐based image networks abordan cómo para minimizar la distorsión de la autocalibración.

Imagen del efecto de distorsión de la lente en el combamiento de datos

Efecto de tazón en la nube de puntos de un juego de datos de mas de 13,000 imágenes colectadas por el Banco mundial de Tanzania sobre la cuenca propensa a inundaciones de Msimbasi, Dar es Salaam, Tanzania.

Para mitigar este efecto, hay algunas opciones, pero las más simples son las siguientes: vuele dos patrones separados por 20 °, y en lugar de tener una cámara nadir (apuntando hacia abajo), use una que se incline hacia adelante en 5 °.

animación que muestra el óptimo

As this approach takes longer than traditional imaging, pilots and teams may apply this technique to a smaller area and use the collected data to optimize future flights. OpenDroneMap can generate a calibration file called cameras.json from a small sample flight. The calibration file can be used for future flights, mitigating the bowling effect without sacrificing efficiency.

Alternativamente, se puede aplicar el siguiente método experimental: volar con una superposición mucho menor, pero dos vuelos de rejilla cruzada (a veces llamados rayados cruzados) separados por 20 ° con una cámara de 5 ° orientada hacia adelante.

  • Los porcentajes de superposición de rejillas cruzadas pueden ser más bajos que los vuelos paralelos. Para obtener buenos resultados en 3D, necesitará un 68% de superposición y superposición lateral para una superposición y superposición lateral equivalente del 83%.

  • Para obtener buenos resultados en 2D y 2.5D (modelo de elevación digital), necesitará un 42% de superposición y superposición lateral para una superposición y superposición lateral equivalente del 70%.

animación que muestra el óptimo experimental

Las líneas de vuelo separadas verticalmente también mejoran la precisión, pero menos que una cámara que mira hacia adelante en 5 °.

Figura que muestra el efecto de las líneas de vuelo separadas verticalmente y las cámaras orientadas hacia adelante para mejorar la autocalibración.

De James and Robson (2014), CC BY 4.0

Creación de modelos de elevación digitales

Por defecto, ODM no crea DEMs. Para crear un modelo digital de terreno, asegúrese de utilizar la marca --dtm. Para crear un modelo digital de superficie, asegúrese de pasar la marca --dsm.

imagen del modelo digital de superficie derivado de OpenDroneMap

Para la generación del DTM, se utiliza un filtro morfológico simple (smrf) para clasificar los puntos terrestres frente a los no terrestres y solo se utilizan los puntos terrestres. El filtro smrf se puede controlar mediante varios parámetros:

  • Valor de escala --smrf-scalar. Aumente este parámetro para terrenos con mucha variación de altura.

  • Parámetro de pendiente --smrf-slope, que es una medida de la «tolerancia de pendiente». Aumente este parámetro para terrenos con mucha variación de altura. Debe establecerse en un valor superior a 0,1 y menor a 1,2.

  • Umbral de elevación --smrf-threshold. Establezca este parámetro en la altura mínima (en metros) que espera que tengan los objetos que no corresponden al suelo.

  • Parámetro de radio de ventana --smrf-window (en metros) que corresponde al tamaño de la característica más grande (edificio, árboles, etc.) que se eliminará. Debe establecerse en un valor superior a 10.

Cambiar estas opciones puede afectar significativamente el resultado de los DTM. La mejor fuente de lectura para comprender cómo los parámetros afectan la salida es leer el artículo original An improved simple morphological filter for the terrain classification of airborne LIDAR data (PDF disponible gratuitamente).

En general, la opción --smrf-threshold tiene el mayor impacto en los resultados.

SMRF es bueno para evitar errores de Tipo I (un pequeño número de puntos de tierra clasificados erróneamente como no terrestres) pero solo es «aceptable» para evitar errores de Tipo II (gran número de puntos no terrestres clasificados erróneamente como terrestres). Esto debe tenerse en cuenta al generar DTM para ser usados visualmente, ya que los objetos que se confunden con el suelo parecen artefactos en el DTM final.

Imagen del efecto de distorsión de la lente en el combamiento de datos

Otros dos parámetros importantes afectan la generación de DEM:

  • --dem-resolution que establece la resolución de salida del ráster DEM (cm/píxel)

  • --dem-gapfill-steps que determina el número de capas DEM progresivas que se utilizarán. Para escenas urbanas, aumentar este valor a «4-5» puede ayudar a producir mejores resultados de interpolación en las áreas que quedan vacías por el filtro SMRF.

Ejemplo de cómo generar un DTM:

docker run -ti --rm -v /my/project:/datasets/code <my_odm_image> --project-path /datasets --dtm --dem-resolution 2 --smrf-threshold 0.4 --smrf-window 24

Medir el volumen de pilas de materiales a granel

Planificación del trabajo de campo

Las condiciones climáticas modifican la iluminación y, por lo tanto, afectan los resultados de la fotografía. Los mejores resultados se obtienen con cielos nublados uniformemente o despejados. También busque velocidades de viento bajas que permitan que la cámara permanezca estable durante el proceso de recopilación de datos. Para evitar sombras que puedan obstruir la detección de características en un lado de la pila y disminuir el número de puntos resultantes, prefiera siempre los vuelos durante el mediodía, cuando el sol está en el nadir para que todo esté iluminado consistentemente. También asegúrese de que la distancia de visibilidad horizontal a simple vista sea congruente con las distancias de vuelo planificadas para el proyecto específico, de modo que la calidad de la imagen no se vea afectada negativamente por el polvo, niebla, humo, cenizas volcánicas o la contaminación.

Patrón de vuelo

La mayoría de los trabajos de medición de pilas no requieren un patrón de vuelo cruzado o la cámara en ángulo, ya que el ángulo de reposo de los materiales de las pilas permite que la cámara capture todos los lados. Solo algunos casos especiales en los que la erosión o las operaciones de maquinaria causan ángulos pronunciados en las caras de la pila se verán beneficiados del patrón de vuelo cruzado y la cámara en ángulo, pero considere que estas características adicionales tienen un costo (en mano de obra de campo y tiempo de procesamiento) y las mejoras resultantes son a veces insignificantes.

En la mayoría de los casos, un patrón de vuelo paralelo como una podadora, es capaz de producir modelos de pilas de alta precisión.

un patrón de vuelo simple de cortadora de césped puede producir resultados precisos

El traslape frontal recomendado debe estar entre 75% y 80%, con un traslape lateral en el orden de 65% y 70%. También se recomienda incrementar ligeramente el traslape lateral y frontal conforme se incremente la altura del vuelo.

Altura de vuelo

La altura de vuelo puede verse influenciada por diferentes modelos de cámara, pero de manera general y con el fin de garantizar un equilibrio entre la calidad de imagen y la optimización del vuelo, se recomienda ejecutarlo a alturas de 3 a 4 veces la altura de la pila más alta. Entonces, para una pila de 10 metros, las imágenes se pueden capturar a una altura de 40 metros. A medida que aumenta la altura de vuelo, también se recomienda aumentar la superposición, por lo que para un vuelo de 40 metros de altura puede usar una superposición lateral del 65% y una superposición frontal del 75%, pero para una altura planificada de 80 metros, una superposición lateral del 70% y una superposición del 80% permitiendo que las estructuras sean reconocidas y procesadas correctamente.

GCPs

Para lograr niveles de precisión superiores al 3%, se recomienda el uso de GCP. Normalmente, 5 GCP distribuidos son suficientes para garantizar resultados precisos. Al colocar o medir los GCP, la precisión del equipo debe ser mayor que el GSD. Las estaciones totales y los GNSS de grado topográfico están diseñadas para proporcionar la precisión milimétrica requerida.

For further information on the use of GCPs, please refer to the Ground Control Points section.

Parámetros de procesamiento

Se puede lograr un modelo de alta precisión usando los parámetros predefinidos para alta resolución en WebODM. Luego puede ajustar aún más algunos parámetros según sea necesario.

Si utiliza ODM, estos valores de referencia pueden ayudarle a configurar los parámetros de proceso.

–dsm: true

–dem-resolution 2.0

–orthophoto-resolution 1.0

–feature-quality high

–pc-quality high

Medición

Como casi el 50% del material se encuentra en el primer 20% de la altura de la pila, se debe tener especial cuidado en definir adecuadamente el plano de la base.

casi el 50% del material se encontrará en el primer 20% de la altura de la pila

En el tablero de WebODM, haga clic en «ver mapa» para iniciar una vista 2D de su proyecto.

Una vez en la vista de mapa 2D, haga clic en el botón «Medir volumen, área y distancia».

haga clic en el botón "Medición de  volumen, área y distancia"

luego haga clic en «Crear una nueva medición»

haga clic en "Crear una nueva medición"

Empiece a colocar los puntos para definir el plano de la base de la pila

Definir el plano base de la pila

Haga clic en «Finalizar medición» para finalizar el proceso.

Haga clic en "Finalizar medición" para finalizar el proceso

El cuadro de diálogo muestra el mensaje «Calculando…» por algunos segundos, y después de que el cálculo esté terminado la medición de volumen será desplegada.

Haga clic en "Finalizar medición" para finalizar el proceso

Si utiliza OpenDroneMap en la línea de comandos, puede usar los archivos DSM para medir el volumen de las pilas usando otros programas.

También considere que una vez que los límites de la pila están definidos en un software como QGis, encontrará que existen varias maneras de determinar el plano de la base. Así que para pilas aisladas, cuyos límites son mayormente visibles, se puede usar un enfoque linear. Mientras que para pilas ubicadas en pendientes o en contenedores, el plano de la base es mejor definido el punto mas bajo. Se recomienda la creación de una superficie tridimensional triangulada para definir el plano de la base de pilas grandes. Esto también es válido para pilas sobre superficies irregulares.

Precisión esperada

Para proyectos cuidadosamente planificados y ejecutados, y especialmente cuando el GSD es menor de 1 cm, la precisión esperada debe estar en el rango de 1% a 2%. La precisión resultante es comparable a la del software de fotogrametría disponible comercialmente y la obtenida utilizando equipo GNSS de grado topográfico.

Usando Docker

Dado que muchos usuarios emplean Docker para implementar OpenDroneMap, puede ser útil comprender algunos comandos básicos para consultar a las instancias de Docker cuando las cosas van mal o si tenemos curiosidad por ver lo que está sucediendo. Docker es un entorno en contenedores destinado, entre otras cosas, a facilitar la implementación de software independientemente del entorno local. De esta forma, es similar a las máquinas virtuales.

Unos pocos comandos de Docker pueden mejorar mucho nuestra experiencia.

Listado de máquinas Docker

Podemos comenzar enumerando las máquinas Docker disponibles en la máquina actual que estamos ejecutando de la siguiente manera:

> docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
2518817537ce        opendronemap/odm       "bash"                   36 hours ago        Up 36 hours                                  zen_wright
1cdc7fadf688        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   37 hours ago        Up 37 hours         0.0.0.0:3000->3000/tcp   flamboyant_dhawan

Si queremos ver máquinas que pueden no estar ejecutándose pero que aún existen, podemos agregar la bandera -a:

> docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                    PORTS                    NAMES
2518817537ce        opendronemap/odm       "bash"                   36 hours ago        Up 36 hours                                        zen_wright
1cdc7fadf688        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   37 hours ago        Up 37 hours               0.0.0.0:3000->3000/tcp   flamboyant_dhawan
cd7b9585b8f6        opendronemap/odm       "bash"                   3 days ago          Exited (1) 37 hours ago                            nostalgic_lederberg
e31010c00b9a        opendronemap/odm       "python /code/run.py…"   3 days ago          Exited (2) 3 days ago                              suspicious_kepler
c44e0d0b8448        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   3 days ago          Exited (0) 37 hours ago                            wonderful_burnell

Accediendo a los registros en la instancia

Usando el CONTAINER ID o el nombre, podemos acceder a cualquier registro disponible en la máquina de la siguiente manera:

> docker logs 2518817537ce

Es probable que sea difícil de manejar, pero podemos usar un carácter de barra vertical | y otras herramientas para extraer exactamente lo que necesitamos de los registros. Por ejemplo, podemos movernos lentamente por el registro usando el comando more:

> docker logs 2518817537ce | more
[INFO]    DTM is turned on, automatically turning on point cloud classification
[INFO]    Initializing OpenDroneMap app - Mon Sep 23 01:30:33  2019
[INFO]    ==============
[INFO]    build_overviews: False
[INFO]    camera_lens: auto
[INFO]    crop: 3
[INFO]    debug: False
[INFO]    dem_decimation: 1
[INFO]    dem_euclidean_map: False
...

Presionar «Enter» o «Espacio», las teclas de flecha o las teclas «Page Up» o «Page Down» ahora nos ayudará a navegar por los registros. La letra minúscula «Q» nos permitirá volver a la línea de comandos.

We can also extract just the end of the logs using the tail command as follows:

> docker logs 2518817537ce | tail -5
[INFO]    Cropping /datasets/code/odm_orthophoto/odm_orthophoto.tif
[INFO]    running gdalwarp -cutline /datasets/code/odm_georeferencing/odm_georeferenced_model.bounds.gpkg -crop_to_cutline -co NUM_THREADS=8 -co BIGTIFF=IF_SAFER -co BLOCKYSIZE=512 -co COMPRESS=DEFLATE -co BLOCKXSIZE=512 -co TILED=YES -co PREDICTOR=2 /datasets/code/odm_orthophoto/odm_orthophoto.original.tif /datasets/code/odm_orthophoto/odm_orthophoto.tif --config GDAL_CACHEMAX 48.95%
Using band 4 of source image as alpha.
Creating output file that is 111567P x 137473L.
Processing input file /datasets/code/odm_orthophoto/odm_orthophoto.original.tif.

El valor -5 le dice al comando tail que nos dé solo las últimas 5 líneas de los registros.

Acceso de línea de comando a las instancias

A veces necesitamos profundizar un poco más en nuestra exploración del proceso de OpenDroneMap. Para ello, podemos obtener acceso directo a la línea de comandos de las máquinas. Para esto, podemos usar docker exec para ejecutar un shell de línea de comando` bash` en la máquina de interés de la siguiente manera:

> docker exec -ti 2518817537ce bash
root@2518817537ce:/code#

Ahora estamos conectados a nuestra instancia de Docker y podemos explorar la máquina.

Limpieza de Docker

Docker tiene un uso lamentable del espacio y, de forma predeterminada, no limpia el exceso de datos y máquinas cuando los procesos están completos. Esto puede ser ventajoso si necesitamos acceder a un proceso que ya ha terminado, pero que lleva la carga de usar cantidades crecientes de almacenamiento a lo largo del tiempo. Maciej Łebkowski tiene una ʻexcelente descripción general de cómo administrar el uso excesivo del disco en la ventana acoplable <https://lebkowski.name/docker-volumes/>`_.

Using Singularity

“Singularity <https://sylabs.io/>”_ is another container platform able to run Docker images. Singularity could be used from laptop to large HPC clusters, local university or company clusters, a single server, in the cloud… A container is a single file without anything else to install

Downloading image

Singularity can use ODM Docker container after their download. It creates .sif images

For latest ODM Docker image

> singularity pull --disable-cache  docker://opendronemap/odm:latest

For latest ODM GPU Docker image

> singularity pull --disable-cache  docker://opendronemap/odm:gpu

Using Singularity SIF image

As Singularity has a different way to map directories than Docker, a bash script file is a good solution to map ODM directories. Here is a linux example for ODM

images_dir=/path_to_image_dir/
name=`basename $images_dir`
output_dir=/path_to_output_directories/$name
mkdir -p $output_dir

singularity run
--bind $images_dir:/$output_dir/code/images,\
--writable-tmpfs odm_latest.sif  \
--orthophoto-png --mesh-octree-depth 12 --ignore-gsd --dtm \
--smrf-threshold 0.4 --smrf-window 24 --dsm --pc-csv --pc-las --orthophoto-kmz \
--ignore-gsd  --matcher-type flann --feature-quality ultra --max-concurrency 16 \
--use-hybrid-bundle-adjustment --build-overviews --time --min-num-features 10000 \
--project-path $output_dir

Here is a linux example for the ODM with GPU

images_dir=/path_to_image_dir/
name=`basename $images_dir`
output_dir=/path_to_output_directories/$name
mkdir -p $output_dir

singularity run
--bind $images_dir:/$output_dir/code/images,\
--writable-tmpfs odm_latest.sif  \
--orthophoto-png --mesh-octree-depth 12 --ignore-gsd --dtm \
--smrf-threshold 0.4 --smrf-window 24 --dsm --pc-csv --pc-las --orthophoto-kmz \
--ignore-gsd  --matcher-type flann --feature-quality ultra --max-concurrency 16 \
--use-hybrid-bundle-adjustment --build-overviews --time --min-num-features 10000 \
--project-path $output_dir

Usando ODM desde una ubicación de ancho de banda bajo

¿Qué es esto y para quién es?

A través del repositorio de ʻIvan Gayton <https://github.com/ivangayton/GDAL_scripts/>`_.

ʻOpenDroneMap <https://www.opendronemap.org/>`__ no siempre se puede configurar localmente de forma efectiva; se necesita una máquina bastante poderosa para procesar conjuntos de datos grandes, por lo que una máquina en la nube a veces puede ser la respuesta para las personas en el campo. Sin embargo, el ancho de banda es un problema en muchos entornos de bajos ingresos. Esta restricción no se puede resolver por completo, pero el siguiente método hace un trabajo razonable al reducir el ancho de banda necesario para procesar conjuntos de datos de imágenes de drones en la nube desde ubicaciones africanas.

Aquí presentamos un proceso complicado pero factible para crear una máquina en la nube OpenDroneMap (* no * CloudODM, eso sí, solo una instancia de ODM basada en la nube que se ejecuta desde la línea de comandos) y usarla para procesar de forma remota conjuntos de fotos grandes. Requiere familiaridad con el uso de la línea de comandos de Unix, ssh, una cuenta de Digital Ocean (Amazon AWS también funcionaría, posiblemente con ligeras diferencias en la configuración) y un nivel moderado de conocimientos informáticos generales. Si no es un experto en informática y está dispuesto a preocuparse por una configuración un poco complicada, CloudODM is what you should be looking at.

Todo el proceso está dirigido principalmente a alguien que vuela misiones sustanciales en África o un lugar similar, y que busca procesar datos lo antes posible mientras aún se encuentra en un entorno de campo. Por lo tanto, enfatiza un flujo de trabajo destinado a reducir el ancho de banda/transferencia de datos, en lugar de solo la forma más simple de ejecutar ODM.

Pasos

Instalación

  • Cree una Droplet de Digital Ocean con al menos 4 GB de RAM. Eso costará alrededor de $ 20 USD al mes. Menos de 4 GB de RAM y la instalación probablemente fallará. Cuando realmente ejecutemos el proceso ODM, lo redimensionaremos a una máquina en la nube mucho más grande y más cara, pero entre ejecuciones puede reducirlo al segundo Droplet más barato que cuesta solo $10 USD (el Droplet mas barato a $5 USD por mes, viene con una unidad tan pequeña que no puede volver a reducirla).

    • Debe ser una instancia de Ubuntu 18.04 para asegurar la compatibilidad de las dependencias.

    • Cree un usuario con privilegios de sudo. La documentación increíblemente buena de Digital Ocean puede ayudarte a resolver esto. En nuestro caso, configuramos un usuario llamado odm, por lo que conectarse a él es a través del comando``ssh odm@xxx.xxx.xxx.xxx`` (donde las x representan la dirección IPv4 de su servidor) . Si desea seguir este ejemplo de cerca, utilice el nombre de usuario odm; entonces su ruta de instalación será /home/odm/ODM/ y coincidirá con todos los ejemplos de este documento.

    • Continúe y ejecute sudo apt update y sudo apt upgrade para asegurarse de que su servidor no esté peligrosamente sin actualizaciones. Asegúrese de permanecer con Ubuntu 18.04.

  • Descargue e instale ODM en él desde el ʻODM Github <https://github.com/OpenDroneMap/ODM>`__ (normal, no WebODM) con los siguientes comandos:

git pull https://github.com/OpenDroneMap/ODM.git
cd ODM
bash configure.sh install
  • Si hace esto desde la carpeta de inicio predeterminada de su usuario (es decir, odm), la ruta a la instalación será /home/odm/ODM (abreviado como ~/ODM/).

  • Hay algunas variables ambientales que deben configurarse. Abra el archivo ~/.bashrc en su máquina y agregue las siguientes 3 líneas al final (De the ODM github). El archivo se puede abrir con nano~/.bashrc (o cualquier editor de texto que use en lugar de nano). Asegúrese de reemplazar /home/odm/ con la ruta correcta a la ubicación donde extrajo OpenDroneMap si no hizo todo exactamente como en nuestro ejemplo (por ejemplo, si usó un nombre de usuario diferente en la configuración de su servidor):

export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/SuperBuild/install/lib/python2.7/dist-packages
export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/SuperBuild/src/opensfm
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/odm/ODM/SuperBuild/install/lib
  • Tenga en cuenta que el archivo Léame de ODM github contiene un pequeño error, el nombre del directorio de instalación será ODM, no OpenDroneMap (lo verá si compara las instrucciones anteriores con las del ODM GitHub).

  • Para evitar un bloqueo en el que el proceso de split-merge no localice su propio ejecutable, agregamos las siguientes líneas a ~/.bashrc (ajuste las rutas si ha configurado las cosas de manera diferente a nuestro ejemplo):

export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/
export PATH=$PATH:/home/odm/ODM/
  • Ahora necesitará un segundo disco duro en la nube (un «Volumen» en la jerga de Digital Ocean) lo suficientemente grande para administrar su proyecto. La regla de oro parece ser 10 veces el tamaño de su conjunto de imágenes sin procesar; tenemos un conjunto de imágenes de 100 GB y configuramos un volumen de 1000 GB (una vez que la ejecución haya terminado, debería poder deshacerse de la mayor parte de esta costosa capacidad de disco, pero es necesaria para completar el proceso). Configure el volumen, adjúntelo a su Droplet y configure su punto de montaje (en este ejemplo lo estamos configurando a /mnt/odmdata/).

Datos de preparación y proyecto

  • Ahora envíe sus imágenes al servidor. Puede usar Secure Copy (scp) así: scp -r /path/to/my/imagefolder odm@xxx.xxx.xxx. xxx: /mnt/odmdata/.

    • Esto copia toda la carpeta llena de imágenes (eso es lo que hace la opción -r'', ``recursiva) en la ubicación remota (en nuestro ejemplo, en el volumen que adjuntamos a la máquina en la nube en /mnt/odmdata/.

    • Esto costará algo de ancho de banda. No hay forma de evitar el tamaño de los archivos1, 2

Estructura del directorio

ODM requiere que los directorios de la máquina se configuren exactamente así. Los bits críticos son la carpeta de instalación (si instaló como antes, es /home/odm/ODM/) y la carpeta del proyecto (es decir, /mnt/odmdata/myproject/)

  • El archivo settings.yaml de ODM especifica un único directorio principal que contiene todos los proyectos. Esto es lo que va en la línea de ruta del proyecto del archivo settings.yaml (un poco confuso, este es en realidad el directorio principal de los directorios del proyecto individual, que se especifican mediante el parámetro de nombre del proyecto al llamar a ODM). Edite settings.yaml y establezca el parámetro project_path en (según nuestra configuración de ejemplo) /mnt/odmdata/, que en este caso apunta al Volumen que creamos. Dentro de eso se crean directorios de proyectos individuales.

  • Individual project directories, i.e. /mnt/odmdata/myproject/ contain the gcp_list.txt file, the image_groups.txt file, and the images folder for each project.

  • La carpeta de imágenes, es decir, /mnt/odmdata/myproject/images/ contiene todas las imágenes. Si lo configura así, las imágenes no se vuelven a copiar porque ya están en el directorio en el que ODM las quiere.

  • Modifique settings.yaml para especificar el directorio principal de la carpeta del proyecto (en este caso, el Volumen que creamos, /mnt/odmdata/). Asegúrese de que las imágenes estén en el lugar correcto, es decir, /mnt/odmdata/myproject/images y los otros archivos auxiliares (gcp_list.txt e image_groups.txt) están en la carpeta raíz /mnt/odmdata/myproject/

  • Si tiene las imágenes en carpetas separadas para bloques AOI o vuelos individuales (lo que hará si su gestión de vuelos fue organizada), puede crear un archivo image_groups.txt con los encantamientos for i in *; do cd $i; for j in *; do echo "$j $i" >> ../$i.txt; done; cd ../; done; y cd ../, for i in myproject/*.txt; do cat $i >> image_groups.txt; done;. Eso debería crear un archivo con la estructura correcta: una lista de todos los archivos de imagen y un «nombre de grupo» después de cada uno (que en este caso será simplemente el nombre de la carpeta de la que proviene). Luego mueva todos los archivos de imagen a un solo directorio llamado imágenes en el directorio raíz del proyecto (por lo tanto, /mnt/odmdata/myproject/images/). El archivo image_groups.txt permitirá que ODM realice un seguimiento de las imágenes que pertenecen al mismo lote, aunque estén todas en un solo directorio.

Cambie el tamaño del Droplet, quite el seguro, huya

  • Apague y cambie el tamaño de su máquina a una cantidad monstruosa de CPU y memoria. Utilizo la máquina con memoria optimizada con 24 vCPU dedicadas y 192 GB de RAM (que cuesta alrededor de $ 1,60 / hora, lo que se suma rápido y supera los $ 1000/mes). Reinicie y comience a trabajar rápidamente para no perder el costoso tiempo de los Droplets grandes.

  • Inicie el proceso ODM a través de ssh usando nohup (de modo que, si se corta, el procesamiento continuará)

    • Alternativamente, puede usar la pantalla GNU para iniciar el proceso desde una sesión de pantalla que no se detendrá si se interrumpe su conexión, inicie screen y use <ctrl> a <ctrl> d para separar, screen -r para volver a juntar. Pero al usar la pantalla no obtendrá un archivo de registro de toda la salida de la consola a menos que haga algo específico para capturar eso, mientras que nohup le brinda un archivo con toda la salida de la consola, incluidos los mensajes de error, de forma gratuita.

    • Nota: a partir de 2020-03, el encantamiento normal python run.py -i /path/to/image/folder project_name parece no funcionar; el parámetro -i o --image causa un error extraño. Entonces introducimos el parámetro -i y y confiamos en la línea del directorio del proyecto en el archivo settings.yaml para dirigir ODM al lugar correcto. Ahora usando (incluyendo split-merge):

nohup python run.py myproject --split 1 --split-overlap 0 --ignore-gsd --depthmap-resolution 1000 --orthophoto-resolution 5 --dem-resolution 15 --pc-las --dsm
  • Esto apunta a ODM a la carpeta (en este ejemplo) /mnt/odmdata/myproject/. Siempre que image_groups.txt y gcp_list.txt estén en esta carpeta, las imágenes están en /mnt/odmdata/myproject/images/, y la ruta del proyecto en settings.yaml es /mnt/odmdata/ no perderá tiempo ni espacio copiando imágenes.

  • Tenga en cuenta que esto supone que tiene un archivo image_groups.txt. Si no es así, este -split-overlap 0 probablemente arruinará las cosas, y el --split 1 es literalmente un número aleatorio que se ignorará despues de que se cargue el archivo image_groups.txt (creo que normalmente controla en cuántos grupos divide un conjunto de imágenes, pero en nuestro caso asumimos que las imágenes ya están agrupadas de manera sensata). Si no tiene un conjunto de datos grande (> 1000 imágenes), omita las opciones --split y --split-overlap.

  • Siga el progreso usando tail (para que sepa cuando está hecho)

tail -f nohup.out
  • Es posible que desee estar atento a htop (para tener una idea del uso de recursos para que en el futuro solo pueda hacer girar una máquina tan grande como sea necesario)

Después de que termine (suponiendo que sobrevivas tanto tiempo)

  • Tan pronto como termine el procesamiento, apague la máquina y cambie su tamaño a la capacidad mínima económica.

  • Inicie la copia de seguridad de la máquina e inicie sesión a través de ssh.

  • Si desea ahorrar ancho de banda de descarga, puede comprimir la ortofoto usando GDAL. No agregue descripciones generales, hágalo en su máquina local para evitar agrandar el archivo antes de descargarlo.

gdal_translate -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR -co TILED=YES -b 1 -b 2 -b 3 -mask 4 --config GDAL_TIFF_INTERNAL_MASK YES /path/to/original/filename.extension /path/to/output.tif
  • Descargue usando scp: scp odm@xxx.xxx.xxx.xxx:/mnt/odmdata/myproject/odm_orthophoto/odm_orthophoto.tif (o tome la versión comprimida que creó en el último paso)

  • Una vez que obtenga el archivo en su computadora local, puede usar QGIS para agregar descripciones generales (“pyramids”) o usar el comando GDAL gdaladdo -r average /path/to/image.tif 2 4 8 16 32 64 128 256 512 1024.

  • Puede archivar las carpetas odm_texturing, odm_georeferencing y odm-dem usando tar para que sea más fácil descargarlas en una sola pieza (y tal vez más pequeñas).

tar -zcvf archivename /path/to/folder

Usar el módulo Potree de visualización 3D en WebODM

Cámaras

Active esta función para mostrar la posición de las cámaras

También puede hacer clic en el icono de la cámara para mostrar imágenes individuales en un marco en la esquina superior derecha. Un clic en el marco de la imagen cambia al modo de pantalla completa.

Dentro del marco de la imagen hay enlaces para descargar la imagen y el archivo de la cámara GeoJSON.

Localización de las cámaras

Modelo texturizado

Active esta función para mostrar cargar el modelo texturizado. Dependiendo del tamaño del archivo y la velocidad de la conexión, la carga puede tardar varios segundos.

Modelo texturizado

Apariencia

Presupuesto de puntos

Tanto para fines de apariencia como de rendimiento, se puede administrar el presupuesto de puntos en la escena. Algunas máquinas antiguas y menos capaces se beneficiarían de un presupuesto de 500.000 puntos, mientras que la mayoría de las máquinas con especificaciones de rango medio son capaces de manejar un presupuesto de 1 a 2 millones de puntos.

Un presupuesto de 5 a 7 millones de puntos produce un modelo 3D de nube de puntos sin problemas, pero puede resultar en un proceso que demanda muchos recursos.

El valor de presupuesto de puntos predeterminado se establece en 1,000,000.

Campo de visión

Para controlar los elementos del modelo que se incluirán en la escena, se puede ajustar el campo de visión. El valor predeterminado se establece en 60 grados.

Ajuste del campo de visión

Iluminación de domo

El módulo de visor 3D Potree Point Cloud puede implementar la iluminación del domo, un modelo de iluminación que acentúa las formas de los objetos.

Los objetos de grupo de iluminación de domo, sombrean sus contornos y mejoran la percepción de profundidad en imágenes de visualización científica. Es útil para el reconocimiento y la medición de estructuras dentro de un modelo. Se puede modificar ajustando Radio, Fuerza y Opacidad.

De forma predeterminada, Eye Dome-Lighting está habilitado en el visor Potree 3D, pero se puede deshabilitar haciendo clic en la opción habilitar.

Ajuste de la Iluminación de domo

Fondo

El fondo del visualizador en 3D Potree se puede modificar. Las opciones disponibles son Skybox / Gradiente / Negro / Blanco / Ninguno

Selección del fondo

Otro

Calidad de splat = La calidad Splat se puede ajustar a calidad estándar o alta, para mejorar la apariencia del modelo.

Tamaño mínimo de nodo = La opción de tamaño mínimo de nodo impactará en la densidad de punto de los nodos representados.

Caja = Despliega las cajas de los nodos.

Bloqueo de vista = Bloquea la vista de la nube de puntos, para prevenir la carga o descarga de puntos en el modelo.

Herramientas

Medición

El módulo de visor 3D Potree proporciona varias herramientas para la medición. Este conjunto de herramientas consta de 12 elementos. También tiene controles para mostrar u ocultar las etiquetas de medición resultantes.

Las mediciones se realizan haciendo clic izquierdo en los puntos deseados y para algunas herramientas es necesario hacer clic derecho para finalizar el proceso.

Herramientas - Herramientas de medición

Ángulo

Esta herramienta mide el ángulo tridimensional formado por las líneas que conectan 3 puntos. Para iniciar una medición, haga clic en el icono de ángulo, luego haga clic con el botón izquierdo en 3 puntos y el proceso finalizará automáticamente. También se puede obtener más información seleccionando este elemento en la sección de escena.

Punto

Esta herramienta resalta un punto seleccionado y muestra su coordenada XYZ. Para iniciar una medición, haga clic en el icono del punto, luego haga clic en el punto deseado y el proceso finalizará automáticamente. También se puede obtener más información seleccionando este elemento en la sección de escena.

Distancia

Esta herramienta mide la distancia tridimensional de las líneas que conectan una serie de puntos. Para iniciar una medición, haga clic en el icono de distancia y comience a hacer clic en los puntos deseados (dos o más). Haga clic derecho para finalizar la medición. También se puede obtener más información, como la longitud total, seleccionando este elemento en la sección de escena.

Altura

Esta herramienta mide la altura o la distancia vertical entre dos puntos. Para iniciar una medición, haga clic en el icono de altura y luego haga clic en los dos puntos deseados. El proceso finalizará automáticamente. También se puede obtener más información seleccionando este elemento en la sección de escena.

Height measurement

Círculo

Esta herramienta mide el radio de un círculo formado por tres puntos. Para iniciar una medición, haga clic en el icono del círculo y luego haga clic en los dos puntos deseados. El proceso finalizará automáticamente. También se puede obtener más información, como Circunferencia, seleccionando este elemento en la sección de escena.

Azimut

Esta herramienta mide el ángulo azimutal de una línea. Esta línea está formada por dos puntos seleccionados por el usuario, el ángulo se mide en grados, en sentido horario de 0 a 360 y partiendo del norte geográfico. Para iniciar una medición, haga clic en el icono de azimut y luego haga clic en los dos puntos deseados. El proceso finalizará automáticamente. También se puede obtener más información seleccionando este elemento en la sección de escena.

Área

Esta herramienta mide el área horizontal formada por un polígono. Para iniciar una medición, haga clic en el icono del área y comience a hacer clic en los puntos que forman el polígono deseado (tres o más). Haga clic derecho para finalizar la medición. También se puede obtener más información seleccionando este elemento en la sección de escena.

Volumen (cubo)

Esta herramienta mide el volumen formado por un cubo. Para iniciar una medición, haga clic en el icono de volumen (cubo) y haga clic en el modelo para colocar el cubo. Es posible reubicar, redimensionar y rotar el cubo usando los manejadores mostrados. Haga clic derecho para finalizar la medición. También se puede obtener más información seleccionando este elemento en la sección de escena.

Volumen (esfera)

Esta herramienta mide el volumen formado por una esfera. Para iniciar una medición, haga clic en el icono de volumen (esfera) y haga clic en el modelo para colocar la esfera. Es posible reubicar, redimensionar y rotar la esfera usando los manejadores mostrados. Haga clic derecho para finalizar la medición. También se puede obtener más información seleccionando este elemento en la sección de escena.

Perfil de altura

Esta herramienta crea un perfil de altura formado por una línea en el modelo. Para iniciar una medición, haga clic en el icono de perfil de altura y luego forme una línea en el modelo haciendo clic en los puntos deseados (dos o más). Haga clic derecho para finalizar la medición. También se puede obtener más información y opciones, como «Mostrar perfil 2d», seleccionando este elemento en la sección de escena.

Height profile

Anotación

Esta herramienta crea una etiqueta de anotación en un punto resaltado del modelo. Para iniciar una medición, haga clic en el icono de anotación y luego haga clic en el punto deseado. El proceso finalizará automáticamente. Para editar la anotación, seleccione este elemento en la sección de la escena, luego edite el Título y la Descripción.

Remover mediciones

Esta herramienta elimina todas las medidas del modelo. Para eliminar todas las medidas, haga clic en el icono «Eliminar mediciones».

Recorte

Herramientas - Herramientas de recorte

La nube de puntos se puede recortar seleccionando un área. Las opciones de recorte incluyen ** Ninguno ** / ** Resaltado ** / ** Interior ** / ** Exterior **

Para recortar una nube de puntos, haga clic en el icono de recorte de volumen, coloque el cubo en el modelo y reubique, redimensione y gire para contener el área deseada. Resaltar está configurado de forma predeterminada como el método de recorte. Si se muestran solo los puntos contenidos dentro del cubo, haga clic en «Dentro», de lo contrario, haga clic en «Fuera».

Para eliminar el volumen de recorte o los polígonos, haga clic en el icono «Eliminar todas las mediciones».

Herramientas - Recorte

Escena

La sección Escena muestra un árbol de archivos que contiene todos los elementos de la escena. Los elementos están organizados en seis grupos, que son ** Nubes de puntos ** / ** Medidas ** / ** Anotaciones ** / ** Otro ** / ** Vector ** / ** Imágenes **

Cada elemento de estos grupos se puede seleccionar para obtener más información o para controlar sus propiedades.

Por ejemplo, las propiedades de las nubes de puntos se pueden modificar para mostrar la elevación y también se puede personalizar la rampa de color.

Herramientas - Controles de navegación

Aprende a editar y ayuda a mejorar esta página!