Próbuję automatycznie wykryć oś obrotu w 3d pointcloud.Wykrywanie osi obrotu z punktu obrotu
Innymi słowy, jeśli wziąłem mały trójwymiarowy punkt, wybrałem pojedynczą oś obrotu i wykonałem kilka kopii punktów pod różnymi kątami obrotu, wtedy dostanę większy pointcloud.
Dane wejściowe do mojego algorytmu to większa liczba punktów, a pożądanym wynikiem jest pojedyncza oś symetrii. I w końcu zamierzam obliczyć zależności pomiędzy punktami, które są wzajemnymi obrotami.
Rozmiar większego worka pointcloud jest rzędu 100K punktów, a liczba wykonanych kopii obrotowych jest nieznana.
Kąty obrotu w moim przypadku mają stałe delty, ale niekoniecznie rozciągają się o 360 stopni. Na przykład, mogę mieć 0, 20, 40, 60. Albo mogę mieć 0, 90, 180, 270. Ale nie będę miał 0, 13, 78, 212 (a jeśli tak, to nie obchodzi mnie to aby to wykryć).
Wydaje się, że jest to problem z widzeniem komputerowym, ale mam problem z ustaleniem osi. Dane wejściowe będą generalnie bardzo czyste, zbliżone do dokładności pływaka.
Nie mam oryginalnego mniejszego chmurki, która została obrócona/skopiowana, aby utworzyć większy punkt. Wiem, że dane są syntetyczne z bardzo niewielkim hałasem (generalnie jest to wynik innego programu).
Nie możemy łatwo obliczyć możliwych liczb punktów w mniejszej chmurze, ponieważ w prawo wzdłuż osi punkty nie są zdublowane, niestety. Gdybyśmy wiedzieli, które punkty znajdują się wzdłuż osi, moglibyśmy wymyślić możliwe czynniki, ale wtedy rozwiązalibyśmy problem.
-
Dziękuję wszystkim za sugestie. Wygląda na to, że mój ostateczny algorytm spróbuje wymyślić kliknięcia pasujących punktów za pomocą metryki k-nn. Każda klika da oś. Mogę następnie użyć RANSAC, aby dopasować oś do wyników wszystkich klik.
Czy masz początkową (małą) chmurę punktów jako odniesienie, czy nie? Jeśli nie, to ten problem jest prawdopodobnie nierozstrzygalny z jakąkolwiek prawdziwą pewnością. –
Nie mam pełnej odpowiedzi, ale początkowa heurystyka mówi, że gęstość punktu będzie większa w pobliżu osi. – tloflin
Nie dla wielu chmur punktów. Punkty ułożone na krawędzi płaskiego okręgu obróconego wokół środka okręgu nie będą wykazywać żadnego skupienia wokół osi. To samo dotyczy sytuacji, gdy większość punktów nie jest symetryczna względem osi lub jest daleko od rzeczywistej osi obrotu. –