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.
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
Pełny kod jest dostępny pod adresem https://github.com/tolgabirdal/opencv_contrib/tree/master/modules/surface_matching –