Tutorial #09 – Guida alla regolazione dei parametri 3DF Zephyr

Impostazioni avanzate

 

Benvenuti alla serie di tutorial dedicati a 3DF Zephyr.
Con questa guida imparerai ad impostare i parametri di 3DF Zephyr per ottenere il miglior risultato possibile dalle tue fotografie.

 

  • Introduzione

3DF Zephyr è uno strumento potente ma allo stesso tempo molto semplice: abbiamo investito molti dei nostri sforzi per renderlo un software user friendly e alla portata di tutti, tuttavia grazie a questa guida riuscirai a migliorare il tuo processo di lavoro (per esempio permettendoti di risparmiare tempo) ed il risultato finale ottenuto (per esempio ottenendo modelli 3D più precisi). I parametri di default funzionano per la maggior parte dei casi, ma è sempre possibile ottenere di più.
Prima di discutere effettivamente i parametri di configurazione, è necessario spendere un attimo di tempo per capire cosa succede sotto al cofano. Il tipico workflow di 3DF Zephyr è composto dalle seguenti fasi

  • Passo 1 – Structure from motion (Wizard di nuovo progetto)

  • Passo 2 – Multiview Stereo (Generazione nuvola di punti densa)

  • Passo 3 –  Estrazione delle superfici (Generazione mesh)

  • Passo 4 –  Estrazione della mesh con texture (Generazione mesh con texture)

Le impostazioni in ogni fase hanno ovviamente un impatto sulla fase a loro relativi, ma anche sulle fasi successive. Ricorda: se il risultato finale di una fase ti soddisfa, è probabile che anche le successive ti soddisferanno. Tuttavia, se durante una fase stai ottenendo dei risultati bizzarri o che non ti soddisfano, potrebbe essere necessario modificare le impostazioni prima di procedere oltre. Vediamo in dettaglio ogni fase ed i parametri di configurazione modificabili.
Questa guida tratta le impostazioni avanzate: è possibile trovare la guida esaustiva di ogni parametro personalizzato/XML cliccando questo collegamento.
 

  •  Passo 1 – Structure from motion

Lo scopo di questa fase è di estrarre automaticamente i parametri interni ed esterni di ogni camera (in breve, sono parametri che 3DF Zephyr necessita per effettuare delle correzioni sull’input a seconda della tipologia di obiettivo utilizzato per scattare le fotografie, la rotazione e la traslazione). Questa fase può essere ulteriormente suddivisa in quattro fasi:

  • Estrazione dei Keypoint (Keypoint extraction)

  • Ricerca coppie immagini vicine (Pairwise image Matching)

  • Ricerca delle immagini nelle vicinanze (Neighbor image search)

  • Ricostruzione geometrica (Geometric Reconstruction)

3DF Zephyr tuning 1
3DF Zephyr tuning 1

Durante la configurazione del wizard di “nuovo progetto” avrai la possibilità di modificare il comportamento di ciascuna di queste sotto fasi.

Come puoi vedere, la fase di structure from motion estrae le feature di ogni immagine (keypoint extraction); dopodichè Zephyr passerà in rassegna tutte le immagini per capire, per ogni immagine, quali altre immagini sono “connesse” ad essa sulla base della sovrapposizione del contenuto dell’immagine (neighbor image search).

Successivamente, Zephyr dovrà capire, per ogni punto di ogni immagine, le corrispondenze di quei punti nelle altre immagini. Quando questa fase è completata, sarà possibile procedere con la ricostruzione vera e propria.

· Densità dei Keypoint (Keypoint extraction)

I Keypoints sono punti salienti di una fotografia che zephyr è in grado di capire e di riconoscere nelle diverse immagini. Più keypoints non implicano automaticamente un risultato migliore,  poichè più punti significano più ambiguità durante la fase di matching. La densità di keypoint controlla inoltre la scala dei punti (sono estratti i punti con una scala maggiore, aumentando la probabilità di abbinare foto distanti a quelle vicine).
Molto bassa: estrae fino a 5000 keypoints per immagine
Bassa: estrae fino a  7500 keypoints per immagine
Media:estrae fino a  10000 keypoints per immagine
Alta: estrae fino a  15000 keypoints per immagine
Molto Alta: estrae fino a  to 20000 keypoints per immagine
– Diminuire questo valore quando
»» necessiti di aumentare la velocità di computazione
»» non stai variando di molto la distanza tra le fotocamere ed il soggetto
»» hai molte fotografie con overlap
+ Aumentare questo valore quando
»» le fotocamere non sono state orienatate correttamente
»» nel dataset sono presenti delle foto molto distanti e delle foto molto vicine al soggetto
»» nel dataset sono presenti poche foto, con poco overlap e/o con texture uniformi

·  Tipo matching

