Jak uzyskać najdokładniejszą kalibrację kamery?

16

Po pierwsze, mam nadzieję, że jest to poprawna tablica wymiany stosów. Przepraszam, jeśli nie jest.

Pracuję nad czymś, co wymaga ode mnie skalibrowania aparatu. Z powodzeniem zaimplementowałem kod, aby to zrobić w OpenCV (C ++). Korzystam z wbudowanych funkcji szachownicy i szachownicy, którą wydrukowałem.

Istnieje wiele samouczków w Internecie, które mają dać więcej niż jeden widok szachownicy i wyodrębnić rogi z każdej klatki.

Czy istnieje optymalny zestaw widoków, aby nadać funkcji najbardziej dokładną kalibrację kamery? Co wpływa na dokładność kalibracji?

Na przykład, jeśli dam mu 5 zdjęć tego samego widoku, nie ruszając niczego, daje to pewne proste rezultaty, gdy próbuję cofnąć transmisję z kamery internetowej.

Informacje dla wszystkich odwiedzających: Niedawno dowiedziałem się, że można uzyskać lepszą kalibrację kamery za pomocą siatki asymetrycznych kół i odpowiedniej funkcji OpenCV.

Gepard
źródło

Odpowiedzi:

8

Musisz robić zdjęcia do kalibracji z różnych punktów widzenia i pod różnymi kątami, z możliwie dużą różnicą między kątami (wszystkie trzy kąty Eulera powinny się różnić), ale tak, aby średnica wzoru nadal pasowała do pola widzenia kamery. Im więcej widoków używasz, tym lepsza będzie kalibracja. Jest to potrzebne, ponieważ podczas kalibracji wykrywasz parametry ogniskowej i zniekształcenia, więc aby uzyskać je metodą najmniejszych kwadratów, potrzebne są różne kąty. Jeśli w ogóle nie poruszasz kamerą, nie otrzymujesz nowych informacji, a kalibracja jest bezużyteczna. Należy pamiętać, że zwykle potrzebujesz tylko ogniskowej, parametry zniekształceń są zwykle nieistotne, nawet w przypadku kamer konsumenckich, kamer internetowych i telefonów komórkowych. Jeśli znasz już ogniskową ze specyfikacji aparatu, być może nawet nie potrzebujesz kalibracji.

Współczynnik zniekształceń jest bardziej obecny w „specjalnych” aparatach, takich jak szerokokątne lub 360 °.

Oto wpis w Wikipedii dotyczący kalibracji . I tutaj jest zniekształcenie nieliniowe , które jest nieistotne dla większości aparatów.

mirror2image
źródło
Przez kąty Eulera zakładam, że masz na myśli obracanie kamery wokół szachownicy (z szachownicą jako osią obrotu) w x, y i przesuwanie kamery w kierunku i od szachownicy w z? Czytałem o kimś, kto po prostu wydrukował przekształcone szachownice i trzymał aparat w tym samym miejscu. Na przykład: i.imgur.com/rYzV4.png i i.imgur.com/McG9z.png . Czy używanie takich rzeczy jest złą decyzją, ponieważ może nie odzwierciedlać tego, jak potoczyłyby się w rzeczywistości?
Gepard
Tak, jeśli chodzi o przenoszenie kamery. Tak, znowu o utrzymaniu na miejscu.
mirror2image
@ mirror2image Masz na myśli, że w praktycznych operacjach lepiej jest zmieniać różne kąty. Ale to oznacza, że ​​różne poglądy będą miały różne światowe systemy koordynacji. Czy muszę korzystać ze wspólnego systemu koordynacji świata, aby utrzymywać punkty obiektów w tym samym systemie koordynacji?
Richard
3

@Ben - liczba wyświetleń zależy od kamery i wymaganej ostatecznej dokładności.

Dzięki soczewkom o bardzo wysokiej jakości i niskim zniekształceniu (wysokiej klasy lustrzanka 35 mm) wykorzystującym wiele obrazów szachownicy do mapowania zniekształcenia mogą być niestabilne - ponieważ zniekształcenia są ułamkami piksela.
Nadal potrzebujesz kilku zdjęć z obróconą płytką (lub aparatem), ponieważ zwykle środek obrazu znajduje się w odległości zaledwie kilku pikseli od wartości nominalnej x / 2, y / 2 i zmienia się wraz z ostrością. I oczywiście zoom zmienia wszystko.

