Casi particolari: vegetazione, acqua, edifici e rolling shutter

Avanzato Entrambe le linee 13 min di lettura

Ultimo aggiornamento:

Testato con: ODM 3.6.0 / ODX (WebODM 3.x)

In questa pagina

I preset di WebODM funzionano bene su terreni con buona texture, volo nadir regolare e camera con otturatore meccanico. Appena esci da quel caso (un bosco, un lago, un campanile, un video di una GoPro) i default producono buchi, deformazioni o ricostruzioni fallite. Questa guida raccoglie i casi difficili più comuni e, per ciascuno, le scelte che fanno la differenza. La regola generale vale sempre: molti problemi si risolvono meglio in fase di volo che in fase di elaborazione.

1. Vegetazione#

Perché è difficile. Le foglie si muovono tra uno scatto e l'altro, hanno texture ripetitiva e producono poche corrispondenze affidabili. Il risultato tipico: poche feature, immagini non ricostruite, nuvola rumorosa e DTM impossibile perché il terreno non si vede.

In volo. Aumenta la sovrapposizione (80/70 o più), vola più alto con GSD comunque adeguato (più contesto per immagine), evita vento e ore con ombre lunghe. Per il DTM sotto bosco la fotogrammetria ha un limite fisico: dove il suolo non compare in nessuna foto, non c'è nulla da ricostruire.

Opzioni.

Opzione Valore consigliato Perché
--feature-quality ultra Più feature su texture fine e ripetitiva
--min-num-features 20.000–30.000 Compensa le corrispondenze scartate
--pc-filter 2–3 Rimuove più rumore dalla nuvola sulle chiome
--pc-quality high se il dettaglio serve; altrimenti medium La densificazione su vegetazione è già rumorosa; l'aumento di qualità aiuta poco sul DTM
--dtm con --smrf-window 30–50 e --smrf-threshold 1–2 Il filtro deve "vedere oltre" chiome grandi e non seguire la vegetazione bassa
--dem-gapfill-steps 4–5 Più riempimento dei buchi che restano

Il preset "Forest" di WebODM parte da scelte simili. Ricorda che il DTM sotto vegetazione fitta è una stima: dichiaralo nella relazione (vedi accuratezza e validazione).

2. Acqua#

Perché è difficile. L'acqua non ha texture stabile: riflette il cielo, si muove, cambia tra uno scatto e l'altro. Il motore non trova corrispondenze e la nuvola resta vuota o piena di punti casuali. Nell'ortofoto compaiono buchi o macchie; nel DSM picchi e crateri.

In volo. Non puoi cambiare l'acqua, ma puoi limitare il danno: assicurati che ogni foto contenga almeno una porzione di terra o di strutture fisse; evita che intere strisciate siano solo acqua; volare con cielo coperto riduce i riflessi.

Opzioni e strategie.

  • Mascherare l'area con --boundary: disegna in QGIS un poligono GeoJSON che escluda lo specchio d'acqua e caricalo; l'elaborazione ignora ciò che sta fuori e i buchi spariscono perché quella zona non esiste nel prodotto. --auto-boundary calcola un confine automatico intorno alle posizioni delle camere, utile lungo coste e fiumi.
  • Accettare i buchi e riempirli nel DEM con --dem-gapfill-steps alto: l'acqua è piatta e l'interpolazione tra le rive è plausibile. Nell'ortofoto i buchi restano trasparenti.
  • Nuvola: --pc-filter più basso rimuove i punti spuri; in alternativa pulisci la nuvola in CloudCompare.

Non provare a "risolvere" l'acqua alzando la qualità: non c'è informazione da estrarre. Per piscine e canali stretti basta l'interpolazione; per laghi e mare, la maschera.

3. Superfici uniformi: neve, sabbia, tetti, asfalto nuovo#

Perché è difficile. Come l'acqua, ma ferma: poche feature distinguibili, corrispondenze ambigue (un punto di neve assomiglia a tutti gli altri). Il rischio è una ricostruzione con poche immagini o un modello deformato.

In volo. Sovrapposizione alta (80/75), foto oblique aggiuntive che inquadrino elementi fissi, target a terra numerosi e ben visibili (sulla neve: target neri). Su tetti industriali uniformi, includi nel volo i bordi dell'edificio e il terreno intorno.

Opzioni.

