Avete mai desiderato di poter facilmente trasferire un oggetto reale in un file digitale? La tecnologia esiste, ma la maggior parte di noi semplicemente non ha accesso a scanner 3D di fascia alta in grado di ricostruire la geometria digitale di un modello fisico.  Senza contare che alcuni oggetti possono essere troppo grandi per qualsiasi scanner 3D tradizionale. Tuttavia, c’è un altro modo, molto più economico, per creare modelli 3D corrispondenti agli oggetti del mondo reale.

Cos’è la fotogrammetria?

La fotogrammetria (o SFM – Structure From Motion) è un processo che stima le coordinate tridimensionali dei punti della superficie utilizzando le immagini di un singolo oggetto fisico scattate da diverse angolazioni. Almeno questa è la spiegazione semplificata in una sola riga. Si scatta un mucchio di foto dell’oggetto da tutte le direzioni possibili, poi si usano queste foto come input per un software specifico. Questo software cercherà le caratteristiche visibili in più immagini e cercherà di capire da quale punto è stata scattata la foto. Conoscendo le posizioni e gli orientamenti della fotocamera, crea un punto 3D che corrisponde alla caratteristica 2D della foto (fondamentalmente un pixel). Idealmente, si otterrebbe una mesh 3D finita come output. Ma spesso potrebbe essere meglio elaborare manualmente i punti ricostruiti in una mesh per ottenere risultati decisamente migliori.

Software

L’elenco dei software di fotogrammetria disponibili è piuttosto lungo. Il problema è che la maggior parte dei programmi sono molto  costosi o limitati nelle funzioni della versione gratuita. Alcuni programmi offrono anche il calcolo basato su cloud che è pratico, ma aumenta ulteriormente il costo. Abbiamo provato a scegliere il miglior software gratuito:

  • Colmap (Win/Mac/Linux) – sarà utilizzato in questo articolo
  • 3DF Zephyr (Win) – Gratuito con la limitazione di max 50 foto
  • Visual SFM (Win/Mac/Linux)

Avremo anche bisogno di un qualche tipo di software per la post-elaborazione dei dati di output. Qui la scelta è piuttosto facile – Meshlab. Il calcolo è abbastanza impegnativo per l’hardware. Eseguirlo su un vecchio portatile potrebbe non essere fattibile in quanto i tempi di calcolo diventerebbero estremamente lunghi. Molte applicazioni dipendono anche dall’interfaccia NVIDIA CUDA (Colmap), che non viene eseguita su schede grafiche AMD.

Scattare foto per la fotogrammetria

Ovviamente, avrete bisogno di una fotocamera. La fotocamera di uno smartphone funziona benissimo, ma se avete una DSLR, è ancora meglio. Se utilizzerete una DSLR, spostate l’apertura di almeno 7-8 per aumentare la nitidezza e per evitare una bassa profondità di campo. Dovrete scattare almeno 20 foto. Durante i nostri test, abbiamo spesso scattato 50-80 foto per cogliere ogni dettaglio. Tenete presente che alcune immagini potrebbero essere scartate se il programma non trova abbastanza somiglianze con altre immagini.

  1. Muoversi in cerchio intorno all’oggetto bersaglio. Non spostare l’oggetto o l’ambiente circostante tra le immagini.
  2. Sovrapposizione! Dovete fare in modo che ogni parte del modello sia catturata da almeno 2 foto. L’ideale sarebbe avere circa il 60-80% di sovrapposizione nelle foto successive.
  3. Evitate le ombre dure, utilizzate un’illuminazione diffusa o scattate le foto all’esterno in una giornata semi nuvolosa.
  4. L’oggetto dovrebbe rappresentare una porzione significativa di ogni immagine.
  5. Evitare i bersagli mobili (ad esempio gli animali domestici, a meno che non stiano dormendo).
  6. Evitare bersagli molto lucidi o trasparenti. (Di questo parleremo più avanti)

I soggetti ideali per la fotogrammetria sono oggetti testurizzati o ruvidi (statue). Se è un’opzione, è possibile coprire gli oggetti lucidi o trasparenti con polvere (farina) per evitare riflessi. Oppure coprire la superficie lucida con un nastro adesivo per pittura. Gli utenti esperti possono anche catturare un video del soggetto e poi convertirlo in singoli fotogrammi. In questo caso, mantenere alta la velocità dell’otturatore (ad es. 1/80) per evitare fotogrammi sfocati . https://www.youtube.com/watch?v=ye-C-OOFsX8&feature=youtu.be

Ricostruzione della geometria dalle foto

