Skocz do zawartości
niciki

[Czujniki] Skaner 3D

Pomocna odpowiedź

Czyli jak przenieść obiekt rzeczywisty do świata wirtualnego?

W niniejszym artykule postaram się opisać sposób realizacji Skanera 3D – tak abyś mógł zrozumieć w jaki sposób on działa i spróbował samemu stworzyć lepszy 😉. Skaner ten powstał w Katedrze Systemów Automatyki na Wydziale Elektroniki Telekomunikacji i Informatyki Politechniki Gdańskiej w ramach projektu grupowego (semestr 8). Skaner ten służy do tworzenia modeli 3D w postaci chmury punktów skanowanych obiektów (przykładem może być poniższa chmura punktów pada od konsoli PlayStation).

Krótki wstęp...

Projekt ten łączy w sobie wiele dziedzin nauki m.in.: ogarnięcie AutoCAD'a; programowanie w MS Visual C++ z wykorzystaniem bibliotek OpenCV i OpenGL do wizualizacji modeli 3D; programowanie mikrokontrolerów 8-bitowych (obsługa portu szeregowego, implementacja protokółu komunikacyjnego, sterowanie silnikiem krokowym); opracowanie części matematyczno-fizycznej skanowania, czyli algorytmu przekształcania obrazu dwuwymiarowego z kamery na model trójwymiarowy.

Pomijając różne sposoby realizacji skanerów 3D oraz zastosowanie tych skanerów w przemyśle, przejdę od razu do opisu zrealizowanego skanera.

Projekt w AutoCADzie.

Realizacja.

Chmura punktów pada do konsoli PlayStation.

Części składowe...

Skaner ten składa się z kilku części:

- linijki laserowej (model LASER COMPONENTS FP-64/3LF-50)

- czarno-białej kamery cyfrowej (model Optosoft uEye®LE UI-1225LE)

- platformy obrotowej (wyjętej ze starego gramofonu) obracanej silnikiem krokowym

- oprogramowania (program mikrokontrolera oraz aplikacja na PC)

- konstrukcji mechanicznej

- elektroniki

Co możemy uzyskać dzięki temu urządzeniu? A chociażby to, że możemy użyć naszych własnych rzeczy na biurku w animacji komputerowej, lub w reklamie (po co tracić czas na modelowanie w programie graficznym np. telefonu komórkowego, jak możemy go zeskanować i potem narzucić na niego teksturę?).

Metoda skanowania...

Skanowanie odbywa się w następujący sposób:

- Kamera cyfrowa wykonuje serię zdjęć obiektu, który jest obracany na platformie obrotowej i jednocześnie oświetlany linijką laserową.

- Następnie każdy z tych obrazów jest progowany z zadanym progiem przez użytkownika

- Po czym wartości jasności każdego piksela obrazu oryginalnego, mnożona jest przez wartość jasności adekwatnego piksela w obrazie po progowaniu, w wyniku czego otrzymuje się sekwencję obrazów wynikowych.

- Potem następuje poszukiwanie i zapamiętywanie położenia środkowych pikseli linii laserowej w każdym wierszu zdjęcia.

Współrzędne (W, K) każdego wykrytego piksela obrazu są zapamiętywane i na ich podstawie obliczane jest położenie punktu w przestrzeni trójwymiarowej we współrzędnych kartezjańskich.

W tej realizacji Skanera łatwiej jest jednak opisać punkt we współrzędnych cylindrycznych, gdyż posiada on platformę obrotową.

Zasadność określenia położenia punktu we współrzędnych kartezjańskich wynika stąd, że obecnie wszystkie programy dostępne na rynku, które umożliwiają operacje na chmurze punktów – opisują punkt we współrzędnych kartezjańskich.

Obliczenie położenia analizowanego punktu w przestrzeni trójwymiarowej umożliwia kalibracja urządzenia w oparciu o obiekt wzorcowy o znanych wymiarach.

