Tutorial video 360 metashape nuvola drone foto 360 villa

Un video 360° vede tutto, dentro casa, ma non sa dove si trova né quanto è grande: ecco come lo agganciamo a un rilievo drone RTK senza punti a terra e senza scegliere nulla a mano, con i numeri del nostro rilievo di prova e il modo di provarlo.

Il caso

Questo articolo è l’approfondimento tecnico del caso studio Villa residenziale: un edificio rilevato con drone RTK all’esterno e camera 360 all’interno, unito in un solo modello nello stesso sistema di coordinate. Il caso studio mostra il risultato; qui raccontiamo come abbiamo migliorato il passaggio più delicato, l’unione.

Il risultato: le foto 360° dentro la villa, accanto alle camere del drone.

Nel flusso che usavamo, la nuvola 360 veniva allineata e riscalata a mano in un programma esterno, scegliendo punti in comune. Funziona, ed è il modo più diffuso. Ma ogni scelta è un’occasione di errore: quali punti, quanti, con che precisione.

Nel nostro rilievo di prova il risultato manuale aveva una scala di 0,9719, che dava 11,381 m tra due pareti esterne distanti 11,52 m: 14 cm in meno, senza che nessun controllo interno lo segnalasse. Il modello sembrava in ordine. Non lo era.

Per questo abbiamo tolto l’operatore dalle scelte, non dal controllo. Il metodo automatico non elimina la necessità di misurare: sposta l’errore da una scelta soggettiva a numeri che si possono controllare e ripetere.

Da dove arrivano le foto 360°

Per la parte 360 abbiamo usato i dati esportati da CupixVista®, nella versione beta: un’app gratuita su Google Play che si collega alla propria camera 360, come la Insta360 X5, e produce nuvola di punti, mesh e tour virtuale sulla sua piattaforma web. Gli script lavorano sul file E57 esportato, che contiene le foto 360° equirettangolari e la nuvola di punti.

La cartella con i panorami estratti: un JPEG per posizione, più il file con le pose.

Tre passi, nessuna scelta a mano

  1. Estrazione. Il comando workflow360.py extract estrae dall’E57 le foto 360° in JPEG e le loro pose. Le foto restano identiche ai byte contenuti nell’E57.
Il comando extract: alla fine scrive quanti panorami ha estratto dall’E57 (qui 100).
  1. Allineamento. Lo script 1_ms_pano360_align.py, in Agisoft Metashape®, aggiunge le foto 360° come camere sferiche a una copia del chunk del drone e le allinea alle foto del drone. Il chunk originale resta intatto. Alla fine esporta in CSV la posizione di ogni foto 360° nel sistema del progetto.
In Metashape: Tools → Run Script, lo script, poi l’allineamento delle foto 360° (accelerato).
  1. Scala e posizione. Il comando workflow360.py fit stima scala, rotazione e traslazione tra E57 e sistema del drone, scartando gli outlier. Poi confronta le pareti verticali corrispondenti nelle due nuvole e corregge la scala su una base lunga. Infine scrive la nuvola 360 in LAS nel sistema del drone, con un file che riporta scala, rotazione e traslazione applicate.
Il comando fit: ogni passo stampa i suoi numeri (ripresa accelerata).
Pannelli Reference e Workspace di Metashape: foto 360° aggiunte come camere e chunk drone+pano360
Lo script lavora su una copia del chunk del drone: «drone+pano360» ha 100 foto 360° in più (712 immagini contro 612) e il chunk originale resta intatto.

Ogni passo stampa i suoi numeri. È questo il punto: non si guarda il modello per dire se «sembra giusto», si leggono i valori.

I numeri del rilievo di prova

ControlloValoreCome leggerlo
Foto 360° allineate86 su 90con uno scarto quadratico di 13 cm sulle posizioni
Distanza tra due pareti parallele11,539 m sulla nuvola 360, 11,518 m sul drone+2 cm su 11,5 m
Scala finale0,9805il confronto manuale dava 0,9719
Distanza mediana tra le due nuvole4,3 cmsui punti entro 10 cm; l’interno non ha controparte nella nuvola del drone