Consigliamo di creare una cartella che contenga tutti i file per una singola ricostruzione. All’interno di tale cartella create un’altra cartella chiamata “Foto” e collocate qui tutte le vostre foto. Passate velocemente tra le foto e cancellate quelle sfocate. Per la ricostruzione useremo Colmap su Windows 10.

  1. Aprire Colmap usando Colmap.bat
  2. Dal menù superiore scegliere Reconstruction – Automatic reconstruction
  3. Impostare la cartella di lavoro da Workspace folder, questa cartella sarà utilizzata per memorizzare i calcoli di ricostruzione e la mesh di output
    • A questo scopo creare un’altra directory accanto alla cartella Foto
  4. Impostare su Image folder la cartella Foto contenente tutte le tue foto
  5. .

  6. Potete lasciare vuoto il campo Vocabulary tree, o in alternativa, potete usarne uno scaricandolo da questa pagina di download
  7. Mantenere Data type su Individual images o cambiarlo in Video frames se avete creato le immagini da un video
  8. Modificare la qualità su Medium
    • Potete provare con Quality impostato su High, ma nella nostra esperienza, Colmap si blocca molto spesso con questa impostazione
  9. Lasciare le altre impostazioni con i valori di default e premere Run
  10. Questo processo può richiedere da 5 minuti a un tempo apparentemente eterno, a seconda del numero di foto e delle specifiche del vostro PC.

Quando Colmap termina la ricostruzione, vi verrà presentata una vista ricostruita della scena e le posizioni stimate della fotocamera.

Impostazione Colmap e visualizzazione della scena ricostruita

Colmap output

Come output Colmap crea 2 file che ci interessano, fused.ply e meshed.ply. Li troverete in una sottocartella nella cartella dell’area di lavoro che avete creato prima (Workspace folder/dense/0/). Meshed.ply è, come suggerisce il nome, una mesh già triangolata. Colmap non è il massimo nella creazione di mesh dai dati tracciati, ma se si vuole risparmiare un po’ di lavoro, la mesh è sicuramente utilizzabile. Il file PLY può essere facilmente convertito in STL in Meshmixer o Meshlab, per esempio. Tuttavia, non è una buona idea provare a stampare direttamente questa mesh. Tutte le mesh create con la scansione 3D o la fotogrammetria di solito contengono molti errori e mancano di una base piatta che possa essere facilmente posizionata sul piano di stampa. Seguite la nostra guida su come riparare modelli 3D corrotti e tagliare i modelli per sapere come risolvere questi problemi. Inoltre, tenete presente che la dimensione dell’oggetto scansionato sarà praticamente casuale, quindi regolatela di conseguenza. Il secondo file è il più interessante. Il file fused.ply  contiene la cosiddetta nuvola di punti. È solo un insieme di punti nello spazio, nessun triangolo e quindi nessuna mesh. Dovremo creare la mesh da soli, è un lavoro in più, ma il risultato di solito è nettamente migliore.

Creazione di mesh dai dati delle nuvole di punti

  1. Aprire Meshlab, Selezionare File – Import Mesh e scegliare il file fused.ply
  2. Vi verrà presentata la scena catturata realizzata da punti 3D
  3. Prendere lo strumento Select vertexes dalla barra degli strumenti principale (in alto) e utilizzarla per selezionare tutti i punti che si desidera eliminare
    • Lo strumento funziona come casella di selezione, tenere premuto il tasto sinistro del mouse per creare una selezione
    • Si può tenere premuto il tasto Ctrl per aggiungere altri vertici a quelli già selezionati
  4. Cliccare sul pulsante Delete vertices nella barra degli strumenti principale. I vertici selezionati spariranno
  5. Ripetere i punti 3-4 fino a quando non vi rimangono solo i punti che volete usare per creare la mesh dell’oggetto scansionato
  6. Selezionare Filters – Remeshing, Simplification and Reconstruction – Screened Poisson Surface Reconstruction
    • La funzione Reconstruction Depth ha un effetto importante sul risultato finale. I valori tra 13-15 di solito sono i migliori e richiedono un tempo di calcolo considerevole.
    • Altre impostazioni di solito funzionano meglio con i valori di default, ma sentitevi liberi di sperimentarle
  7. Premi su Apply per creare una Mesh
  8. I bordi del vostro modello di solito finiscono con una forma strana o addirittura si arricciano e creano un enorme ammasso.
    • Analogamente alla selezione e alla cancellazione dei vertici, è possibile fare lo stesso con i triangoli utilizzando gli strumenti Select in triangular region Delete faces dalla barra degli strumenti principale
  9. Selezionare File – Export Mesh
    • Se si vuole condividere la scansione in forma digitale con la texture, utilizzare formati come PLY, 3DS o OBJ
    • Per la stampa 3D scegliere STL

Suggerimenti per migliorare il modello ricreato

Ecco altri suggerimenti per eliminare alcune imperfezioni e migliorare il modello ricreato in Meshlab:

  1. Levigare il modello dal menu Filters – Smoothing, Fairing and Deformation – Laplacian Smooth
    • Provare ad aumentare il valore di  Smoothing steps fino a 8-15
    • .

    • Potete ripetere questo processo tutte le volte che volete, anche se levigando troppo il modello si elimineranno dettagli preziosi
  2. Per liberarsi delle facce in più che spesso vengono generate dalla ricostruzione, si può scegliere Filters – Selection – Select Faces with edges longer than…
    • Attivare la preview
    • Cambiare il valore di Edge threshold in modo che la stragrande maggioranza delle facce che si desidera cancellare siano selezionate, ma tutte le facce che si desidera mantenere sono comunque deselezionate
  3. Se il vostro modello ha un numero enorme di vertici e facce, può essere difficile da lavorare, per non parlare dello slicing, che richiederebbe un’eternità. Diminuire la loro quantità utilizzando Filters – Smoothing, Fairing and Deformation – Quadric Edge Collapse Decimation
    • Impostare il numero di facce desiderato
    • Tutto ciò che supera il milione di facce è decisamente esagerato. Anche 100.000 facce sono di solito più che sufficienti