Obecnie obiektem wzorcowym jest płaska, biała, tektura o wymiarach 6x12 cm z podstawką.

Kalibracja układu Skanera 3D wymaga wykonania serii zdjęć kalibracyjnych. Serię tych zdjęć tworzy się przez fotografowanie obiektu wzorcowego w trzech określonych położeniach na platformie obrotowej.

Obiekt ten jest skanowany w trzech różnych położeniach na platformie (na środku oraz przy krawędzi z przodu i z tyłu). Analizując te trzy obrazy możemy wyznaczyć linie stałej wysokości Z od płaszczyzny platformy obiektu wzorcowego oraz linie stałej odległości R tego obiektu od osi platformy.

Rys. Schematyczne przedstawienie trzech sytuacji na platformie obrotowej, gdy jeden obiekt wzorcowy znajduje się w trzech wspomnianych położeniach. Po lewej zobrazowano trzy położenia obiektu wzorcowego oświetlanego linią laserową. Po prawej przedstawiono połączenie trzech adekwatnych obrazów z kamery. Liniami czerwonymi zaznaczono linie stałej wysokości Z, liniami niebieskimi zaznaczono linie stałej odległości R tego obiektu od osi platformy, h jest wysokością obiektu wzorcowego, a r jest odległością tego obiektu od środka platformy.

Po co te linie?

Znając położenie linii stałych wartości można każdemu pikselowi zdjęcia przypisać współrzędne cylindryczne R i Z, które można zapisać w dwóch tablicach o wymiarach równych wymiarom zdjęć wykonywanych przez kamerę. Trzecia współrzędna φ jest taka sama dla każdego piksela danego zdjęcia i równa jest wartości kąta obrotu platformy, przy jakim zostało zrobione dane zdjęcie (wartość ta jest znana dzięki zastosowaniu silnika krokowego i zliczeniu jego kroków).

Przykładowo:

Położenie pierwszego piksela zdjęcia odnosi się do pierwszego elementu w tablicach R i Z.

Natomiast położenie ostatniego piksela zdjęcia odnosi się do ostatniego elementu:

Współrzędne znalezionych pikseli, które odpowiadają środkowi linii laserowej w każdym wierszu obrazu, określają element w tablicach R oraz Z, gdzie zapisana jest informacja o położeniu danego punktu w przestrzeni 3D we współrzędnych cylindrycznych. Wówczas, znając wartości trzech współrzędnych cylindrycznych (r, z oraz φ), realizuje się przekształcenie z układu cylindrycznego do układu kartezjańskiego zgodnie z poniższą zależnością:

Wady...

Skaner ten ma jednak poważną wadę - nie wszystkie obiekty możemy skanować za pomocą tego Skanera.

Biorąc pod uwagę fakt, że Skaner 3D wykorzystuje wiązkę promieniowania czerwonego lasera, wszystkie obiekty przezroczyste są dla niego niewidoczne, ponieważ wiązka promieni nie odbija się od skanowanego obiektu i nie wpada do obiektywu kamery.

Podobnie jest dla obiektów czarnych, w przypadku których wiązka promieniowania może zostać pochłonięta przez obiekt do takiego stopnia że, tak jak poprzednio, kamera nie zarejestruje linii lasera.

Z kolei w przypadku obiektów silnie refleksyjnych występuje niekorzystne zjawisko wielokrotnego odbicia wiązki laserowej od obiektu, czego skutkiem są błędy położenia punktów w modelu 3D skanowanego obiektu.

»

__________

Komentarz dodany przez: Sabre

Czy kolega ma zgodę na publikację tego artykułu od pozostałych osób, które nad nim pracowały?

1.thumb.jpg.2785eb7c9159605a27aafd7a403489a6.jpg

Udostępnij ten post


Link to post
Share on other sites

Tak, mam zgodę wszystkich, którzy uczestniczyli w tym projekcie oraz zgodę promotora.

