Próbuję użyć kamery stereo do rekonstrukcji sceny, ale zwykle mogę uzyskać tylko rzadkie chmury punktów (tj. Ponad połowa obrazu nie ma żadnych właściwych informacji o głębokości).
Zdaję sobie sprawę, że algorytmy przetwarzania stereo polegają na obecności tekstury na obrazach i mają kilka parametrów, które można dostosować, aby uzyskać lepsze wyniki, takie jak zakres rozbieżności lub rozmiar okna korelacji. Chociaż dostrajam te parametry, nigdy nie jestem w stanie uzyskać wyników, które są nawet zdalnie zbliżone do tego, co można uzyskać za pomocą aktywnego czujnika, takiego jak Kinect.
Powodem, dla którego tego chcę, jest to, że bardzo często chmury punktów odpowiadające sąsiednim regionom nie pokrywają się wystarczająco, aby uzyskać dopasowanie, więc rekonstrukcja jest poważnie ograniczona.
Moje pytanie do ekspertów Computer Vision brzmi następująco: co mogę zrobić, aby uzyskać ogólnie gęstsze chmury punktów (bez arbitralnej modyfikacji środowiska mojego biura)?
źródło
Odpowiedzi:
Możesz spróbować pominąć wykrywanie najistotniejszych punktów i po prostu gęsto próbkować obraz (jako siatkę lub mniej więcej) i obliczyć deskryptor funkcji w każdym punkcie próbki. Prawdopodobnie możesz nawet posunąć się do obliczenia deskryptora dla każdego piksela.
Możesz stracić niezmienność skali, ale myślę, że nie zaszkodzi to zbytnio dla widzenia stereo, ponieważ obiekty będą miały mniej więcej taką samą skalę na obu obrazach.
Innym podejściem może być połączenie wielu algorytmów wykrywania punktu istotnego: narożniki, krawędzie, plamy i tak dalej. Następnie musisz użyć tego samego algorytmu deskryptora funkcji dla wszystkich wykrytych punktów, jednak ta ostatnia część może być nieco trudna do wdrożenia.
źródło
Tak więc algorytmy przetwarzania obrazu stereo, które stosowałem w przeszłości, były wdrażane piksel po pikselu. Właśnie użyliśmy modelu kamery otworkowej i wykonaliśmy staromodne pomiary za pomocą taśmy pomiarowej, dopóki nasze szacunki głębokości nie były zgodne z rzeczywistością.
Równania dla pary równoległych kamer to:
Za pomocą tych równań możesz obliczyć gęstą chmurę stereo. Jeden na każdy piksel w twoich aparatach.
źródło
Kiedy mówisz: „ponad połowa obrazu nie ma żadnych właściwych informacji o głębokości”, która połowa?
Jednym z problemów, na jaki natknęliśmy się, jest to, że jeśli odległość do obiektu jest tego samego rzędu wielkości niż linia podstawowa (zwykle związana z kamerami o bardzo szerokim kącie), wówczas „standardowe” algorytmy gęstego stereo nie działają tak dobrze. Korzystamy z biblioteki libelas, a jej twórcy powiedzieli nam, że nazywa się to „dużym baseline stereo” i jest kolejnym problemem.
źródło
Spojrzeć na kitti stereo Benchmark liderów. Ten test porównawczy nakłada kary na algorytmy nie powodujące rozbieżności w żadnym punkcie, więc najlepsi osiągają dobre wyniki (nawet jeśli nie mają wielu podstaw do oszacowania w wielu punktach). Niektóre metody mają publicznie dostępny kod połączony, który możesz wypróbować.
Pamiętaj, że nie są one karane za zajmowanie dużo czasu, więc wiele metod zajmie porządek minut na obraz i może nie być odpowiedni dla Twojej aplikacji. Wprowadzono wiele metod opartych na CNN, które działają bardzo dobrze, a jednocześnie działają w niecałą sekundę (na GPU). Co najmniej jeden z nich (CRL) ma kod publiczny.
Jeśli nadal nie otrzymujesz przyzwoitych szacunków głębokości na tych zdjęciach, być może widzisz granice tego, co jest możliwe z widocznego podejścia. Zasadniczo musi istnieć wyraźna tekstura w obszarze, aby dobrze dopasować punkty, lub potrzebujesz podstawy do przyjęcia pewnych silnych założeń (np. Gładkości) w regionach bez tekstur.
źródło