Controlla l’uso di certe ottimizzazioni durante la fase di matching, che permettono di ottenere risultati piu’ veloci a discapito di minor precisione.

·  Profondità fase di matching (Ricerca coppie immagini vicine)

Controlla quanti abbinamenti a coppie eseguire sulle immagini. Generalmente, un valore più alto porta a risultati migliori, tuttavia questo ha un costo computazionale maggiore.
Automatico:  calcolato euristicamente dal numero di immagini in ingresso
Bassa: almeno 2 * il numero di immagini in ingresso
Media: almeno 6 * il numero di immagini in ingresso
Alta: almeno 12 * il numero di immagini in ingresso
Completo : (il numero di immagini in ingresso * il numero di immagini in ingresso- 1 ) / 2    (computa tutte le coppie, O(N^2) )
– Diminuire questo valore quando
»» necessiti di aumentare la velocità di computazione
»» hai molte fotografie con overlap e con buone texture
+ Aumentare questo valore quando
»» non tutte le fotocamere non sono state orienatate correttamente
»» nel dataset sono presenti poche foto, con poco overlap e/o con texture uniformi

· Ordinamento foto (Ricerca delle immagini nelle vicinanze)

Se conosci l’ordine con cui le foto sono state scattate, è possibile saltare la fase di ricerca delle immagini nelle vicinanze (aumentando velocità e precisione dell’elaborazione). Se non conosci l’ordinamento delle foto, seleziona “Sparso“. Se invece hai preso le foto in sequenza o in senso circolare, seleziona rispettivamente “sequenziale” o “circolare” (la sequenza circolare è intesa come una sequenza chiusa). Il valore “griglia approssimata” (modalità tipica di acquisizione da droni) considera vicini in un certo intorno.

· Motore di ricostruzione (Ricostruzione geometrica)

Puoi dire a Zephyr come ricostruire le fotocamere. Con incrementale, le fotocamere vengono ricostruite una ad una, facendo crescere un cluster di fotocamere, mentre selezionando globale le fotocamere verranno ricostruite in un unico step.
La pipeline globale tende ad essere più veloce rispetto l’incrementale e in alcuni casi, è più robusta all’accumulazione dell’errore (drifting).
La pipeline incrementale invece, tende ad essere più robusta e ad orientare più camere rispetto alla pipeline globale.
· Calcolo bounding box con rimozione punti distanti

Quando abilitato, verrà impiegato un metodo robusto per scartare i punti dstanti durante il calcolo della bounding box. Quando disabilitato, vengono considerati tutti i punti.
 

  •  Passo 2 – Multiview Stereo

3DF Zephyr tuning 1

Lo scopo della fase di multiview stero è di estrarre una nuvola di punti abbinando i pixel delle immagini. Come puoi immaginare, questo è ciò che avviene durante la fase denominata “Generazione nuvola di punti densa”.

E’ importante che l’input dato in ogni fase sia un buon punto di partenza. Se ritieni che l’output della fase di structure from motion possa venir migliorata, potrebbe essere sensato provare a modificare i parametri di tale fase e riprovare prima di procedere oltre. Capire queste cose richiede esperienza, sia nel modo di scattare le fotografie che di utilizzo di 3DF Zephyr. Dopo qualche tempo capirai quali parametri dovrai modificare per ottenere dei risultati migliori in ogni fase!

 

opzione della fase MVSDescrizioneSuggerimento
Tipo di outputControlla l’ultilizzo di post processing automatico durante la generazione di nuvola di punti densa.Usare grezzo quando
»» si desidera generare la nuvola di punti senza alcun post processing automatico da parte di Zephyr


Usare ottimizzato quando
»» si desidera riempire dei “buchi” tramite post processing od ottenere una nuvoladi  punti con margini smussati oppure con margini netti.

Numero di camere vicineControlla il numero di fotocamere vicine utilizzate per calcolare ogni mappa di profondità.– Diminuire quando
»» non sono presenti molte foto con overlap
»» necessiti di aumentare la velocità di computazione


+ Aumentare quando
»» sono presenti molte foto con overlap

RisoluzioneControlla la risoluzione dell’immagine in input. Se ad esempio l’immagine iniziale è ad una risoluzione di 4000×3000 pixel, se la risoluzione viene impostata a 50% significa che per eseguire i calcoli le immagini verranno prima riscalate a 2000×1500 pixel.

Non sempre una risoluzione maggiore implica un risultato migliore: spesso il ridimensionamento delle immagini può portare a risultati migliori poichè possono essere presenti degli artefatti o del rumore, eliminati durante la fase di ridimensionamento.

– Diminuire quando
»» necessiti di aumentare la velocità di computazione


Aumentare quando
»» necessiti di aumentare la precisione
»» necessiti di mantenere del dettaglio