Udostępnij ten post


Link to post
Share on other sites

W takim razie artykuł opublikowany, a powyższa wiadomość zostaje dla pewności 😉

Udostępnij ten post


Link to post
Share on other sites

Zero komentarzy? Brak pytań do czegokolwiek z Waszej strony? Jak oceniacie ten artykuł?

Udostępnij ten post


Link to post
Share on other sites
Zero komentarzy? Brak pytań do czegokolwiek z Waszej strony? Jak oceniacie ten artykuł?

A czego się spodziewałeś? Związek z robotyką amatorską niezbyt duży, mógłbym się nawet pokusić o stwierdzenie, że zerowy, ale na upartego coś można wymyślić.

Udostępnij ten post


Link to post
Share on other sites

Sprytne rozwiązanie. Rozumiem, że nie musicie się przejmować żadną równoległością osi optycznej i płaszczyzny lasera itd.? Rozdzielczość 752 x 480 jest wystarczająca czy wręcz jeszcze zmniejszacie zdjęcie? Robicie jakiś subsampling albo inną sztuczkę?

Nie występuje problem zasłaniania nawet przy prostych kształtach?

Udostępnij ten post


Link to post
Share on other sites
Rozumiem, że nie musicie się przejmować żadną równoległością osi optycznej i płaszczyzny lasera itd.?

Skaner ten do pomiaru położenia punktu wykorzystuje metodę triangulacji, a więc właściwie to korzysta się z tego, że oś kamery i płaszczyzna lasera nie są równoległe 😉

Rozdzielczość 752 x 480 jest wystarczająca czy wręcz jeszcze zmniejszacie zdjęcie? Robicie jakiś subsampling albo inną sztuczkę?

Rozdzielczość ta jest aż nadto wystarczająca. Z jednego skanu np. kubka otrzymuje się od 60 tys. do 200 tys. punktów (w zależności o wybranego kąta skanowania), co jest wartością ogromną do dalszej obróbki (np. tworzenia modelu powierzchniowego). Często z tego powodu redukuje się liczbę punktów np. przez wybieranie tylko co 3-go jasnego piksela stanowiącego linię laserową w kolumnie obrazu.

Nie występuje problem zasłaniania nawet przy prostych kształtach?

W jednym skanie z jedną kamerą problem ten występować będzie zawsze. Aby temu zaradzić można dodatkowo:

a) użyć kolejnej kamery

b) wykonać kolejny skan tego samego obiektu w innej orientacji, po czym połączyć obie otrzymane chmury punktów (moja praca dyplomowa dotyczyła m.in. stworzenia algorytmu rozwiązującego właśnie ten problem)

Udostępnij ten post


Link to post
Share on other sites

Właśnie pomyślałem o triangulacji i dlatego się zastanawiałem czy rozdzielczość nie wpływa na dokładność określenia odległości, bo jedna z długości w trójkącie może być niedokładnie wyznaczona. Sprawdzaliście może jaką macie dokładność (rozkład i wariancja)? Np. tą kartkę testową i sprawdzić jaki jest rozkład odległości wyznaczonych punktów od płaszczyzny, którą powinno dać się wyznaczyć na komputerze. Sądziłem, że może np w każdym wierszu w każdej grupie jasnych pikseli bierzecie środek.

Udostępnij ten post


Link to post
Share on other sites

Rozdzielczość kamery ma wpływ na liczbę punktów w wynikowej chmurze, ma też wpływ na dokładność określenia linii stałej wysokości (przez co dokładność położenia punktów w przestrzeni 3D).

Niestety nie sprawdzaliśmy dokładnie dokładności. Wiem, że kiedy skanowaliśmy but kolegi to dokładność była rzędu 0.01 cm, ale należałoby zrobić tak jak mówi OldSkull, czyli pomiar rozkładu i wariancji, ale nie w oparciu o obiekt wzorcowy, a o inny obiekt, którego wymiary są z góry znane (np. kostka rubika).

