Poisson reconstruction (algoritmo) e oct-tree

Poisson reconstruction (algoritmo) e oct-tree

POISSON RECONSTRUCTION
notion image
algoritmo che produce mesh chuise
  • scopo: converte una nuvola di punti in triangle mesh per mezzo di una griglia di voxel
    • notion image
  • Metafora visiva
    • La nuvola di punti è un gregge di pecore sparse in un prato
    • Tu stendi una rete a cubetti (griglia voxel) sopra quel prato
  • Per ogni voxel nello spazio associo una signed distance:
    • 0 → se sei sulla superficie
    • > 0 → se sei fuori dall’oggetto
    • < 0 → se sei dentro all’oggetto
  • in pratica se il voxel sta in direzione opposta alla normale del punto che gli è più vicino, allora gli sta dietro (quindi dentro il modello 3d). Quindi dista da lui di un valore negativo
    • notion image
  • questo avviene per mezzo di una SD Function, che viene computata per renedere possibile la definizione della nuvola di punti con i voxel
    • notion image
differenza tra 2 algoritmi di conversione
  • conversione diretta: ball pivoting e Diagramma di Voronoi + Triangolazione di Delaunay
  • conversione indiretta: poisson reconstruction
    • notion image
difetto dei metodi diretti

🧱 Da nuvola di punti a mesh – Metodi diretti

Quando vuoi costruire una mesh 3D a partire da una nuvola di punti, ci sono due approcci:

👉 Metodi diretti (es. Ball-Pivoting, Front Advancing, Delaunay):

  • Usano i punti della nuvola così come sono
  • I punti diventano direttamente i vertici della mesh

🚨 Ma c’è un problema:

Le nuvole di punti (soprattutto quelle prese da uno scanner 3D) sono spesso imperfette.
Ecco alcuni difetti comuni che rendono difficile costruire una buona mesh:

Rumore o outliers

  • Alcuni punti sono completamente sbagliati, fuori posto.

Difetti di allineamento

  • Se la nuvola è formata unendo più scansioni, ci possono essere disallineamenti tra le parti.

Densità irregolari

  • Alcune zone hanno troppi punti, altre troppo pochi.
    • Es: due parti scansionate due volte → risultano sovrapposte e più dense.

Parti mancanti

  • Alcune zone non sono state scansionate (es. per ombre, ostacoli, riflessi).

🎯 In breve:

I metodi diretti usano i punti “così come sono”,
ma questo può causare problemi seri se la nuvola non è perfetta.
E purtroppo, le nuvole acquisite da scanner 3D quasi sempre hanno questi difetti.

pregio della poisson reconstruction
La Poisson Reconstruction non si limita a collegare i punti.
Fa qualcosa di molto più intelligente:

1. Costruisce una funzione continua (la SDF)

  • Che non si fida ciecamente dei singoli punti
  • Ma cerca di interpolare e approssimare la superficie ideale che “passa per quei punti”

2. Usa anche le normali (la direzione della “pelle” dell’oggetto)

  • Quindi capisce come è orientata la superficie
  • E può distinguere quali punti sono coerenti e quali no

3. Riempe i buchi

  • Poiché costruisce una superficie chiusa e regolare, tende a colmare le parti mancanti
  • Anche se ci sono zone senza punti, la superficie viene interpolata bene

🔧 Metafora semplice:

  • I metodi diretti sono come unire i puntini a mano su un foglio: se un punto è fuori posto, lo colleghi lo stesso e rovini il disegno.
  • La Poisson invece è come disegnare una linea curva che meglio segue tutti i puntini, ignorando quelli sbagliati e riempiendo le parti mancanti in modo coerente.
difetti di poisson

✅ Cosa fa bene la Poisson Reconstruction:

  • Crea nuovi vertici “puliti” e mediati, che aiutano ad eliminare il rumore e gli errori nella nuvola di punti.
  • Produce sempre una mesh:
    • chiusa (senza buchi)
    • orientata correttamente
    • 2-manifold (cioè ogni bordo appartiene a due facce → mesh “corretta”)

❌ Ma ha anche degli svantaggi:

1. La mesh risultante è molto irregolare

  • Anche se la nuvola di punti era ordinata o precisa, la mesh che ottieni può avere triangoli molto diversi tra loro (piccoli, grandi, storti).

2. Perdi la risoluzione originale della nuvola

  • Se la nuvola di punti era dettagliata in alcune aree e meno in altre (cioè “adattiva”),
    • la Poisson non mantiene questa variazione.
  • Ti restituisce una mesh “uniforme”, che non rispecchia le densità originali.

3. I punti vengono ricampionati

  • I vertici originali della nuvola vengono ignorati e sostituiti da nuovi punti.
  • Questo è un problema se i punti originali erano molto precisi, ad esempio presi con strumenti ad alta precisione.

4. È pesante da calcolare

  • Serve molta memoria e tempo per calcolare la funzione SDF e applicare Marching Cubes.
  • A meno che tu non usi una griglia di voxel a bassa risoluzione, ma in quel caso...
    👉 la qualità della mesh peggiora.
Questo è collegato al problema della "curse of dimensionality", cioè:
in 3D, se raddoppi la risoluzione in ogni direzione, i voxel diventano 8 volte di più
→ memoria e tempo esplodono.

🎯 In sintesi:

Vantaggi della Poisson
Svantaggi della Poisson
+ Mesh chiusa e ben orientata
- Mesh irregolare
+ Riduce rumore
- Perdi la precisione e la densità originale
+ Funziona anche con buchi
- Ricampiona i vertici, anche se erano precisi
- Molto pesante in memoria e calcol

OCT-TREE
i voxel non sono adattivi → questo aumenta il costo alla memoria
notion image
risoluzione = dimensione e numero dei voxel
SOLUZIONE 2D → QUAD TREE (4 figli)
una struttura dati mappa le divisioni effettuate sul piano 2d, se divido in 4 ho 4 figli.
Ogni figlio lo risparmio dal dividerlo a sua volta in 4 solo se:
  • sta tutto dentro il modello 2d (bit = 1)
  • oppure tutto fuori (bit = 0)
Se lo attraversa parzialmente → lo diviso ulteriormente (aumento la risoluzione)
ESEMPI GRAFICI
notion image
notion image
ESEMPIO
notion image
SOLUZIONE 3D → OCT-TREE (8 figli, attenzione ai parametri nella descrizione)
ha una complessità formalmente cubica O(n^3), ma all’atto pratico memorizza abbastanza pochi nodi da avere una complessità quadratica O(n^2)
notion image
notion image