Filtro di riduzione rumoreRimuove il rumore dal risultato finale.– Diminuire quando
»» il risultato finale della computazione presenta delle parti mancanti.Aumentare quando
»» il risultato finale presenta del rumore
Livello di ottimizzazioneControlla il fattore di accelerazione della computazione delle mappe di profondità. Questa accelerazione è ottenuta scartando in maniera preventiva pixcel ridondanti dal calcolo.– Diminuire quando
»» è più importante il dettaglio della velocità


Aumentare quando
»» è più importante la velocità del dettaglio

Hyperplane matchingAbilitare per utilizzare una funzione di matching più accurata. Lasciare disabilitata per una computazione più veloce.– Disabilitare quando
»» è più importante la velocità del dettaglio


+ Abilitare quando
»» è più importante il dettaglio della velocità

.

Preselezione fotocamereAttiva per utilizzare solo una preselezione di fotogrammi durante la computazione delle mappe di profondità per una maggiore velocità di computazione.– Disabilitare quando
»» è più importante il dettaglio della velocità


+ Abilitare quando
»» è più importante la velocità del dettaglio

Shape from SilhouetteControlla le impostazioni dello shape from silhouette (voxel carving). Questa fase richiede l’utilizzo di maschere. Lo SfS puo’ produrre direttamente una nuvola di punti oppure utilizzare tale nuvola per inizializzare lo stereo. In genere, la looseness dovrebbe essere lasciata a 0.Diminuire looseness quando
»» si desidera utilizzare dei vincoli piu’ stretti durante la computazione delle silhouette


+ Aumentare looseness quando
»» si presume che le maschere sia sbagliate.

Aggiorna colori
Abilita o disabilita il calcolo del colore per ogni punto generato.Disabilitare quando
»» il colore sulla nuvola di punti non è desiderata (per esempio quando il prodotto finale desiderato è una mesh)


+ Abilitare quando
»» si desidera una nuvola di punti colorata

 

  •  Passo 3 – Generazione della superficie

Come avrai probabilmente già immaginato, questo passo riguarda la generazione della superficie (l’estrazione della mesh dalla nuvola densa di punti).
La generazione della superficie computa una indicator function da punti orientati risolvendo un problema di Poisson.
E’ possibile mettere a punto la generazione della superficie agendo sui parametri dell’algoritmo stesso e sui parametri necessari per eseguire la fase di post processing.
 

Opzione estrazione superficiDescrizioneSuggerimento
Livello SmussaturaControlla la smussatura della mesh. Aumenta il valore di questo parametro quando ottieni di risultati con del rumore e diminuisci il valore di questo parametro per preservare un alto dettaglio.– Diminuire quando
»» si desidera un output “netto” (per esempio gli angoli di un edificio)


+ Aumentare quando
»» si desidera un output più smussato/liscio (per esempio un corpo umano)

Grado di chiusura buchiLo slider di grado di chiusura buchi permette di indicare a Zephyr quanto “aggressivo” deve essere nel chiudere i buchi. Da notare come sia possibile utilizzare lo strumento di chiusura buchi indipendentemente dal valore utilizzato in questa fase.– Diminuire quando
»» si desidera una mesh meno chiusa


+ Aumentare quando
»» si desidera una mesh completamente chiusa

Utilizza maschere durante la ricostruzione della meshSe sono disponibili delle maschere, esse possono essere utilizzate anche durante la generazione della mesh.Disabilitare quando
»» non si desidera utilizzare le maschere


+ Abilitare quando
»» desiderate usare le maschere anche per la generazione mesh

Aggiorna coloriAbilita o disabilita il calcolo del colore.
– Disabilitare quando
»» il colore sulla mesh non è desiderata (per esempio quando il prodotto finale desiderato è una mesh con texture)


+ Abilitare quando
»» si desidera una mesh con colore

Ottimizzazione basata su fotocoerenzaL’ottimizzazione basata su fotocoerenza è trattata in questo tutorial.

 

  •  Passo 4 – Generazione di texture e di ortofoto

Entrambe queste procedure condividono dei parametri molto simili (inverse mapping -> dal 3D al pixel immagine) e sono guidate dalla dimensione desiderata dell’ortofoto/texture. Poichè l’informazione del colore di ogni pixel proviene da più fonti / fotocamere è sempre possibile specificare il numero massimo di fotocamere utilizzate per la computazione.

Il bilanciamento colore viene gestito in automatico: chi desiderasse utilizzare le modalità legacy (blending, multiband) può ancora farlo tramite i parametri custom.
 

Note finali

Questa guida dovrebbe averti dato abbastanza conoscenze per capire come funziona 3DF Zephyr sotto al cofano: sentiti libero di chiedere sul forum domande specifiche se alcune parti non sono state abbastanza esaustive!