Opzione Valore Perché
--feature-quality ultra Cerca dettagli minuti
--min-num-features 20.000–40.000 Compensa la scarsità di feature
--matcher-type bruteforce se il matching fallisce Più esaustivo, più lento
--cameras con --use-fixed-camera-params calibrazione da un dataset migliore Con poche feature la calibrazione della camera è instabile
GCP 8–10, ben distribuiti Vincolano scala e curvatura che le feature non riescono a vincolare

Se il motore ricostruisce solo una parte delle immagini, verifica quali nel report (sezione features/matching) e valuta un volo integrativo.

4. Edifici e facciate#

Perché è difficile. Con sole foto nadir le facciate non sono visibili, i bordi verticali risultano "tirati" nell'ortofoto e la mesh dei muri è povera. Cortili e sottotetti restano in ombra.

In volo. Aggiungi foto oblique (camera a 45° circa) in una o più orbite intorno all'edificio, oppure una doppia griglia con camera inclinata. Mantieni una sovrapposizione elevata tra oblique e nadir. Per facciate alte, orbite a quote diverse.

Opzioni.

Opzione Valore Perché
--use-3dmesh attiva L'ortofoto viene dalla mesh 3D completa, non dalla 2.5D: bordi verticali corretti
--mesh-size 500.000–1.000.000 Più vertici per spigoli e dettagli
--mesh-octree-depth 12 (13 su aree piccole) Più dettaglio nella superficie
--pc-quality high Nuvola più densa sulle facciate
--pc-filter 5 (default) o più alto Non rimuovere spigoli e elementi sottili
--texturing-keep-unseen-faces attiva se ti serve una mesh chiusa Volumi, stampa 3D
--gltf / --3d-tiles secondo destinazione Export per web e Cesium

Il preset "Buildings" di WebODM è un buon punto di partenza. Vedi anche la guida al modello 3D.

5. Rolling shutter#

Perché è difficile. Molti droni consumer hanno un otturatore elettronico a tendina (rolling shutter): il sensore viene letto riga per riga in alcuni millisecondi e, se il drone si muove, l'immagine è leggermente distorta. A bassa precisione non si nota; con GCP centimetrici diventa il primo limite e produce errori sistematici, specie in quota.

In volo. Riduci la velocità, vola più alto, scatta con tempi rapidi, evita il vento. La soluzione definitiva è una camera con otturatore meccanico o globale.

Opzioni.

  • --rolling-shutter: attiva la correzione, stimata dal tempo di lettura del sensore e dalla velocità del drone.
  • --rolling-shutter-readout <ms>: tempo di lettura in millisecondi. Con 0 (default) il motore usa il proprio database per la camera rilevata dall'EXIF; se la camera non è nel database, la console lo segnala e devi indicare il valore a mano, cercandolo nella documentazione ufficiale o misurandolo.

Verifica con check point prima e dopo: in alcuni dataset l'effetto è minimo e la correzione può introdurre rumore.

6. Camere fisheye e 360°#

Perché è difficile. Il modello di camera predefinito (prospettico con distorsione radiale) non descrive un'ottica fisheye o una camera sferica. Con il modello sbagliato la calibrazione non converge e il modello si deforma.

Opzioni.

Camera --camera-lens
Drone standard, ottica rettilinea auto (default) o brown
GoPro e action cam con campo largo fisheye o fisheye_opencv
Camera 360° con immagini equirettangolari spherical o equirectangular
Camere con due sensori (alcune 360°) dual

auto legge l'EXIF e sceglie il modello; se l'EXIF è povero o la camera è insolita, impostalo a mano. Le camere 360° producono nuvole meno dense e ortofoto meno utili: vanno bene per interni, strade e documentazione rapida, non per rilievi di precisione. Le immagini fisheye vanno lasciate non corrette dalla camera, perché sia il motore a modellare la distorsione.

7. Fotogrammi da video#

Perché è difficile. Il video è comodo ma povero: fotogrammi compressi, rolling shutter quasi sempre, nessuna posizione GPS per fotogramma, risoluzione spesso inferiore alle foto, motion blur. WebODM lo accetta e ne estrae fotogrammi, con questi limiti.