Gdy masz już środek obiektywu i ogniskową (w X i Y), potrzebujesz tylko jednej szachownicy na zdjęciu, aby ustawić pozycję kamery

Martin Beckett
źródło
Ciągle dostaję naprawdę złą kalibrację i szczerze mówiąc, nie mogę zrozumieć, dlaczego. Mam drukowaną szachownicę na ścianie i przesuwam aparat do różnych pozycji, dzięki czemu ma inne widoki na szachownicy, ale za każdym razem, gdy używam funkcji cofania zniekształceń w opencv, wychodzi to bardzo dziwnie i zniekształcone w porównaniu do oryginału. Mój aparat to Microsoft LifeCam Studio 1080p.
Gepard
@Ben Wyłącz dowolny autofokus. W kamerach z niewielkimi obiektywami ogniskowa i środek obiektywu zmieniają się wraz z ostrością. Czy obracasz się wystarczająco, aby dobrze pasowało do środka? Czy kwadraty wychodzą na rogi? Na koniec sprawdź, czy wszystkie cele mają wykryte wszystkie kwadraty.
Martin Beckett,
Autofokus został już wyłączony. Zdefiniować wystarczająco? Staram się zbierać punkty pod jak największym kątem. Nie wiem, co rozumiesz przez „kwadraty wychodzące na rogi”, jeśli masz na myśli funkcję, która rysuje wyodrębnione rogi na obrazie - wtedy tak. Mam już również sprawdzenie, czy wszystkie rogi zostały wykryte. Myślę, że mój problem MOŻE leżeć w tym, na co ustawiłem początkową ogniskową w wewnętrznej matrycy, którą przekazuję do funkcji kalibracji. Próbowałem 1: 1, 16: 9 (według mnie jest to współczynnik kształtu kamery) i próbowałem również NIC (co można zrobić)
Cheetah 12-12
@Martin Czy można przeprowadzić kalibrację, utrzymując aparat w pozycji stacjonarnej i zmieniając orientację szachownicy bez zmiany odległości między kamerą a szachownicą?
@Santosh - tak, to oczywiście dokładnie odpowiednik. Musisz upewnić się, że pokonałeś wiele różnych kątów
Martin Beckett
3

Postanowiłem opublikować tę odpowiedź tutaj, ponieważ jakiś czas temu pojawił się jako najlepszy wynik w Google i jej sugestie pomogły mi. Postanowiłem więc również podzielić się swoim doświadczeniem.

Spędziłem niezliczone godziny próbując uzyskać najlepszą kalibrację stereo na Kinect, podzieliłem się swoimi wskazówkami i ustaleniami w blogu tutaj .

Chociaż jest nastawiony na kalibrację stereo, a dokładniej na Kinect, uważam, że wskazówki pomogą każdemu, kto próbuje skalibrować kamerę.

Ponadto, na wypadek, gdybym kiedyś umarł lub zapomniał odnowić hosting, oto zmodyfikowany cytat z postu:

  1. Upewnij się, że masz największy możliwy wzór kalibracji. Postępuj zgodnie z tym, co powiedziałem powyżej. Uzyskaj ładny wzór profesjonalnie wydrukowany. Upewnij się, że każdy kwadrat ma co najmniej 8 cm x 8 cm. Upewnij się również, że jedna strona wzoru kalibracji ma nieparzystą liczbę kwadratów, a druga strona ma parzystą liczbę kwadratów (np. 9 × 6 lub 7 × 8). Jest to ważne dla prawidłowego wykrycia pozy celu. Ponadto niektóre zestawy narzędzi nie będą w stanie wykryć wzorca, który nie jest spełniony. Jak wspomniano wcześniej, wzory, które zastosowałem do drukowania na dużych arkuszach, są przesyłane tutaj (dla kwadratów 9 cm) i tutaj (dla kwadratów 10 cm).
  2. Upewnij się, że wydrukowany wzór ma wystarczającą liczbę białych ramek wokół niego, w przeciwnym razie może nie zostać łatwo wykryty przez większość przyborników.
  3. Upewnij się, że Kinect się nie porusza. Użyłem uchwytu, aby zamontować Kinect na statywie.
  4. Spróbuj uzyskać jak najwięcej obrazów celu kalibracji. Moja najlepsza kalibracja została uzyskana przy użyciu 300 zdjęć, w odległości od 0,5 metra do 10 metrów od kamery. Upewnij się, że obróciłeś wzór wokół osi X, Y i Z. Spróbuj także „ułożyć” widok za pomocą zdjęć wykonanych w tej samej odległości: tzn. Zrób jedno zdjęcie, przenieś cel do następnego pola w polu widzenia, zrób kolejne i powtarzaj, aż „sąsiadujesz” wszystkie bieżące pole widzenia. Celem jest jak największe pokrycie całego pola widzenia z każdej odległości.
  5. Jeśli to możliwe, użyj aplikacji kalibracji stereo MATLAB. Pozwala pozbyć się wartości odstających po każdej fazie kalibracji.
