PREVIOUS article

DevLog #018: Il problema del sacchetto della spesa - PARTE 1/3 [15/09/2019]

NEXT article

DevLog #020: il problema del sacchetto della spesa - PARTE 3/3 [15/09/2019]
DevLog #019: il problema del sacchetto della spesa - PARTE 2/3 [15/09/2019]

Sono andato avanti con i tentativi di realizzare un sacchetto della spesa credibile…

IPOTESI 4: realizzarlo tramite “fotogrammetria” con un tool esterno per poi pulirlo/rifinirlo in Blender

La fotogrammetria mi ha sempre affascinato, mi è sempre piaciuta l’idea di ricostruire facilmente ambienti reali in 3D.
Negli scorsi anni più volte ho avuto modo di cimentarmi in questo campo, partendo sempre da 2 presupposti:

  1. uso Linux
  2. cerco un software gratuito

Ovviamente non ho mai raggiunto risultati soddisfacenti, per vari motivi: scarsa conoscenza dell’argomento e dei tool, poco tempo per studiare e sperimentare, aspettative troppo elevate, ecc.ecc.
Lo scorso anno mi sono imbattuto in un progetto molto interessante, un software di fotogrammetria rilasciato Open Source e disponibile per Linux!
Il programma in questione si chiama Meshroom e devo dire che si presenta molto bene. Facile ed intuitivo, ben confezionato e buoni risultati con il minimo sforzo. Dopo aver scoperto questo tool l’ho messo via in un cassetto della memoria in attesa che venisse il giorno in cui avrei avuto il tempo di approfondire. Che sia giunto il fatidico momento?
Ho preparato il set fotografico (un tavolino in salotto) e ho allestito un sacchetto contenente delle scatole di pasta ed una bottiglia di latte.


Ho acquisito diverse foto da varie angolazioni utilizzando il cellulare, circa una ventina di foto in tutto.
Ho inserito le foto in Meshroom e ho avviato la procedura di ricostruzione (impostazioni di default, non ho toccato nemmeno un parametro). Dopo circa un’ora il programma ha completato tutte le operazioni, il risultato nella preview sembrava buono ma erano presenti dei “buchi” nel modello ed alcune foto erano state automaticamente escluse dalla elaborazione. Per fortuna avevo lasciato il set fotografico intatto in salotto (con i miei figli che ci giocavano intorno) e sono tornato a fare una decina di foto aggiuntive in corrispondenza delle zone della mesh bucate.
Ho inserito il nuovo set di foto e ho avviato la procedura per rifinire il modello.
Dopo diverse decine di minuti la ricostruzione non aveva più parti mancanti e la preview era soddisfacente.
Ho caricato il modello in Blender, ho tagliato via le parti in eccesso e ripulito un po’ la mesh, ma era evidente che ci fosse qualcosa di strano. Alcune parti della mesh erano tassellate con un passo microscopico, altre erano triangolate grossolanamente e mancavano completamente di dettaglio.


Il modello così come era uscito da Meshroom non andava bene.

Analisi del fallimento

Avendo già fatto qualche esperimento in precedenza ho capito subito quali errori avessero pesato maggiormente sul risultato finale.
Innanzi tutto la qualità della luce: il sacchetto era illuminato da una fonte di luce monodirezionale (la finestra) che per quanto diffusa creava ombre troppo marcate sul soggetto da ricostruire. Il soggetto non era uniformemente illuminato.
In secondo luogo il materiale stesso del sacchetto utilizzato come campione non era adatto. Il sacchetto del supermercato in materiale riciclabile estremamente sottile e leggero è traslucido, ossia si intravedono oggetti all’interno. I risultati migliori con la fotogrammetria si ottengono utilizzando soggetti completamente opachi (non lucidi, non trasparenti), complice anche una luce proveniente da una direzione principale, si sono creati dei giochi di luci, ombre e colori molto difficili da elaborare con successo.
Infine le foto: fatte con un cellulare, anche se di ottima qualità, non sempre riescono a rivaleggiare con una reflex con le impostazioni manuali, che consentono di scattare più foto nelle stesse identiche condizioni di apertura/tempo di scatto. Per risultati ottimali è necessario che i colori e le luci siano coerenti in tutte le fotografie. Inoltre come ha evidenziato il test, successive rifiniture con ulteriori foto nelle zone critiche hanno contribuito a migliorare sensibilmente il risultato, quindi è ragionevole pensare che con un numero molto maggiore di foto si possa ottenere un risultato decisamente più soddisfacente.

Morale?

Sono convinto che ci sia ampio margine di miglioramento, lavorando senza troppo sforzo sui punti critici evidenziati qui sopra. Questo però richiede che ci siano le giuste condizioni (ad esempio una giornata nuvolosa per scattare all’aperto con luce uniforme), che riesca a trovare un sacchetto di un materiale più adatto (e per ora non ne ho trovati) e che sia pronto a far lavorare il mio PC per… parecchio tempo (ci ha messo un’ora per 20 foto, con molte più foto presumo ci voglia molto più tempo).
In attesa che si verifichino tutti i requisiti appena esposti potrei nel frattempo sperimentare con l’ipotesi 5....