Opzioni.

  • --video-limit <n> (default 500): numero massimo di fotogrammi estratti per video. Troppo alto e ottieni fotogrammi quasi identici che rallentano senza aggiungere informazione; troppo basso e perdi sovrapposizione.
  • --video-resolution <px> (default 4.000): lato lungo massimo dei fotogrammi.
  • --matcher-order: senza GPS, indica al motore di cercare corrispondenze tra fotogrammi vicini nella sequenza (per esempio 10–20).
  • --rolling-shutter: quasi sempre utile.

Senza GPS il modello non è georeferenziato: scala e posizione le danno solo i GCP, difficili da cliccare nei fotogrammi. Usa il video per documentazione e modelli dimostrativi; per un rilievo scatta foto.

8. Sfondo e cielo: --bg-removal e --sky-removal#

Due opzioni sperimentali che generano maschere automatiche prima dell'estrazione delle feature. --sky-removal esclude il cielo, utile in voli obliqui o a bassa quota dove le nuvole in movimento generano feature dannose. --bg-removal prova a isolare un oggetto dallo sfondo, per oggetti fotografati girandogli intorno (statue, veicoli, reperti).

Entrambe possono sbagliare: controlla le maschere prodotte nella cartella del progetto e i risultati. Per lavori di rilievo, la scelta più affidabile resta escludere il cielo con l'inquadratura. Per lo stato di queste funzioni in ODX consulta docs.webodm.org/options-flags.

9. Tabella riassuntiva#

Caso Prima in volo Poi nelle opzioni
Vegetazione Sovrapposizione alta, niente vento --feature-quality ultra, --min-num-features 20000+, --pc-filter 2–3, SMRF adattato
Acqua Terra in ogni foto, cielo coperto --boundary / --auto-boundary, --dem-gapfill-steps alto
Superfici uniformi Oblique, molti target --feature-quality ultra, --min-num-features 30000, GCP, --cameras
Edifici Orbite oblique --use-3dmesh, --mesh-size e --mesh-octree-depth alti, --pc-quality high
Rolling shutter Lento, alto, tempi rapidi --rolling-shutter, --rolling-shutter-readout
Fisheye / 360° Correzione lente in camera disattivata --camera-lens esplicito
Video Movimenti lenti, luce buona --video-limit, --video-resolution, --matcher-order, --rolling-shutter
Cielo / sfondo Inquadrare senza cielo --sky-removal, --bg-removal (sperimentali)

Come verificare

Il report di qualità dice subito se la strategia ha funzionato: nella sezione features/matching controlla che quasi tutte le immagini siano state ricostruite e che il numero di feature per immagine sia salito rispetto all'elaborazione con i default; nella mappa di sovrapposizione controlla che le zone difficili (acqua esclusa a parte) siano coperte. Poi apri il prodotto: nell'ortofoto di un edificio con --use-3dmesh i bordi dei tetti devono essere netti; nel DTM sotto vegetazione la superficie deve essere continua, senza "colline" dove ci sono alberi; con --rolling-shutter i residui dei GCP in quota devono scendere rispetto alla stessa elaborazione senza correzione. Se un valore non migliora, torna al default: non tutte le opzioni aiutano su tutti i dataset.

Problemi frequenti#

"Not enough features" o poche immagini ricostruite. Vegetazione o superfici uniformi: alza --feature-quality e --min-num-features; se non basta, il volo va integrato con più sovrapposizione o foto oblique.

Buchi nell'ortofoto sull'acqua anche con gapfill. Il gapfill agisce sul DEM, non sull'ortofoto: i pixel senza dati restano trasparenti. Usa --boundary per escludere l'area o accetta la trasparenza.

Facciate "spalmate" nell'ortofoto. Manca --use-3dmesh, oppure mancano le foto oblique: senza immagini che vedono le facciate, la mesh non può ricostruirle.

Il DTM segue la vegetazione. --smrf-threshold troppo basso e --smrf-window troppo piccola rispetto agli alberi. Alza entrambi e confronta. Vedi la guida a DSM e DTM.

Con --rolling-shutter il risultato è peggiorato. Tempo di lettura sbagliato per la tua camera, o dataset in cui l'effetto era già trascurabile. Verifica --rolling-shutter-readout o disattiva la correzione.

Per una diagnosi dei sintomi più generali (bowl effect, bordi deformati, texture sfocate) vedi risultati scadenti.

Prossimi passi#

Fonti

Guide correlate