Spisu treści:
- Krok 1: Oceń złożoność zadania
- Krok 2: Znajdź właściwe podejście
- Krok 3: Oblicz histogram Theta
- Krok 4: Oblicz histogram Rho
- Krok 5: Znajdź węzeł centralny
- Krok 6: Wybierz spośród 2 alternatyw
- Krok 7: Określ narożniki zewnętrzne
- Krok 8: Wypróbuj w praktyce
Wideo: Rekonstrukcja 3D z jednego zdjęcia: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Zadanie rekonstrukcji 3D zwykle wiąże się z widzeniem obuocznym. Alternatywnie możesz poruszać pojedynczą kamerą wokół obiektu. Tymczasem, jeśli znany jest kształt obiektu, zadanie można rozwiązać z jednego zdjęcia. Oznacza to, że masz tylko jedną kamerę, która się nie porusza. Zobaczmy, jak to zrobić krok po kroku. Wykorzystamy kostkę Rubika, ponieważ jest dobrze wystandaryzowana i ma bogaty zestaw funkcji. Można go uznać za bardzo prosty obiekt, a jednocześnie skomplikowany konstrukt. Tak więc widzenie maszynowe musi pokonać znaczne przeszkody, aby wykonać zadanie.
Krok 1: Oceń złożoność zadania
Na pierwszy rzut oka zadanie jest proste. Znajdź centralny węzeł, w którym łączą się 3 krawędzie sześcianu i narysuj te krawędzie. Z ich współrzędnych można obliczyć odległość od kamery i kąty obrotu. Problem w tym, że te linie nie istnieją. Na lewym obrazku widać, że każda krawędź jest reprezentowana przez 2 równoległe linie. Ponadto prawy górny obrazek pokazuje, że każdy z nich jest podzielony na 3 segmenty. Co więcej, jeśli zastosujemy odmianę popularnej transformacji Hougha, która potrafi wykrywać odcinki linii, to wykonuje zadanie z pewnymi błędami, które uniemożliwiają wykrycie węzła centralnego. Jeśli końce nie stykają się ze sobą, nie ma jednego punktu. Jeśli detekcja przekroczy koniec, będzie wyglądać jak węzeł na środku krawędzi, jak widać na dwóch pozostałych obrazach.
Krok 2: Znajdź właściwe podejście
Gdy zbyt wiele szczegółów uniemożliwia działanie algorytmów deterministycznych, czas rozważyć podejście probabilistyczne. Jeśli obliczymy uśrednione parametry obrazu, ich błędy zostaną znacznie zmniejszone i paradoksalnie metoda okaże się bardziej wiarygodna. Standardowa transformacja Hougha nie wyświetla segmentów linii. Tylko jego nachylenie theta i odległość rho od początku współrzędnych. Tworzą one część przestrzeni Hough, którą pokazano powyżej. Tutaj theta odpowiada osi poziomej. Jasne plamy oznaczają ewentualne linie na obrazie. Zauważ, że kilka takich miejsc znajduje się jeden nad drugim. Nic dziwnego, na naszym obrazie jest wiele równoległych linii. Mają to samo theta i różne rho.
Krok 3: Oblicz histogram Theta
Wykryjmy takie skupiska. W tym celu podsumujemy odczyty dla wszystkich kropek w przestrzeni Hough z tym samym theta. Zobaczysz odpowiedni histogram na ilustracji. Kilka uwag o pomiarach. Podczas pracy z obrazami o współrzędnych pikselowych oś X przebiega normalnie, ale Y wskazuje w dół, więc początek współrzędnych znajduje się w lewym górnym rogu, a theta należy mierzyć od osi X zgodnie z ruchem wskazówek zegara. Pamiętając, że cały zasięg theta na obrazie wynosi 180 stopni, możesz w przybliżeniu sprawdzić, czy 3 główne piki reprezentują 3 dominujące nachylenie na obrazie.
Krok 4: Oblicz histogram Rho
Teraz, gdy znamy 3 główne skupiska równoległych linii, oddzielmy linie w każdym z nich. Możemy powtórzyć to samo podejście. Weźmy kolumnę z przestrzeni Hougha, która odpowiada jednemu pikowi na histogramie theta. Następnie obliczymy kolejny histogram, w którym oś X reprezentuje wartość rho, a Y - zsumowane odczyty dla tego rho. Oczywiście suma będzie mniejsza, więc ten wykres nie jest tak gładki. Niemniej jednak piki są wyraźnie widoczne, a ich liczba (7) dokładnie odpowiada liczbie równoległych linii na obrazie źródłowym. Niestety nie wszystkie wykresy są tak doskonałe, ale zasada jest jasna.
Krok 5: Znajdź węzeł centralny
Jeśli weźmiemy środkowy pik na histogramie rho dla każdego theta, otrzymamy 3 linie, które na rysunku są czerwone. Ich przecięcie wyznacza niezbędny punkt.
Krok 6: Wybierz spośród 2 alternatyw
Widzisz, że każda linia biegnie od centralnego punktu w obu kierunkach. Jak określić właściwą połowę? Weźmy theta3. Załóżmy, że weźmiemy dolną część tej linii. Obliczmy jeszcze jedną przestrzeń Hougha tylko dla części obrazu od 2 zielonych linii do prawego górnego rogu obrazu. Następnie utwórz dla niego histogram theta. Widzisz, że trzeci pik całkowicie zniknął, więc dokonaliśmy właściwego wyboru.
Krok 7: Określ narożniki zewnętrzne
Teraz możemy użyć pierwszego i ostatniego piku na histogramach rho, aby narysować niebieskie linie, które przecinają czerwone krawędzie i zaznaczają pozostałe rogi. Zadanie rozwiązane.
Krok 8: Wypróbuj w praktyce
Ilustracje do tego Instructable zostały utworzone przy użyciu Percepcji 1.0. Jest to darmowe oprogramowanie, które wykorzystuje OpenCV - potężną bibliotekę do widzenia komputerowego. Może być również powiązany z WinNB, który był używany w moim innym Instructable, zapewniając w ten sposób zdolność widzenia dla robotyki. Oba programy można pobrać ze strony nbsite. Do instalacji wystarczy uruchomić pobrany plik exe. Później możesz go usunąć za pomocą standardowego narzędzia systemu Windows. Witryna zawiera również zasoby dotyczące wizji komputerowej i powiązanych tematów. W Percepcji znajdziesz opisaną metodę rekonstrukcji 3D oraz wiele innych. Zaletą tego programu jest to, że wyświetla wynik końcowy wraz z danymi pośrednimi. Jesteś w stanie zbadać, jak działa widzenie komputerowe, nie będąc programistą. Jeśli chodzi o dane wejściowe, każda metoda ma specjalnie dobrane typowe próbki. Oczywiście możesz też użyć własnego. Możliwe jest wprowadzanie obrazów z pliku lub z aparatu w komputerze. Zapraszam do kontaktu w przypadku jakichkolwiek pytań lub sugestii.
Zalecana:
Prosty przewodnik po naprawie uszkodzonych słuchawek BOSE QC25 - BRAK DŹWIĘKU z jednego ucha: 5 kroków (ze zdjęciami)
Prosty przewodnik po naprawie uszkodzonych słuchawek BOSE QC25 - BRAK DŹWIĘKU z jednego ucha: Firma Bose jest dobrze znana ze swoich słuchawek, a zwłaszcza z oferty aktywnej redukcji szumów. Kiedy po raz pierwszy założyłem parę QuietComfort 35 w sklepie elektronicznym, byłem zachwycony ciszą, jaką mogą stworzyć. Miałem jednak bardzo li
Gry z 4 przyciskami przy użyciu jednego wejścia analogowego: 6 kroków (ze zdjęciami)
Gry z 4 przyciskami przy użyciu jednego wejścia analogowego: Ta instrukcja koncentruje się na użyciu jednej analogowej linii wejściowej dla wielu przycisków, które można wykrywać niezależnie od siebie. Aby podkreślić użycie tych przycisków, dołączone jest oprogramowanie do grania w cztery różne gry z 4 przyciskami. Wszystkie mecze (8 w t
Jak odczytać wiele wartości analogowych za pomocą jednego pinu analogowego: 6 kroków (ze zdjęciami)
Jak odczytać wiele wartości analogowych za pomocą jednego pinu analogowego: W tym samouczku pokażę, jak odczytać wiele wartości analogowych za pomocą tylko jednego analogowego pinu wejściowego
Wysyłanie danych liczbowych z jednego Arduino do drugiego: 16 kroków
Wysyłaj dane liczbowe z jednego Arduino do drugiego: wprowadzenie autorstwa Davida Palmera, CDIO Tech. na Aston University. Czy kiedykolwiek musiałeś wysyłać numery z jednego Arduino do drugiego? Ta instrukcja pokazuje, jak. Możesz łatwo przetestować, jak działa, po prostu wpisując ciąg liczb do wysłania na S
Timer reakcji dla jednego gracza (z Arduino): 5 kroków
Zegar reakcji dla jednego gracza (z Arduino): W tym projekcie zbudujesz zegar reakcji, który jest zasilany przez Arduino. Działa na funkcji millis() Arduino, w której procesor rejestruje czas od rozpoczęcia działania programu. Możesz go użyć, aby znaleźć różnicę czasu między