In questo articolo si parla di fotogrammetria con Photoscan e del processo di allineamento delle immagini.
Questa è la puntata numero quattro a cura dell’Ing. Paolo Rossi, sulla fotogrammetria con il software Agisoft Photoscan, e si affronta la fase di allineamento delle immagini.
Trovi il primo articolo a questo link.
Il secondo a questo.
Ed il terzo qui.
ALLINEAMENTO DELLE IMMAGINI
Nelle puntate precedenti abbiamo visto le operazioni preliminari da fare sulle immagini importate e le impostazioni della loro calibrazione.
In questo post ti spiego come funziona l’allineamento delle immagini, la prima operazione che permette di ottenere un prodotto 3D dal rilievo!
L’allineamento serve a posizionare correttamente le immagini le une rispetto alle altre o, se sono già geolocalizzate, a calcolarne l’esatta posizione nello spazio reale.
Ma torniamo alle immagini.
Possono essere prive di localizzazione o avere, all’interno dell’EXIF file (metadati), informazioni sulla posizione di acquisizione.
Questo è frequente quando si usano smartphone o droni.
L’immagine geolocalizzata si riconosce in PhotoScan perché si vede a monitor associata ad un pallino blu e, nel reference panel-cameras, ad ogni ID di immagine sono affiancati numeri indicanti la posizione: le coordiante del punto di presa.
COME LAVORA L’ALLINEAMENTO?
Ma soprattutto, come funzionano gli algoritmi di SfM (Structure from Motion)?
Prima di inizaire facciamo un po’ di chiarezza sulla terminologia:
-
spazio immagine: è la matrice che costituisce l’immagine acquisita, righe e colonne sono definite ξ ed η e delimitano i pixels;
-
spazio reale: è la dimensione 3D (x, y, z) in cui si fa rilievo e ricostruzione. Le coordinate dipendono dal sistema di riferimento che si sceglie (si può anche scegliere di lavorare in un sistema arbitrario ma scalato, o in un sistema totalmente arbitrario e svincolato dalla realtà).
Su ogni immagine lavora un algoritmo di features detection (Scale Invariant Features Transform o similari) che permette di identificare punti notevoli e caratteristici.
Un punto notevole, o descriptor (descrittore), per essere tale, deve essere stabile, rimanere identificabile e distinguibile al variare della scala di acquisizione, direzione di presa e condizioni di illuminazione.
Gli algoritmi di features detection sono il vero punto innovativo e chiave delle SfM e permettono di identificare in modo automatico migliaia di descrittori per ogni immagine, svincolandosi dal rigore delle geometrie di presa.
I descrittori costituiscono i punti di legame.
Per ogni immagine c’è un database contente tutti i descrittori trovati.
Ogni descrittore è univoco poiché caratterizzato dal comportamento radiometrico dell’immagine (e quindi della scena reale) nel suo intorno.
I descrittori delle varie immagini sono confrontati tra loro.
Gli omologhi costituiscono un legame tra le immagini e ne permettono il posizionamento reciproco.
Questa è la fase definita di matching: di ricerca e definizione di punti di legame tra le immagini costituenti il dataset.
Nelle immagini qui sopra i pallini indicano i descrittori individuati nella foto (blu e bianchi se entro o oltre il limite imposto) e le linee sono i matches tra le immagini: la connessione tra lo stesso punto di legame sulle due immagini (in blu se corretti, in rosso se errati).
EQUAZIONI DI COLLINEARITÀ
Una volta determinati i punti di legame si possono impostare e risolvere le equazioni di collinearità.
Si imposta la collinearità lungo l’asse ottico tra:
- centro di presa,
- punti di legame
- posizione 3D del punto di legame.
Le equazioni di collinearità fanno da ponte tra lo spazio immagine (bidimensionale) e lo spazio reale (3D), mettendo in relazione:
- posizione nello spazio immagine del punto di legame;
- parametri di calibrazione della fotocamera;
- parametri esterni della fotocamera (posa e orientamento);
- coordinate nello spazio reale del punto di legame.
I principi base della fotogrammetria tradizionale ricordano che un generico punto P deve essere ritratto in almeno 2 immagini per poter essere ricostruito in 3D (quindi coordinate immagine note in due fotogrammi, 4 equazioni e le 3 coordinate incognite).
Nelle SfM questo sistema esplode in migliaia di equazioni:
- uno stesso punto di legame P è visto in tante immagini (per l’elevata ridondanza di dato in fase di rilievo),
- in ogni immagine sono identificati migliaia di punti di legame,
- tutti i parametri interni ed esterni della fotocamera sono incogniti.
Il sistema di equazioni è risolto all’interno di uno step chiamato bundle adjustment, dove le soluzioni ottenute sono ottimizzate.
Gli output sono:
- posizione e posa delle fotocamere,
- parametri di calibrazione e distorsione della fotocamera,
- nuvola sparsa, ossia le coordinate 3D dei punti di legame.
Gli output sono restituiti nel sistema di riferimento delle immagini importate, se queste erano geolocalizzate, altrimenti in un sistema di riferimento arbitrario e locale scelto dal software.
N.B: fino ad ora abbiamo ancora parlato di punti di vincolo e osservazioni a terra.
ALIGN PHOTO
Tutte le fasi descritte sopra si riassumono nel comando Align Photo di Photoscan, che contiene varie voci con parametri da settare in base al dataset a disposizione e i risultati che si vogliono ottenere.
Accuracy: è l’accuratezza nella stima della posizione delle camere e ricostruzione.
Da low ad highest aumentano i tempi richiesti dal processing perché aumenta la risoluzione delle immagini analizzate.
Questa voce fa riferimento alle dimensioni delle immagini in cui ricercare i descrittori:
- high – immagini a scala originale;
- highest – immagini a scala aumentata di un fattore 4 (2 per lato);
- medium – immagini down scalate di fattore 4;
- low – immagini down scalate di fattore 16 (4 per lato).
Pair selection: è la voce che riguarda il matching delle immagini dove si danno indicazioni sulle coppie di immagini tra cui ricercare le corrispondenze:
- generic – si confrontano prima le immagini a bassa risoluzione per capire quali si sovrappongono e poi si passa alla risoluzione originale;
- reference – si usa la posizione delle immagini, se nota da exif file.
Keypoint limit, Tie point limit: sono i valori che definiscono i limiti nella numerosità di punti notevoli da identificare nelle immagini, e sui punti di legame da usare nell’allineamento.
Il valore 0 indica che tutti i punti identificabili ed identificati sono utilizzati allo scopo.
Se ho impostato un limite sui punti di legame pari a 4.000, anche se per ogni immagine il software identifica 10.000 possibili punti di legame con le altre immagini, solo i 4.000 migliori, quelli con la maggior probabilità di dare un matching corretto, sono effettivamente utilizzati.
I valori di preset, a mio avviso, vanno bene.
Se siete consapevoli di avere un dataset particolare (scena uniforme e poco texturizzata, bassa ridondanza e qualità delle immagini, …) occorre fare alcune prove per modificare i valori dei parametri.
Constrain feature by mask: selezionare eventuali maschere create per escludere aree dalla procedura di allineamento.
Adaptive camera model: opzione che permette di settare automaticamente i parametri interni della fotocamera da inserire nell’ adjustment in base alla loro affidabilità.
Se il dataset ha una geometria forte, questa opzione ottimizza più parametri, se la geometria è debole, aiuta a prevenire divergenze di alcuni parametri (ad esempio radial distortion se l’oggetto rilevato è piccolo ed al centro delle immagini, posizione del punto principale se le prese sono state effettuate su linee parallele).
Al termine dello step di allineamento si vedono nuvola sparsa e posizione delle fotocamere (rettangoli blu) nel model panel ed i valori adjusted dei parametri di calibrazione nel camera calibration tool.
Già dopo questa prima fase è possibile esportare alcuni risultati (comando export dal menu tools):
- nuvola sparsa (coordinate dei punti, colore, normali),
- cameras, posizione ed orientamento delle fotocamere e valori dei parametri di calibrazione interni,
- tiepoints, i matches tra le immagini.
Una della potenzialità di PhotoScan è quella di offrire vari formati per l’espoertazione dei risultati, permettendo il dialogo con altri software
RIALLINEMANETO DELLA IMMAGINI
Può accadere che non tutte le immagini siano allineate, o allineate bene, ed in questi casi occorre procedere manualmente al riallinamento.
Le immagini non allineate correttamente si notano guardando il modello 3D.
Se vedi porzioni della scena staccate dal resto, in posizioni strane, o se noti immagini in posizioni che non hanno nulla a che vedere col rilievo che hai fatto, devi prendere nota del nome dell’immagine e resettarne l’allineamento (tasto dx sull’immagine e reset alignment).
In modo altrettanto semplice puoi identificare, nell’image panel, le prese che non sono state allineate nella procedura automatica.
Per riallineare un gruppo di immagini occorre:
- posizionare almeno 4 markers in ognuna di esse,
- proiettare questi markers in almeno 2 immagini del dataset allineato,
- selezionare le immagini da allineare e procedere con l’allineamento dove il software userà i markers come punti di legame certi.
ONERI COMPUTAZIONALI
La fase di allineamento è computazionalmente onerosa, le operazioni da fare sono molte e richiedono un certo tempo macchina.
Stimare i tempi necessari è impossibile perchè entrano in gioco variabili legate alle caratteristiche del calcolatore, numero di immagini, set up.
Lo step di allineamento impiega risorse in termini di memoria e CPU.
In questa tabella il team di Agisoft collega il numero di immagini con la quantità di memoria RAM necessaria (la risoluzione delle immagini non incide in questa fase).
Photos |
100 |
200 |
500 |
1000 |
2000 |
5000 |
10000 |
Memory consumption |
500MB |
1GB |
2.5GB |
5GB |
10GB |
25GB |
50GB |
In rete ho trovato altre indagini fatte da Puget System, un’azienda che si occupa di personalizzazione PC, che analizzano le prestazioni su un dataset campione al variare del numero di cores della CPU.
Nel prossimo articolo si parlerà di inserimento dei punti di vincolo, ottimizzazione degli allineamenti e strumenti di editing per la nuvola sparsa!
Spero che anche questo articolo di Paolo Rossi sull’ allineamento delle immagini per la fotogrammetria con Photoscan possa esserti utile.
Per dubbi o domande lo spazio per i commenti qui sotto è a tua disposizione!
A presto!
Paolo Corradeghini
Paolo Rossi, ingegnere e PhD in Ingegneria Industriale e del Territorio presso l’Ateneo di Modena e Reggio Emilia, attualmente lavora presso il Laboratorio di Geomatica del Dipartimento di Ingegneria “Enzo Ferrari”, dove si occupa di ricostruzione 3D da immagini.
Laboratorio di Geomatica
Dipartimento di ingegneria Enzo Ferrari, Università degli studi di Modena e Reggio Emilia
Via Pietro Vivarelli 10, Modena
Tel: 059 2056297
Cell: 3457054511
Email: paolo.rossi at unimore.it
Profilo Linkedin
Ho pubblicato un video sul Canale You Tube che parla proprio dell’allineamento delle immagini con Metashape (ex Photoscan):
Lasciami un commento!
4 Comments
INTERESSANTE E BEN FATTO. HO LETTO ANCHE GLI ARTICOLI PRECEDENTI E LEGGERO’ I PROSSIMI. NE CONSIGLIO LA LETTURA.
Ciao Franco, grazie mille per il tuo commento!
Salve Paolo,
riguardo l’allineamento delle immagini, non capisco perché photoscan si rifiuta di prendere in considerazione alcune foto. sono geotaggate, non sono sfocate, e se le prende in considerazione assegna un rollio di 60/70°. tu cosa ne pensi?
Ciao Michele,
è possibile che siano immagini nella zona perimetrale dell’area rilevata?
C’è sufficiente sovrapposizione con le altre immagini del dataset?
Hai provato a riallinearle manualmente segnalando al software punti in comune a cui “agganciarsi”.
A volte può capitare quello che hai segnalato, se le immagini non sono molte e te lo puoi permettere puoi eliminarle dall’elaborazione.
Fammi sapere se riesci a risolvere il tuo problema.
Ciao!
Paolo