Opzioni di ODM e ODX a confronto: come trovare le differenze

Avanzato Entrambe le linee 13 min di lettura

Ultimo aggiornamento:

Testato con: ODX (webodm/odm, aggiornamento luglio 2026) via WebODM 3.2.8; ODM 3.6.0 (opendronemap/odm)

In questa pagina

Il punto di partenza: opzioni identiche#

Al 6 aprile 2026 il motore ODX della linea WebODM e il motore ODM 3.6.0 della linea OpenDroneMap erano lo stesso codice. Ne segue che le opzioni di elaborazione (i parametri che passi al motore, come --dsm o --pc-quality) erano identiche: stessi nomi, stessi valori ammessi, stessi default. Le 93 opzioni documentate su docs.opendronemap.org/arguments per ODM 3.6.0 valevano anche per ODX.

Da allora i due motori divergono, e nessuna tabella scritta da noi può essere completa per sempre. Per questo la guida ti dà prima il metodo per vedere le differenze con i tuoi occhi, poi la tabella di riferimento datata, poi le novità annunciate da una sola linea, infine come scrivere preset validi su entrambe.

Termini usati: "opzione" (option, flag, argument) è un parametro della riga di comando; "preset" è un insieme di opzioni salvato con un nome; "diff" è un programma che confronta due file di testo riga per riga. Il glossario li raccoglie.

Il metodo: chiedere ai motori con --help#

La fonte più affidabile sulle opzioni non è una pagina web, che può essere in ritardo, ma l'immagine Docker che userai davvero.

1. Scarica le due immagini#

Il metodo è lo stesso; cambia l'immagine.

WebODM / ODX

Verifica su Docker Hub il tag disponibile per webodm/odm, poi:

bash
docker pull webodm/odm

Se fissi un tag esplicito (consigliato per la riproducibilità), usa webodm/odm:TAG in tutti i comandi che seguono.

OpenDroneMap / ODM
bash
docker pull opendronemap/odm

Anche qui puoi fissare un tag esplicito: consulta la pagina dell'immagine su Docker Hub.

2. Salva l'output di --help in due file#

bash
docker run --rm webodm/odm --help > odx-help.txt
docker run --rm opendronemap/odm --help > odm-help.txt

Ogni comando avvia un container temporaneo (--rm lo elimina alla fine) e salva l'aiuto in un file di testo.

3. Confronta i due file#

bash
diff odm-help.txt odx-help.txt

Le righe precedute da < esistono solo nel primo file (ODM), quelle precedute da > solo nel secondo (ODX). Output vuoto: stesso aiuto. Per un confronto affiancato:

bash
diff -y --suppress-common-lines odm-help.txt odx-help.txt

4. Estrai solo i nomi delle opzioni#

Descrizioni e a capo possono differire per motivi editoriali. Per confrontare solo i nomi:

bash
grep -oE '^\s*--[a-z0-9-]+' odm-help.txt | tr -d ' ' | sort -u > odm-opts.txt
grep -oE '^\s*--[a-z0-9-]+' odx-help.txt | tr -d ' ' | sort -u > odx-opts.txt
diff odm-opts.txt odx-opts.txt

Il risultato è l'elenco delle opzioni presenti in un solo motore; le differenze di default o di valori ammessi emergono dal diff completo del passo 3.

5. Registra versioni e data#

Un confronto vale per le versioni confrontate. Annota:

bash
docker run --rm webodm/odm --version
docker run --rm opendronemap/odm --version
docker inspect --format '{{index .RepoDigests 0}}' webodm/odm
docker inspect --format '{{index .RepoDigests 0}}' opendronemap/odm

Il digest identifica in modo univoco l'immagine, indipendentemente dal tag. Conservalo insieme ai file --help.

Output di diff -y tra odm-help.txt e odx-help.txt, con le righe differenti evidenziate

Le stesse opzioni in WebODM e in OpenDroneMap Desktop#

Le interfacce non hanno un proprio elenco di opzioni: lo chiedono al nodo a cui sono collegate. In WebODM il pannello di un task mostra ciò che il nodo scelto dichiara: con NodeODX le opzioni di ODX, con un nodo opendronemap/nodeodm (configurazione non supportata ufficialmente, vedi Repository, immagini Docker e migrazioni) quelle di ODM. Lo stesso vale per OpenDroneMap Desktop con il suo nodo. Il confronto da riga di comando resta il più pulito.

