Spisu treści:
- Krok 1: Wprowadzenie
- Krok 2: Oprogramowanie
- Krok 3: Konfiguracja sprzętu
- Krok 4: Eksperymentowanie ze skanerem
- Krok 5: Inne wyniki skanowania
- Krok 6: GUI skanera 3D
Wideo: DIY Skaner 3D oparty na świetle strukturalnym i wizji stereo w języku Python: 6 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Ten skaner 3D został wykonany przy użyciu tanich konwencjonalnych elementów, takich jak projektor wideo i kamery internetowe. Skaner 3D światła strukturalnego to urządzenie skanujące 3D do pomiaru trójwymiarowego kształtu obiektu za pomocą rzutowanych wzorów światła i systemu kamer. Oprogramowanie zostało opracowane na podstawie światła strukturalnego i wizji stereo z językiem Pythona.
Rzutowanie wąskiego pasma światła na trójwymiarową powierzchnię tworzy linię oświetlenia, która wydaje się zniekształcona z innych perspektyw niż rzutnik i może być wykorzystana do dokładnej geometrycznej rekonstrukcji kształtu powierzchni. Poziome i pionowe pasy światła są rzutowane na powierzchnię obiektu, a następnie przechwytywane przez dwie kamery internetowe.
Krok 1: Wprowadzenie
Automatyczne urządzenia do akwizycji 3D (często nazywane skanerami 3D) pozwalają na budowanie bardzo dokładnych modeli rzeczywistych obiektów 3D w sposób efektywny kosztowo i czasowo. Eksperymentowaliśmy z tą technologią w skanowaniu zabawki, aby udowodnić jej wydajność. Specyficzne potrzeby to: średnio-wysoka dokładność, łatwość obsługi, przystępny koszt urządzenia skanującego, samodzielne rejestrowanie danych o kształcie i kolorze, wreszcie bezpieczeństwo operacyjne zarówno dla operatora, jak i skanowanych obiektów. Zgodnie z tymi wymaganiami zaprojektowaliśmy tani skaner 3D oparty na świetle strukturalnym, który przyjmuje wszechstronne podejście do wzorów kolorowych pasków. Przedstawiamy architekturę skanera, przyjęte technologie oprogramowania oraz pierwsze efekty jego zastosowania w projekcie dotyczącym pozyskania zabawki 3D.
Projektując nasz tani skaner, zdecydowaliśmy się wdrożyć jednostkę emitującą za pomocą projektora wideo. Powodem była elastyczność tego urządzenia (umożliwiająca eksperymentowanie z dowolnym rodzajem wzoru świetlnego) oraz jego szeroka dostępność. Czujnik może być urządzeniem niestandardowym, standardowym aparatem cyfrowym lub kamerą internetową. musi obsługiwać wysokiej jakości przechwytywanie kolorów (tj. akwizycję dużego zakresu dynamicznego) i możliwie z wysoką rozdzielczością.
Krok 2: Oprogramowanie
Język Python był używany do programowania z trzech powodów, jeden jest łatwy do nauczenia i implementacji, dwa możemy użyć OPENCV do procedur związanych z obrazami, a trzy można go przenosić między różnymi systemami operacyjnymi, dzięki czemu możesz używać tego programu w systemie Windows, MAC i Linux. Możesz również skonfigurować oprogramowanie do współpracy z dowolnym rodzajem kamery (kamerami internetowymi, lustrzankami lub kamerami przemysłowymi) lub projektorem o natywnej rozdzielczości 1024X768. Lepiej używać kamer o rozdzielczości ponad dwukrotnej. Osobiście przetestowałem wydajność w trzech różnych konfiguracjach, pierwsza była z dwiema równoległymi kamerami kinowymi Microsoft i małym przenośnym projektorem, druga była z dwiema kamerami kinowymi Lifecam, które obracały się o 15 stopni względem siebie i projektorem Infocus, ostatnia konfiguracja była z kamerami firmy logitech i projektor Infocus. Aby uchwycić chmurę punktów powierzchni obiektu, należy przejść przez pięć kroków:
1. Wyświetlanie wzorów szarości i przechwytywanie obrazu z dwóch kamer "SL3DS1.projcapt.py"
2. Przetwarzanie 42 obrazów z każdej kamery i kodów punktów przechwytywania „SL3DS2.procimages.py”
2. Regulacja progu wyboru maskowania dla obszarów do obróbki "SL3DS3.adjustthresh.py"
4. Znajdź i zapisz podobne punkty w każdej kamerze "SL3DS4.calcpxpy.py"
5 Oblicz współrzędne X, Y i Z chmury punktów „SL3DS5.calcxyz.py”
Wynikiem jest plik PLY z informacjami o współrzędnych i kolorze punktów na powierzchni obiektu. Możesz otwierać pliki PLY za pomocą oprogramowania CAD, takiego jak produkty Autodesk lub oprogramowania typu open source, takiego jak Meshlab.
www.autodesk.com/products/personal-design-a…
Aby uruchomić te programy w Pythonie, należy zainstalować Python 2.7, moduł OPENCV i NUMPY. Opracowałem również GUI dla tego oprogramowania w TKINTER, które można znaleźć w kroku szóstym z dwoma przykładowymi zestawami danych. Dodatkowe informacje na ten temat można znaleźć na następujących stronach internetowych:
docs.opencv.org/modules/calib3d/doc/camera_…
docs.opencv.org/modules/highgui/doc/reading…
www.3dunderworld.org/software/
arxiv.org/pdf/1406.6595v1.pdf
mesh.brown.edu/byo3d/index.html
www.opticsinfobase.org/aop/fulltext.cfm?uri…
hera.inf-cv.uni-jena.de:6680/pdf/Brauer-Bur…
Krok 3: Konfiguracja sprzętu
Sprzęt składa się z:
1. Dwie kamery internetowe (Logitech C920C)
2. Projektor Infocus LP330
3. Statyw kamery i projektora (wykonany z płyt akrylowych 3 mm i drewna HDF 6 mm wycinanego laserowo)
Dwie kamery i projektor należy podłączyć do komputera z dwoma wyjściami wideo, np. notebooka, a ekran projektora skonfigurować jako rozszerzenie pulpitu głównego systemu Windows. Tutaj możesz zobaczyć obrazy kamer, projektora i stojaka. Plik rysunku gotowy do wycięcia załączamy w formacie SVG.
Projektor to Infocus LP330 (rozdzielczość natywna 1024X768) o następujących specyfikacjach. Jasność:650 lumenów Natężenie światła barwnego:**Kontrast (Pełne wł./wył.):400:1 Automatyczna przysłona:Nie Rozdzielczość natywna:1024x768 Współczynnik proporcji:4:3 (XGA) Tryby wideo:**Tryby danych:MAX 1024x768 Moc maksymalna:200 W Napięcie:100V - 240V Rozmiar (cm) (WxSxG):6 x 22 x 25 Waga:2,2 kg Żywotność lampy (pełna moc): 1 000 godziny Typ lampy:UHPL Moc lampy:120 W Ilość lampy:1 Typ wyświetlacza:2 cm DLP (1) Standardowy obiektyw zmiennoogniskowy: 1,25:1 Ostrość:Ręczny Rzut Odległość (m): 1,5 - 30,5 Rozmiar obrazu (cm): 76 - 1971
Ten projektor wideo służy do rzutowania uporządkowanych wzorów świetlnych na skanowany obiekt. Strukturalny wzór składa się z pionowych i poziomych pasków białego światła, które są zapisywane w pliku danych, a kamery internetowe rejestrują te zniekształcone paski.
Najlepiej używać tych kamer, które są sterowane programowo, ponieważ musisz dostosować ostrość, jasność, rozdzielczość i jakość obrazu. Możliwe jest używanie lustrzanek cyfrowych z pakietami SDK, które są dostarczane przez każdą markę.
Montaż i testy przeprowadzono w Kopenhaskim Fablabie przy jego wsparciu.
Krok 4: Eksperymentowanie ze skanerem
Do testowania systemu została użyta zabawka-ryba i można zobaczyć przechwycony obraz. Cały przechwycony plik, a także wyjściowa chmura punktów znajduje się w załączonym pliku, możesz otworzyć plik chmury punktów PLY za pomocą Meshlab:
meshlab.sourceforge.net/
Krok 5: Inne wyniki skanowania
Tutaj możesz zobaczyć skany ludzkiej twarzy i skan 3d ściany. Zawsze są jakieś punkty odstające z powodu odbić lub niedokładnych wyników obrazu.
Krok 6: GUI skanera 3D
Aby przetestować oprogramowanie do skanowania 3d w tym kroku, dodaję dwa zestawy danych, jeden to skan ryby, a drugi to tylko płaska ściana, aby zobaczyć dokładność. Otwórz pliki ZIP i uruchom SL3DGUI.py. Aby zainstalować, sprawdź krok 2. Wyślij wiadomość na moją skrzynkę odbiorczą, aby uzyskać wszystkie kody źródłowe.
Aby użyć części do skanowania 3d, musisz zainstalować dwie kamery i projektor, ale w przypadku innych części wystarczy kliknąć przycisk. Aby przetestować przykładowe dane, najpierw kliknij proces, następnie próg, dopasowanie stereo i na końcu chmurę punktów. Zainstaluj Meshlab, aby zobaczyć chmurę punktów.
meshlab.sourceforge.net/
Zalecana:
Hakowanie Hexbug Spider XL w celu dodania wizji komputerowej za pomocą smartfona z Androidem: 9 kroków (ze zdjęciami)
Hakowanie Hexbug Spider XL w celu dodania wizji komputerowej za pomocą smartfona z systemem Android: Jestem wielkim fanem oryginalnego Hexbug™ Pająk. Mam już kilkanaście i zhakowałem je wszystkie. Za każdym razem, gdy jeden z moich synów idzie do przyjaciół’ przyjęcie urodzinowe, przyjaciel dostaje Hexbug™ pająk w prezencie. Zhakowałem lub
Trwałość wizji DIY: 6 kroków (ze zdjęciami)
DIY Persistence of Vision: W tym projekcie przedstawię perspektywę widzenia lub wyświetlacz POV z kilkoma materiałami eksploatacyjnymi, takimi jak Arduino i czujniki Halla, aby stworzyć obrotowy wyświetlacz, który wyświetla wszystko, co chcesz, takie jak tekst, czas i inne znaki specjalne
Generator muzyki oparty na pogodzie (generator Midi oparty na ESP8266): 4 kroki (ze zdjęciami)
Generator muzyki oparty na pogodzie (Generator Midi oparty na ESP8266): Cześć, dzisiaj wyjaśnię, jak zrobić własny mały generator muzyki oparty na pogodzie. Jest oparty na ESP8266, który jest trochę jak Arduino i reaguje na temperaturę, deszcz i intensywność światła.Nie oczekuj, że sprawi, że całe utwory lub akordy będą pro
Prawdziwa działająca różdżka Harry'ego Pottera przy użyciu wizji komputerowej: 8 kroków (ze zdjęciami)
Prawdziwie działająca różdżka Harry'ego Pottera przy użyciu wizji komputerowej: „Każda wystarczająco zaawansowana technologia jest nie do odróżnienia od magii” - Arthur C. ClarkeKilka miesięcy temu mój brat odwiedził Japonię i miał prawdziwe doświadczenie czarodziejów w czarodziejskim świecie Harry'ego Pottera w Universal Studios, które stało się
GET1033 Kodowany procesor obrazu w języku Python: 5 kroków
GET1033 Python Coded Image Processor: Ten projekt dotyczy stworzenia mojego własnego kodowanego w Pythonie procesora obrazu dla mojego modułu, GET1033 Exploring Computational Media Literacy. Najpierw użytkownik będzie musiał wprowadzić własne zdjęcie, a następnie wybrać żądane filtry. Stworzyłem 9 filtrów, które