5

Posiadam chmurę punktów obiektu uzyskaną za pomocą skanera laserowego oraz model powierzchni CAD tego obiektu.Dopasowywanie chmury punktów 3D do modelu CAD

Jak dopasować chmurę punktów do powierzchni, aby uzyskać tłumaczenie i obrót między chmurą a modelem?

Przypuszczam, że mógłbym wypróbować powierzchnię i wypróbować algorytm Iterative Closest Point (ICP), aby dopasować wynikową chmurę punktów do chmury punktów skanera.

Czy to rzeczywiście zadziała?

A czy istnieją lepsze algorytmy dla tego zadania?

Odpowiedz

4

Tak, ICP można zastosować do tego problemu, co sugeruje się przy próbkowaniu powierzchni. Najlepiej byłoby, gdyby w skanowaniu laserowym były wszystkie dostępne twarze, w przeciwnym razie może być konieczne usunięcie niewidocznych twarzy ze swojego modelu (w zależności od tego, ile z nich istnieje).

Jednym ze sposobów automatycznego przygotowania modelu poprzez pozbycie się niektórych ukrytych twarzy jest obliczenie wklęsłego kadłuba, który może być użyty do odrzucenia ukrytych ścian (które są na przykład powierzchniami, które nie są blisko wklęsłego kadłuba). W zależności od tego, jak zaangażowany jest model, może to być konieczne lub nie.

ICP działa dobrze, jeśli otrzyma dobre początkowe przypuszczenie, ponieważ ignoruje punkty, które nie są zbliżone w stosunku do bieżącego wyniku. Jeśli ICP nie osiągnie dobrego wyrównania, możesz wypróbować je z kilkoma przypadkowymi restartami, aby spróbować rozwiązać ten problem, wybierając najlepsze wyrównanie.

Bardziej zaangażowane rozwiązanie polega na dopasowaniu funkcji lokalnych. Próbkujesz i obliczasz niezmienny deskryptor taki jak SHOT lub FPFH. Znajdujesz najlepsze dopasowania, odrzucasz niespójne dopasowania, używasz ich do dobrego początkowego dopasowania, a następnie udoskonalasz za pomocą ICP. Ale możesz nie potrzebować tego kroku w zależności od tego, jak solidny i szybki jest ICP z losowym restartem.

1

Istnieje biblioteka open source dla point cloud algorithms, która implementuje registration przeciwko innym chmurom punktów. Być może możesz wypróbować niektóre z ich metod, aby sprawdzić, czy pasuje.

Jako starter, jeśli nie mają nic konkretnego, aby zmieścić się w siatce wielokąta, można traktować wierzchołki siatki jako inną chmurę punktów i dopasować do niej chmurę punktów. To jest coś, co zdecydowanie popierają.

3

W nowym OpenCV zaimplementowałem moduł dopasowywania powierzchni, aby dopasować model 3D do sceny 3D. Początkowa pozycja nie jest wymagana, a proces wykrywania jest w pełni automatyczny. Model obejmuje również ICP.

, aby zorientować się, należy sprawdzić, czy na film tutaj (chociaż to nie jest generowany przez wdrożenie w OpenCV):

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

pełny kod źródłowy jest here i dokumentacja jest here.

Wspomniałeś, że musisz pobrać model CAD.Jest to prawidłowe i daliśmy algorytm próbkowania dostosowaną do punktu pary funkcji dopasowania, takie jak ten, realizowany w OpenCV:

punkt pomiarowy Algorytm 3D Matching nieregularnych Geometrie, Tolga Birdal Slobodan Ilic

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

+0

film wygląda interesująco, ale ta odpowiedź brakuje wymaganych informacji do powielania wyników. Czy mógłbyś podsumować zastosowane podejście i pokazać odpowiednie wywołania OpenCv? Czy gdzieś jest dostępny pełny kod? – HugoRune

+0

Pełny kod jest dostępny pod adresem https://github.com/tolgabirdal/opencv_contrib/tree/master/modules/surface_matching –