Jak mogę zrekonstruować strukturę 3D z zestawu obrazów?

24

Mam zestaw konturów (zestaw segmentów linii) pogrupowanych w następujący sposób:

S.ja={ja0,jaπ4,ja2)π4,,ja7π4}

gdzie

  • S.ja oznacza sekwencję zdjęć jednego konkretnego obiektu.
  • jajot oznacza obraz z punktem widzenia ( oznacza widok z przodu). jotthjot=0

Oto przykład (widok z tyłu): jaπ

wprowadź opis zdjęcia tutaj

Jak mogę zrekonstruować strukturę 3D obiektu za pomocą danych ?S.ja

Czy ktoś może wskazać mi jakieś dokumenty, a nawet podać kilka słów kluczowych? Wiem, że istnieje wiele artykułów, które działają z chmurami punktów i tak dalej, ale te nie działają, ponieważ pracuję z liniami.

mniam mniam mniam
źródło

Odpowiedzi:

20

W rzeczywistości jest to dość trudny temat. Klasyczna rekonstrukcja 3D z wieloma widokami zajmuje się przede wszystkim dopasowywaniem punktów, tj. Znajdowaniem tego samego punktu na każdym obrazie. Biorąc pod uwagę parametry kamery (widok) dla każdego obrazu, oryginalny punkt 3d można odtworzyć. (Za pomocą lasera lub projektora scenę można oświetlić, aby dopasowanie można było stosunkowo łatwo.)

Biblią tego pola jest geometria wielokrotnego widzenia w wizji komputerowej autorstwa Hartleya i Zissermana

W książce znajduje się sekcja o tensorze trójogniskowym, który jest wieloliniowym ograniczeniem między 3 widokami. Zawiera nie tylko ograniczenia korespondencji punktowej, ale także liniowej. Można go bardzo dobrze wykorzystać do rekonstrukcji budynków.

Dlatego najpierw należy dopasować kontury i być może można je odtworzyć, znając parametry kamery (kalibracja kamery jest również opisana w książce). Wtedy będziesz miał kontury w 3D, ale nic więcej. W przypadku rzeczywistych powierzchni musisz dopasować gęsty punkt. Chociaż wspomniany tensor wygląda dobrze, jest używany do linii prostych i jestem pewien, że nowoczesny samochód ma zakrzywione linie.

Nie wiem, skąd masz te kontury, ale widząc opublikowany obraz, jestem dość sceptyczny co do solidności tego algorytmu, więc rekonstrukcja będzie kiepska.

Inną metodą, jaka przyszła mi do głowy, jest wizualny kadłub lub rzeźba w przestrzeni kosmicznej . Należy również wykonać obliczenia konturowe. Uruchamiając metodę na każdym konturze, możesz mieć model.

Bálint Fodor
źródło
π/4
1
Nie widzę, jak uzyskać punkt 3D poza konturem poprzez projekcję. Istnieją techniki modelowania 3D dotyczące powierzchni NURBS rozciągniętych między splajnami, ale do tego trzeba podać charakterystyczne splajny. (Być może artysta 3d mógłby zdefiniować słowo charakterystyczne w tym kontekście, ale nie ja.) Ponownie myślę, że kształt z konturu (taki sam jak kadłub wizualny) może stworzyć dla ciebie szorstki model. Następnie możesz udoskonalić go na podstawie zdjęć. Ale nie ma na to standardowych sposobów.
Bálint Fodor
2

Chociaż wspomniana przez Fodora Hartleya i Zissermana książka jest zdecydowanie warta przeczytania, jest bardziej ogólnego zrozumienia niż praktycznych algorytmów. Jest dość przestarzały i te metody nie są wydajne. O twoim problemie - samo sformułowanie problemu jest bardzo rzadkie. Jak wspomniał Fodor, rozpoczęcie od dopasowania punktów charakterystycznych zamiast konturów jest znacznie łatwiejsze. W przypadku punktów absolutnie najlepszym przeglądem dostępnych nowoczesnych metod jest artykuł Triggsa „Dostosowanie pakietu - nowoczesna synteza”. Ale przed użyciem dopasowania pakietu należałoby dopasować odpowiedni punkt na obrazach, używając czegoś takiego jak SIFT lub dopasowanie szablonu. Rekonstrukcja Google dla 3Ddla przykładów niektórych kompletnych metod. Możesz także użyć do tego pakietów open source, dostępnych jest kilka.

Jeśli nalegasz na użycie konturów, problem jest o wiele trudniejszy, choć nadal (ledwo) możliwy do rozwiązania. Najpierw musisz zidentyfikować i dopasować odpowiednie kontury na wszystkich obrazach, a następnie zapisać funkcję kosztu - sumy błędów ponownej projekcji dla każdej dopasowanej grupy konturów jako funkcję z pozycji kamery i orientacji każdego obrazu. Następnie znajdź zestaw pozycji kamery, który minimalizuje tę funkcję kosztów. Każdy etap tego procesu jest niezwykle trudny i nie ma dobrego przeglądu takiego jak Triggs. Możesz znaleźć w Google kilka odpowiednich dokumentów, ponieważ niektóre kombinacje terminów „kontury”, „kontury pasujące”, „korekta pakietu”, „błąd powtórzenia”, „rekonstrukcja 3D”.

mirror2image
źródło
Chociaż zdecydowanie łatwiej jest poradzić sobie z funkcjami podobnymi do SIFT, istnieje problem, że SIFT w mojej domenie często łapie cienie / odbicia na błyszczącej powierzchni samochodu, więc za pomocą SIFT otrzymuję ogromną liczbę funkcji hałasu, które nie zależą od faktycznego kształt samochodu stąd mam zmniejszoną dokładność.
om-nom-nom
Możesz wypróbować podejście oparte na modelu, jeśli wiesz, że patrzysz na samochód. Sparametryzuj ogólny model samochodu i spróbuj dopasować go do obrazu przy użyciu wszystkich pikseli obrazu. Napisz funkcję kosztu jako funkcję parametrów kamery i parametru modelu samochodu i zminimalizuj ją. Może działać (lub nie) - wydaje się, że masz dość trudny problem.
mirror2image 11.09.11
Niestety nie zrozumiałem, co zaproponowałeś. Podaj przykład (może to być artykuł zewnętrzny, powiązana praca lub coś takiego).
om-nom-nom
Mam na myśli model aktywnego kształtu en.wikipedia.org/wiki/Active_shape_model lub coś podobnego
mirror2image
2

Sprawdź rekonstrukcję modelu z obrazów, która nieco różni się od tego, co robisz, ale mówię o tym, jak przejść z obrazów do modelu 3d. Sprawdź także MeshLab , ma on pewne algorytmy rekonstrukcji, do których możesz być w stanie wprowadzić swoje dane.

yxk
źródło