Come leggerli:

  • Foto 360° usate. Uno scarto molto più grande di 13 cm indica che l’allineamento delle foto 360° è debole.
  • Piani corrispondenti. Lo script stampa la distanza tra le pareti nelle due nuvole: nel rilievo di prova 11,539 m sulla nuvola 360 e 11,518 m sul drone, quindi +2 cm su 11,5 m.
  • Scala finale. Il confronto manuale dava 0,9719, cioè 14 cm in meno sulla stessa distanza: la scala va sempre controllata su una base lunga.

Limiti dichiarati

Un metodo vale quanto i limiti che dichiara. I nostri li scriviamo, non li sottintendiamo.

  • La correzione sulla base lunga usa pareti verticali corrispondenti: se l’edificio non ne ha due parallele con distanza maggiore di 5 m nelle due nuvole, serve un’altra misura.
  • Una scala unica presuppone che l’E57 non abbia deriva interna; il test sulle posizioni delle foto 360° (13 cm di scarto) va letto con attenzione.
  • Il flusso è stato provato su un solo rilievo. Il numero di foto 360° allineate varia un poco da un’esecuzione all’altra (90, 91 e 88 su 100 nelle nostre prove con gli stessi dati): controllate sempre la scala sulla base lunga.

Verificare con le proprie misure

Qui non vi chiediamo di fidarvi dei nostri numeri: vi diamo il modo di ripetere la prova empirica. La precisione va confermata con le proprie misure a terra, che consigliamo vivamente di fare:

  1. Misurate con metro laser almeno 2 distanze lunghe (8 m o più) e 4–6 distanze interne in stanze diverse, di cui una attraverso una porta verso l’esterno.
  2. Annotate per ogni misura i due punti (spigolo di una porta, angolo tra due pareti), il piano e la distanza in metri.
  3. Rimisurate le stesse distanze sulla nuvola prodotta e calcolate la differenza in centimetri.
  4. Accettate la scala solo se le differenze sono compatibili con la vostra tolleranza (per esempio 1 cm per un rilievo a 1:200 con quote leggibili al centimetro). Altrimenti correggete la scala con un fattore dichiarato, non a mano nel programma.

Le misure a terra del nostro rilievo di prova, con la differenza per ogni distanza, le pubblicheremo in seguito, insieme a un secondo rilievo per vedere quanto il flusso si ripete.

Gli script di questo tutorial sono testati sul nostro rilievo di prova e liberi da virus e malware: sono file di testo Python, che si possono leggere riga per riga prima di usarli. workflow360.py gira con Python, 1_ms_pano360_align.py dentro Metashape. Li condividiamo con chi lavora nel settore: raccontateci chi siete, dove lavorate e come pensate di usarli, e ve li mandiamo noi.

Se nel provarlo incontrate un problema, o volete solo confrontarvi sul metodo, scriveteci: ci fa piacere.

Il metodo in cinque regole

  1. La scala non si sceglie, si misura: su una base lunga, tra pareti corrispondenti.
  2. Le foto 360° si allineano da sole con quelle del drone: nessun punto scelto a mano.
  3. Ogni passo stampa i suoi numeri, e si leggono prima di andare avanti.
  4. Il dato originale non si tocca: foto identiche all’E57, chunk del drone intatto.
  5. L’accuratezza si dichiara sulle misure a terra, non sui numeri dello script.

Un’unione ben fatta non è quella che sembra giusta a occhio: è quella in cui la scala ha un numero, e il numero ha una verifica.

Il rilievo da cui nasce questo articolo è il caso studio Villa residenziale; perché su una villa bastano una camera 360 e un drone RTK, e quando invece serve altro, è nell’articolo Camera 360° e drone RTK.