5

Ho una nuvola di punti di un oggetto, ottenuta con uno scanner laser e un modello di superficie CAD di tale oggetto.Abbina nuvola di punti 3D a modello CAD

Come posso abbinare la nuvola di punti alla superficie, per ottenere la traslazione e la rotazione tra il cloud e il modello?

Suppongo di poter campionare la superficie e provare l'algoritmo Iterative Closest Point (ICP) per abbinare la nuvola di punti campionata risultante alla nuvola di punti dello scanner.

Potrebbe funzionare?

E ci sono algoritmi migliori per questo compito?

risposta

4

Sì, ICP può essere applicato a questo problema, come suggerito con il campionamento della superficie. Sarebbe meglio se hai tutte le facce disponibili nella tua scansione laser, altrimenti potresti dover rimuovere visi invisibili dal tuo modello (a seconda di quanti di questi ci sono).

Un modo per preparare automaticamente un modello eliminando alcune delle facce nascoste è calcolare lo scafo concavo che può essere utilizzato per scartare le facce nascoste (che sono ad esempio facce che non sono vicine allo scafo concavo). A seconda di come è coinvolto il modello, questo può o non può essere necessario.

ICP funziona bene se viene data una buona ipotesi iniziale perché ignora i punti che non sono vicini rispetto all'ipotesi corrente. Se ICP non presenta un buon allineamento, puoi provare con più riavvii casuali per provare a risolvere questo problema, scegliendo il miglior allineamento.

Una soluzione più coinvolgente è eseguire la corrispondenza delle funzionalità locali. Si campiona e si calcola un descrittore invariante come SHOT o FPFH. Trovi le corrispondenze migliori, respingi le partite non coerenti, usale per ottenere un buon allineamento iniziale e poi raffina con ICP. Ma potrebbe non essere necessario questo passaggio a seconda di quanto sia robusto e veloce l'ICP a riavvio casuale.

1

C'è una libreria open source per point cloud algorithms che implementa registration contro altre nuvole di punti. Potresti provare alcuni dei loro metodi per vedere se sono adatti.

Come antipasto, se non hanno nulla di specifico per adattarsi a una mesh poligonale, è possibile trattare i vertici della mesh come un'altra nuvola di punti e adattare la nuvola di punti contro di essa. Questo è qualcosa che sicuramente supportano.

3

Nella nuova OpenCV, ho implementato un modulo di corrispondenza della superficie per abbinare un modello 3D a una scena 3D. Non è richiesta alcuna posa iniziale e il processo di rilevamento è completamente automatico. Il modello coinvolge anche un ICP.

Per avere un'idea, si prega di verificare che un video qui (anche se non è generato dalla realizzazione in OpenCV):

https://www.youtube.com/watch?v=uFnqLFznuZU

Il codice sorgente completo è here e la documentazione è here.

Hai detto che era necessario campionare il modello CAD.Ciò è corretto e che hanno dato un algoritmo di campionamento adatto per la coppia di punti caratteristici corrispondenti, come quella attuata in OpenCV:

A Punto algoritmo di campionamento per corrispondenza 3D irregolari geometrie, Tolga Birdal, Slobodan Ilic

http://campar.in.tum.de/pub/tbirdal2017iros/tbirdal2017iros.pdf

+0

il video sembra interessante, ma questa risposta senza le informazioni richieste per riprodurre i risultati. Potresti riassumere l'approccio che hai usato e mostrare le chiamate OpenCv rilevanti? Il codice completo è disponibile da qualche parte? – HugoRune

+0

Il codice completo è disponibile al https://github.com/tolgabirdal/opencv_contrib/tree/master/modules/surface_matching –