Esempi

Statue

SLe statue sono perfette per la fotogrammetria. La loro superficie è ruvida, non riesce a emettere alcun riflesso. Ci sono molti dettagli e particolarità che il software è in grado di tracciare. Le statue sono di solito troppo grandi per gli scanner 3D tradizionali, per non parlare dell’inconveniente di portare uno scanner 3D all’esterno e cercare di sistemarlo lì. Ma con la fotogrammetria è facile, basta prendere la macchina fotografica e iniziare a scattare foto. Tuttavia, dato che di solito sono collocate all’esterno, ci sono alcune cose da tenere a mente. Cercate di evitare la presenza di bersagli mobili nelle foto. Se ci sono persone che passano, lasciatele passare e nel frattempo scattate le foto dalle direzioni in cui le persone non sono visibili. Se possibile, aspettate che una nuvola blocchi il sole, in modo che non ci siano ombre dure.  

La statua della Donna seduta di Václav Bejček del 1967, il modello ricostruito in 3D (vedere il 3D view su Sketchfab), e la versione stampata

Baby Groot

La scansione di una stampa 3D potrebbe sembrare stupida, usare il file STL originale è ovviamente molto meglio. Ma è un buon benchmark della tecnica, possiamo facilmente confrontare il modello ricostruito con l’STL originale utilizzato per la stampa. Un’altra ragione valida per usare la fotogrammetria per digitalizzare la stampa 3D è se la si dipinge a mano e si vuole condividere il modello con la texture dipinta a mano. Come si può vedere nella vista 3D qui sotto, in termini di geometria, c’è una evidente perdita di qualità. Detto questo, la maggior parte delle caratteristiche sono state ricostruite con successo e con un paio di piccoli ritocchi, il modello avrebbe un bell’aspetto. E anche la texture è un bel tocco.

Premere I e selezionare Matcap per nascondere la texture e confrontare solo la geometria dei modelli

Racchetta da Ping Pong – trattamento delle superfici lucide

Ricostruire una racchetta da ping pong è stato abbastanza facile, con una sola eccezione. Le due grandi superfici (quelle che colpiscono la palla) non hanno nessun dettaglio per essere riconosciute dal software e, a peggiorare le cose, sono lucide. Mentre la telecamera gira intorno alla racchetta, la superficie lucida cambia aspetto e riflette le fonti di luce circostanti. Il risultato è che su questa superficie non si ricostruisce quasi nessun punto. Questo porterà alla fine a una forma di mesh non corretta. Per evitare che ciò accada, è necessario aggiungere qualche dettaglio a queste superfici. Ciò può essere fatto facilmente, per esempio, con del nastri per pittori. Appiccicare alcune strisce sulle superfici lucide per evitare riflessi e ottenere un aspetto opaco. Nella vista 3D, si può vedere la differenza di questo rapido hack.

Vetro – superfici trasparenti

Come per le superfici lucide, gli oggetti trasparenti sono problematici. I bordi netti possono essere catturati dal software di fotogrammetria, ma le aree trasparenti lisce saranno completamente ignorate, il che porterà a dati incompleti per la ricostruzione delle mesh. Anche in questo caso, è possibile utilizzare il nastro adesivo dei pittori per coprire queste superfici. In alternativa, si possono usare colori dissolvibili in acqua con uno spruzzatore e sporcare il vetro.

Conclusione

Le mesh create dalla fotogrammetria possono facilmente superare le prestazioni degli scanner 3D economici. Si possono ricreare completamente oggetti che sarebbe quasi impossibile da catturare con i tradizionali strumenti di scansione 3D. È estremamente comodo ed è probabile che abbiate già tutto ciò di cui avete bisogno per la fotogrammetria – una fotocamera (smartphone) e un PC piuttosto potente. E non deve finire con la ricostruzione di una statua. Possiedi un drone? Scatta qualche foto, ricostruisci e stampa la tua casa. Quindi…. La fotogrammetria è un valido strumento di scansione 3D? Sicuramente . Dovreste stampare i modelli ricostruiti senza ritoccare? Probabilmente no. Come qualsiasi altra tecnica di scansione 3D, la mesh finale non sarà perfetta. Alcune aree potrebbero mancare di dettagli, le superfici piane potrebbero non risultare completamente piane, la mesh potrebbe contenere fori, bordi non manifold o altri errori. Tuttavia, se si è in grado di risolvere questi problemi, il risultato finale varrà il tempo speso.

Fonti

Schonberger, Johannes Lutz and Frahm, Jan-Michael, Structure-from-Motion Revisited. University of North Carolina at Chapel Hill, Eidgenossische Technische Hochschule Zurich. All3DP – Autodesk 123D Catch Review