Tabella: le 93 opzioni identiche al 6 aprile 2026#

La fotografia al momento della separazione: le opzioni di ODM 3.6.0 con i loro default, identiche in ODX. È il riferimento storico e la base per i preset portabili. Per il significato di ogni opzione: Guida completa alle opzioni.

Opzione WebODM / ODX (default al 6 aprile 2026) OpenDroneMap / ODM 3.6.0 (default)
--3d-tiles False False
--align None None
--auto-boundary False False
--auto-boundary-distance 0 0
--bg-removal False False
--boundary "" ""
--build-overviews False False
--camera-lens auto auto
--cameras "" ""
--cog False False
--copy-to - -
--crop 3 3
--dem-decimation 1 1
--dem-euclidean-map False False
--dem-gapfill-steps 3 3
--dem-resolution 5 5
--dsm False False
--dtm False False
--end-with odm_postprocess odm_postprocess
--fast-orthophoto False False
--feature-quality high high
--feature-type dspsift dspsift
--force-gps False False
--gcp None None
--geo None None
--gltf False False
--gps-accuracy 3 3
--gps-z-offset 0 0
--help - -
--ignore-gsd False False
--matcher-neighbors 0 0
--matcher-order 0 0
--matcher-type flann flann
--max-concurrency 4 4
--merge all all
--merge-skip-blending False False
--mesh-octree-depth 11 11
--mesh-size 200000 200000
--min-num-features 10000 10000
--name code code
--no-gpu False False
--optimize-disk-space False False
--orthophoto-compression DEFLATE DEFLATE
--orthophoto-cutline False False
--orthophoto-kmz False False
--orthophoto-no-tiled False False
--orthophoto-png False False
--orthophoto-resolution 5 5
--pc-classify False False
--pc-copc False False
--pc-csv False False
--pc-ept False False
--pc-filter 5 5
--pc-las False False
--pc-quality medium medium
--pc-rectify False False
--pc-sample 0 0
--pc-skip-geometric False False
--primary-band auto auto
--project-path - -
--radiometric-calibration none none
--rerun "" ""
--rerun-all - -
--rerun-from "" ""
--rolling-shutter False False
--rolling-shutter-readout 0 0
--sfm-algorithm incremental incremental
--sfm-no-partial False False
--skip-3dmodel False False
--skip-band-alignment False False
--skip-orthophoto False False
--skip-report False False
--sky-removal False False
--sm-cluster None None
--sm-no-align False False
--smrf-scalar 1.25 1.25
--smrf-slope 0.15 0.15
--smrf-threshold 0.5 0.5
--smrf-window 18.0 18.0
--split 999999 999999
--split-image-groups None None
--split-overlap 150 150
--texturing-keep-unseen-faces False False
--texturing-single-material False False
--texturing-skip-global-seam-leveling False False
--tiles False False
--use-3dmesh False False
--use-exif False False
--use-fixed-camera-params False False
--use-hybrid-bundle-adjustment False False
--version - -
--video-limit 500 500
--video-resolution 4000 4000
Verificato il 2 settembre 2026 2 settembre 2026

Due note dalla documentazione di ODM: --max-concurrency è documentato con default 4, ma in pratica il motore usa il numero di core disponibili; le opzioni --time, --resize-to e --depthmap-resolution, frequenti nei tutorial vecchi, non esistono più nella serie 3.x di nessuno dei due motori.

Opzioni annunciate da una sola linea#

Riportiamo solo annunci ufficiali, con la data; quando un annuncio non specifica la sintassi, rimandiamo alla documentazione della linea.

Voce WebODM / ODX OpenDroneMap / ODM
Checkpoint nei GCP annunciato il 12 luglio 2026: possibilità di marcare alcuni punti del file GCP come punti di verifica, esclusi dal calcolo; sintassi e formato su docs.webodm.org non annunciato alla data di verifica; per ottenere lo stesso risultato si tengono i check point fuori dal file GCP e si misurano a posteriori (vedi Accuratezza e validazione)
GPU NVIDIA RTX serie 50 supporto annunciato il 12 luglio 2026; l'opzione che governa la GPU resta --no-gpu (default False), con GPU attiva se rilevata la documentazione dichiara che la "GPU currently provides no performance benefit"; --no-gpu esiste con lo stesso default
SfM più rapida annunciata il 12 luglio 2026 come miglioramento interno; nessuna nuova opzione dichiarata nell'annuncio; --sfm-algorithm mantiene i valori incremental, triangulation, planar nessuna variazione registrata nella scheda
Motori alternativi dall'interfaccia WebODM supporta MicMac (NodeMICMAC, avvio con --with-micmac) e LGT non documentato nella scheda
Verificato il 2 settembre 2026 2 settembre 2026