Sądziłem, że może np w każdym wierszu w każdej grupie jasnych pikseli bierzecie środek.

W wierszach brany jest środek ciężkości linii (w sensie jasności 8-bitowej), a nie zwykły środek linii. Ja mówiłem o kolumnach obrazu (bo linia lasera jest pionowa) już po wybraniu środków ciężkości. Można wybrać czy mają być brane wszystkie piksele, czy co 3-ci (aby zmniejszyć liczbę punktów do dalszej obróbki).

Udostępnij ten post


Link to post
Share on other sites
W wierszach brany jest środek ciężkości linii (w sensie jasności 8-bitowej), a nie zwykły środek linii. J

Właśnie o to mi chodziło jako "subsampling".

W ile osób tworzyliście to cudo?

Udostępnij ten post


Link to post
Share on other sites

Skaner ten stworzyły 4 osoby:

Rafał Dudek

Bartosz Gwizdała

Daniel Nitecki (ja)

Jakub Nowak

Wiedzę zdobyliśmy ucząc się na Politechnikce Gdańskiej.

Mówiąc ściślej: ja na Katedrze Systemów Automatyki, a koledzy na Katedrze Systemów Decyzyjnych.

Udostępnij ten post


Link to post
Share on other sites

Odgrzję trochę temat - bo mnie zainteresował. Naprawdę ciekawy projekt i godny uwagi.

Mam pytanie odnośnie tego - jakie parametry aparatu powinnienm znać, żeby móc obliczyć punkty przy użyciu triangulacji... Jak połączyć "parametry" aparatu z obliczeniami położenia punktu...

Gdzie mógłbym poczytać na ten temat coś więcej...

Udostępnij ten post


Link to post
Share on other sites
jakie parametry aparatu powinnienm znać, żeby móc obliczyć punkty przy użyciu triangulacji...

Wystarczy Ci rozdzielczość aparatu/kamery i szybkość robienia zdjęć.

Jak połączyć "parametry" aparatu z obliczeniami położenia punktu...

Nasza metoda wykorzystuje odwzorowanie każdego piksela kamery. Odwzorowanie to tablica o rozmiarze robionych zdjęć (w tym przypadku niespełna 800x600).

Elementy tej tablicy są określane na podstawie znajomego obiektu (obiektu wzorcowego), którym w naszym przypadku była prostokątna cienka pionowa tektura o wymiarze 120x60mm. Tekturkę stawialiśmy na skraju platformy obrotowej, oświetlaliśmy ją linijką laserową i robiliśmy zdjęcia przy włączonym obrocie platformy. Jako, że stała przy skraju platformy to odległość od środka talerza wynosi zawsze r - promień platformy (na dwóch zdjęciach, najbliżej i najdalej kamery, odległość od środka talerza jest ta sama - stąd odwzorowanie odległości). Wyszło nam, że odwzorowanie odległości od środka talerza dobrze przybliżane jest funkcją kwadratową. Natomiast wysokość tektury na dwóch zdjęciach kamery (gdy tekturka była bliżej kamery i dalej kamery) dała info o liniach stałej wysokości na obrazie kamery - stąd odwzorowanie linii stałej wysokości. Wyszło nam, że odwzorowanie wysokości dobrze przybliżane jest przez funkcję liniową.

Gdzie mógłbym poczytać na ten temat coś więcej...

Podam Ci spis literatury, z której korzystałem przy opracowaniu tego projektu.

1. J.A. Beraldin, F. Blais, P. Boulanger, and M. Rioux. Range imaging sensors

development at NRC laboratories. Proc. IEEE Workshop Interpretation 3D Scenes,
pages 154–160, 1989.

2. P.J. Besl and N.D. McKay. A Method for Registration of 3-D Shapes. IEEE Trans.

Pattern Analysis and Machine Intelligence, 14(2):239–256, luty 1992.

