Ripasso concetto di processing nel ciclo produttivo: link
Point Splatting
- è una tecnica di rendering a partire dalla nuvola di punti, che “chiaccia” i punti della nuvola fino ad ottenere il modello 3d finale dalla fuperdicie continua
- nel rivelare un insieme di pixel intorno al punto in questione, il quale è rappresentato matematicamente nel modello 3d (la rappresentazione matematica nn è visibile) → in pratica crea la nuvola di punti “rivelando i punti”
- Splat = una regione di pixel sullo schermo che viene attivata per rappresentare il punto
OSSERVAZIONI
- la dimensione dello splat viene scelta in funzione della densità dei punti e sono disegnabili anche come dischetti (pezzetti di superficie)
- multi-risoluzione
- la distribuzione della nuvola di punti è adattiva → possono rivelare più splats su una parte dell’oggetto e di meno su un altra
- posso ordinare a caso ogni sotto-pezzo della nuvola di punti con uno shuffle
- chiaro scuro: avviene pk la normale delle superfici che puntano alla luce sono più chiare, le normali con orientamento più lontane da quello della luce sono più scure
STORAGE DI POINT CLOUDS
L'immagine rappresenta un esempio di file di point cloud, con formato
.xyz, utilizzato per memorizzare informazioni 3D su un insieme di punti nello spazio.Contenuto:
- Ogni riga contiene dati su un singolo punto della nube.
- Posizione del punto (x, y, z): i primi tre valori di ogni riga rappresentano le coordinate spaziali del punto.
- Normale del punto (x, y, z): gli ultimi tre valori rappresentano il vettore normale associato al punto, utile per definire l'orientamento della superficie in quel punto.
MANIPOLAZIONE POINT CLOUD
VICINATO SPAZIALE e K-NN
- case study 1: voglio ricostruire una nuvola di punti per mezzo di una serie di fotogrammi dell’oggetto (fermo) in angolazioni diverse. Dai fotogrammi il programma riconosce quali elementi sono simili tra loro, la ricerca di matching tra 2 punti non avviene singolarmente punto per punto (sarebbe pieno di fraintendimenti), ma per intorno di punti (vicinato spaziale)
- case study 2: voglio definire la normale di un punto guardando il comportamento locale dei punti circostanti (vicinato spaziale)
- Come determino il raggio di interesse su cui definire il vicinato spaziale di un punto?
- Uso il parametro K-NN (k nearest neighbors), in cui K lo decido io, in base al risultato che voglio ottenere
SVANTAGGI
- Costo algoritmico
- Trovare i K-nearest neighbors (KNN) per ogni punto implica il calcolo della distanza tra ogni punto e i suoi vicini.
- Questo approccio ha complessità quadratica O(n²) e diventa inefficiente per dataset di grandi dimensioni.
- Per calcolare la distanza tra due punti si eseguono circa 10 operazioni (teorema di pitagora su 3 coordinate tra il punto preso in esame e un generico punto sulla totalità di punti della nuvola), che moltiplicato per il calcolo della distanza di un punto q per tutti i punti del dataset, e moltiplicato per tutti i punti. Il processo è computazionalmente costoso.
- Se la risoluzione non è uniforme la scelta di K in aree meno dense, potrebbe dare a rislutati sbilanciati
DENOISING
Tipico per altri modelli 3D acquisiti dalla realtà è la presenza di errori di misurazione, che si traducono in «rumore»
- de-noising = rimuovere il rumore
- un altra tipica operazione di processing è il de-noising
ALLINEAMENTO o REGISTRAZIONE (ITERATIVE CLOSEST POINT)
case study: ho 2 nuvole di punti, riferiti a lati DIFFERENTI di un oggetto, vorrei sovrapporli in modo coerente sfruttando il fatto che, in corrispondenza del limite in cui le 2 nuvole si sovrappongono per legarsi, ci sono parti di superficie rappresentati da entrambe le nuvole, quindi coincidenti. Per cui mi baso su quello cercando di sovrapporli perfettamente.
ALGORITMO DI ALLINEAMENTO IN 2 FASI
- allineamento grossolano → creato in modo approssimativo manualmente, quindi in esatto e senza vera coincidenza dei punti rispettivamente comuni
- allineamento fine → perfeziona l’allineamento facendo combaciare perfettamente i punti comuni, per mezzo di un algoritmo basato sulla distanza, chiamato ITERATIVE CLOSEST POINT: per ogni punto della nuvola A cerca i punti più vicini della nuvola B. Questo algoritmo è iterativo → ITERATIVE CLOSEST POINT (ICP) pk nn cerca il matching una sola volta, l’importante è che la nuvola di punti si avvicini iterativamente sempre di più all’allineamento fine
- SURFACE OFFSETTING