Il checkpoint dei GCP è l'unica novità del 12 luglio 2026 che tocca, per quanto dichiarato, l'uso di un file di input. Se passi a ODM 3.6.0 un file GCP scritto con la sintassi dei checkpoint di ODX, il comportamento dipende da come ODM tratta ciò che non riconosce: prova prima su un dataset piccolo. Sintassi su docs.webodm.org; formato base del file, comune alle due linee, in Punti di controllo a terra.

Per la linea OpenDroneMap la scheda non registra, alla data di verifica, opzioni nuove dopo la 3.6.0. Non significa che non esistano: controlla le release su github.com/OpenDroneMap/ODM e docs.opendronemap.org/arguments, e segnalaci via Contatti ciò che manca.

Preset portabili#

WebODM gestisce i preset nell'interfaccia (Preset e opzioni base); da riga di comando un preset è la stringa di opzioni che passi al motore. Se lavori con entrambe le linee, o vuoi restare libero di cambiare, segui tre regole.

Usa solo opzioni comuni#

Finché una novità è dichiarata da una sola linea, tienila fuori dal preset di base: le 93 opzioni della tabella sono il perimetro sicuro alla data. Se ti serve un'opzione esclusiva, crea una variante con un nome che lo dica, per esempio rilievo-gcp-odx, e conserva la versione comune.

Salva i preset come testo#

Un file di testo rende i preset leggibili, versionabili e trasferibili tra installazioni e linee. Esempio per un rilievo con DSM e ortofoto a 2 cm/px:

testo
# preset: rilievo-standard
# valido per ODM 3.6.0 e ODX (opzioni comuni al 6 aprile 2026)
# verificato: 2 settembre 2026
--dsm
--dtm
--pc-quality high
--feature-quality high
--orthophoto-resolution 2
--dem-resolution 2
--pc-las
--cog
--auto-boundary

Da riga di comando lo usi con entrambe le immagini, cambiando solo il nome dell'immagine (webodm/odm o opendronemap/odm):

bash
docker run -ti --rm -v /home/utente/datasets:/datasets opendronemap/odm --project-path /datasets progetto $(grep -v '^#' rilievo-standard.txt | tr '\n' ' ')

grep -v '^#' scarta i commenti e tr mette le opzioni su una riga. In WebODM le stesse opzioni si inseriscono nel pannello del task e si salvano come preset con lo stesso nome.

Documenta la linea e la versione#

Ogni preset deve dire per quale motore e versione è stato verificato, come nell'esempio. A ogni nuova versione riesegui il metodo --help: un'opzione sparita produce un errore all'avvio, ed è meglio scoprirlo su un dataset di prova.

Come verificare

Hai applicato bene il metodo se:

  1. Hai due file odm-help.txt e odx-help.txt con data, versione (--version) e digest (docker inspect) annotati.
  2. Il diff dei soli nomi delle opzioni ti restituisce un elenco che sai spiegare con gli annunci ufficiali delle due linee, oppure è vuoto.
  3. Il tuo preset di base contiene solo opzioni presenti in entrambi i file e si avvia senza errori su entrambe le immagini.

Problemi frequenti#

Il diff mostra decine di differenze ma sono solo a capo e spazi. Usa il passo 4 (confronto dei soli nomi) oppure aggiungi a diff le opzioni -w (ignora gli spazi) e -B (ignora le righe vuote).

Un'opzione che vedo in WebODM non compare in --help del motore. Alcune voci del pannello sono dell'interfaccia, non del motore (per esempio la scelta del nodo).

Il preset funziona su una linea e fallisce sull'altra. Cerca nell'errore il nome dell'opzione non riconosciuta e controlla se è tra quelle annunciate da una sola linea. Spostala in una variante del preset.

Prossimi passi#

Fonti

Guide correlate