M2X
źródło
3

Oto lista „najlepszych praktyk” w zakresie kalibracji aparatu, które pierwotnie opublikowałem tutaj: https://calib.io/blogs/knowledge-base/calibration-best-practices

  • Wybierz odpowiedni cel kalibracji rozmiaru. Wystarczająco duży, aby właściwie ograniczyć parametry. Najlepiej, jeśli powinien obejmować ok. połowa całkowitego obszaru widzianego z przodu równolegle na obrazach z kamery.
  • Przeprowadź kalibrację w przybliżonej odległości roboczej (WD) swojej ostatniej aplikacji. Aparat powinien być ustawiony na tę odległość, a ostrość powinna pozostać niezmieniona po kalibracji.
  • Cel powinien mieć wysoką liczbę funkcji. Preferowane jest stosowanie drobnych wzorów. Jednak w pewnym momencie spada odporność na wykrywanie. Naszym zaleceniem jest stosowanie drobnych zliczeń wzorów w aparatach powyżej 3 MPx i jeśli oświetlenie jest kontrolowane i dobre.
  • Zbieraj obrazy z różnych obszarów i pochyleń. Przesuń cel, aby całkowicie pokryć obszar obrazu i dążyć do równomiernego pokrycia. Zniekształcenie obiektywu można właściwie określić tylko na podstawie zdjęć równoległobocznych, ale oszacowanie ogniskowej zależy od obserwacji skrócenia. Uwzględnij zarówno zdjęcia równolegle do przodu, jak i zdjęcia wykonane przy pochyleniu tablicy do +/- 45 stopni zarówno w pionie, jak iw poziomie. Przechylenie bardziej nie jest zwykle dobrym pomysłem, ponieważ pogarsza się dokładność lokalizacji obiektów.
  • Używaj dobrego oświetlenia. Jest to często pomijane, ale niezwykle ważne. Cel kalibracji powinien być najlepiej rozproszony przy pomocy kontrolowanego oświetlenia fotograficznego. Silne źródła punktowe powodują nierównomierne oświetlenie, co może prowadzić do niepowodzenia wykrywania i nie bardzo dobrze wykorzystują zakres dynamiczny aparatu. Cienie mogą zrobić to samo.
  • Miej dość obserwacji. Zwykle kalibrację należy przeprowadzić na co najmniej 6 obserwacjach (obrazach) celu kalibracji. Jeśli używany jest aparat wyższego rzędu lub model zniekształceń, korzystne są dalsze obserwacje.
  • Rozważ użycie unikatowo zakodowanych celów, takich jak tablice CharuCo. Pozwalają one zbierać obserwacje z samych krawędzi czujnika aparatu i obiektywu, a zatem bardzo dobrze ograniczają parametry zniekształceń. Pozwalają również gromadzić dane, nawet jeśli pojedyncze punkty funkcji nie spełniają innych wymagań.
  • Kalibracja jest tak dokładna, jak zastosowany cel kalibracji. Użyj celów drukowanych laserowo tylko do sprawdzania poprawności i testowania.
  • Prawidłowe zamontowanie tarczy kalibracyjnej i kamery. Aby zminimalizować zniekształcenia i pochylić się w większych obiektach, zamontuj je pionowo lub połóż płasko na sztywnym podłożu. Zamiast tego rozważ przeniesienie kamery. Użyj wysokiej jakości statywu i unikaj dotykania aparatu podczas zakupów.
  • Usuń złe obserwacje. Dokładnie sprawdź błędy ponownego odrzucenia. Zarówno na widok, jak i na funkcję. Jeśli którykolwiek z nich występuje jako wartości odstające, wyklucz je i ponownie skalibruj.

Internetowe narzędzie do generowania plików PDF dla celów kalibracji znajduje się tutaj: https://calib.io/pages/camera-calibration-pattern-generator

Jakob
źródło
Cześć, witamy w DSP SE. Autopromocyjne odpowiedzi na ogół nie są tu mile widziane. Zastanów się nad odpowiedzią o wyższej jakości.
jojek