3. F. Blais. Review of 20 Years of Range Sensor Development. Journal of Electronic

Imaging, styczen 2004. National Research Council Canada, Ottawa, Ontario.

4. M. Bubicz. Raport: szybkie prototypowanie cz. II Skanery 3D. Rodzaje, sposób

działania, przeglad dostepnych rozwiazan. Projektowanie i Konstrukcje Inzynierskie,
6(09):12–21, czerwiec 2008.

5. S. Chaudhuri and A. Rajagopalan. Depth from defocus: a real aperture imaging

approach. Springer Verlag, 1999.

6. D. Sciebura. Uzyskiwanie obrazu 3D obiektów za pomoca wizyjnego systemu, zrobotyzowanego

stanowiska spawalniczego. Master’s thesis, Politechnika Gdanska,
2008.

7. N. D’Apuzzo. Overview of 3D surface digitization technologies in Europe. Three-

Dimensional Image Capture and Applications VI, 2006. Proc. of SPIE-IS&T Electronic

Imaging, SPIE Vol. 6056, San Jose (CA), USA.

8. G. Gruener, J.W. Weingarten, and R. Siegwart. Inspection of surface by the

Moire method. Measurement Science Review, 1(1):29 – 32, 2001. Slovak Institute

of Metrology, Bratislava.

9. G. Gruener, J.W. Weingarten, and R. Siegwart. A State-of-the-Art 3D Sensor

for Robot Navigation. Intelligent Robots and Systems, 3:2155 – 2160, wrzesien/

pazdziernik 2004. Three-Dimensional Image Capture and Applications VII.

10. S. Kumar, M.L. Smith, and L.N. Smith. An Overview of Passive and Active Vision

Techniques for Hand-Held 3D Data Acquisition. Proceedings of SPIE, 4877:16–27,
2003. Opto-Ireland: Optical Metrology, Imaging and Machine Vision.

11. T. Masuda, K. Sakaue, and N. Yokoya. Registration and Integration of Multiple

Range Images for 3-D Model Construction. Proceedings of ICPR, 1996. Nara

Institute of Science and Technology, Ikoma, Nara 630-01, Japan.

12. R.J. Woodham. Photometric method for determining surface orientation from

multiple images. Optical Engineerings, 19(1):139–144, styczen/luty 1980.

Udostępnij ten post


Link to post
Share on other sites

Dzięki za odpowiedź i za literature zaraz będe - napewno skorzystam...

Z góry przepraszam za banalne i mozę nie dokońca sprecyzowane pytania, ale jestem można powiedzieć, że z tą dziedziną dopiero zaczynam przygodę... a najłatwiej czegoś się nauczyć pytając.

Jeszcze takie pytania:

1.

wartości jasności każdego piksela obrazu oryginalnego, mnożona jest przez wartość jasności adekwatnego piksela w obrazie po progowaniu, w wyniku czego otrzymuje się sekwencję obrazów wynikowych.

Po to żeby "linia lasera" była bardziej widoczna?

2. Rozumiem, że kamera i laser są umocowane na stałe i znacie kąty potrzebne przy triangulacji.

3. Przy obrocie platformy o ileś tam stopni kolejne piksele dla "linii lasera" na kolejnym już zdjęciu były przesuwane w tablicy o wartość kąta o który platforma została obrócona?

4. Teraz jeżeli chodzi o samą triangulację w jaki sposób ona jest wykonywana? Tzn. piszesz tutaj o współrzędnych cylindrycznym (r, z, φ) i teraz tak rozumiem, że te "r" i "z" to jest "w" i "k" . φ - to kąt obrotu (poczatkowy kat dla pierwszego zdjęcia wynosi 0? tak). Czyli mając te punkty w jaki sposób obliczasz położenie danego piksela w układzie przestrzennym. Tylko korzystając ze wzoru na przejsćie do układu kartezjańskiego? Czy jeszcze potrzebne są wzory triangulacji?

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...