Czym jest kalibracja kamery?
Kalibracja kamery to proces, który szacuje geometryczne parametry kamery, dzięki czemu punkty na obrazie można powiązać z punktami w scenie.
Kamera jest skalibrowana, gdy znane są jej odległość główna, przesunięcie punktu głównego i parametry zniekształcenia obiektywu (Remondino i Fraser, 2006). Odległość główna to ogniskowa, której używa fotogrametria. Ta strona opisuje parametry, modele zniekształceń, metody kalibracji, sposób sprawdzenia wyniku i to, co oznacza dla przelotów dronem. To samo słowo oznacza też kalibrację radiometryczną, która jest innym procesem (zob. sekcja o kalibracji geometrycznej i radiometrycznej).
Co szacuje kalibracja kamery
Parametry wewnętrzne należą do jednej kamery i jednego obiektywu. Nie zależą od sceny. Są to ogniskowa, punkt główny (środek optyczny) i dystorsja obiektywu. Wytyczne USGS nazywają je parametrami orientacji wewnętrznej.
Parametry zewnętrzne to obrót i przesunięcie. Opisują przejście od układu sceny do układu kamery. Są inne dla każdego zdjęcia, bo kamera się przemieszcza.
OpenCV używa modelu kamery otworkowej. Ogniskowe (fx, fy) są w jednostkach pikseli. Punkt główny (cx, cy) zwykle leży blisko środka obrazu. Te dwie grupy tworzą macierz kamery, zapisywaną też jako K lub A:
- Wiersz 1: fx, 0, cx
- Wiersz 2: 0, fy, cy
- Wiersz 3: 0, 0, 1
Wersja macierzy Zhanga ma jeden wyraz więcej. To wartość skosu, która opisuje, jak daleko od kąta prostego są od siebie dwie osie obrazu. W OpenCV jest równa zeru. Model USGS ma dwa wyrazy na różnicę skali pikseli w x i y. Remondino i Fraser twierdzą, że wyrazy powinowactwa i ścinania rzadko mają znaczenie we współczesnych kamerach cyfrowych.
Oprogramowanie szacuje parametry w pikselach. Aby otrzymać ogniskową w jednostkach odległości, pomnóż ją przez fizyczny rozmiar piksela (USGS). Gdy macierz kamery jest znana, można jej użyć ponownie, o ile ogniskowa jest stała. Jeśli obraz jest skalowany, przeskaluj wartości macierzy tym samym współczynnikiem. Współczynniki zniekształcenia nie zmieniają się wraz z rozdzielczością.
Zniekształcenie obiektywu
Obiektyw ma wiele elementów, więc prosta linia w scenie nie zawsze jest prostą na obrazie. To zjawisko to zniekształcenie. Ma dwie główne części.
- Zniekształcenie radialne przesuwa punkty obrazu wzdłuż linii od punktu głównego. Sprawia, że proste linie wyglądają na zakrzywione, i rośnie w kierunku krawędzi obrazu. OpenCV opisuje zniekształcenie beczkowate i poduszkowe jako dwie częste postacie. Beczkowate zniekształcenie tanich obiektywów to głównie pierwszy wyraz radialny, k1 (Remondino i Fraser).
- Zniekształcenie styczne (decentrujące) pojawia się, gdy elementy obiektywu nie są wycentrowane na osi optycznej. OpenCV podaje przyczynę jako obiektyw, który nie jest równoległy do matrycy. Zwykle jest co najmniej o rząd wielkości mniejsze niż zniekształcenie radialne.
Podstawowy model OpenCV ma pięć współczynników: k1, k2, p1, p2 i k3. Wyrazy k są radialne, a wyrazy p styczne. Rozszerzony model OpenCV dodaje k4 do k6, cztery cienkie wyrazy pryzmatyczne (s1 do s4) i wyraz przechyłu. OpenCV ma też osobny model rybiego oka dla obiektywów o bardzo szerokim polu widzenia.
Fotogrametria używa ośmiowyrazowego modelu, który Brown sformułował w 1971 roku. Ma odległość główną, przesunięcie punktu głównego (xp, yp), trzy współczynniki radialne i dwa styczne (Remondino i Fraser). Wytyczne USGS zapisują te same wyrazy radialne i styczne. OpenCV nazywa model Brown-Conrady jednym z dwóch modeli, które łączy jego model racjonalny. Drugim jest model dzielenia.
Zniekształcenie zmienia się wraz z ustawieniem obiektywu. Zniekształcenie radialne zmienia się wraz z ogniskową, a styczne wraz z ostrzeniem, ale znacznie mniej. Kalibracja ważna jest dla ustawienia obiektywu, przy którym ją wykonano.
Metody kalibracji
| Metoda | Czego potrzeba | Gdzie się ją stosuje |
|---|---|---|
| Płaski wzór (Zhang) | Płaski wzór, na przykład szachownica, fotografowany z różnych orientacji | Na ziemi przed lotem |
| Laboratoryjne pole testowe | Klatka kalibracyjna z kodowanymi celami i stałą pozycją kamery | W pomieszczeniu kalibracyjnym |
| Zakres in situ | Gęsty zbiór dokładnych punktów kontrolnych | Duże kamery na platformie lotniczej |
| Samokalibracja | Zdjęcia z przelotu, punkty wiązania i kilka naziemnych punktów kontrolnych | Większość pomiarów dronami |
Płaski wzór. Kamera widzi płaski wzór z różnych orientacji. Metoda Zhanga wymaga co najmniej dwóch. Najpierw znajduje rozwiązanie w postaci zamkniętej, a potem je udoskonala estymacją największej wiarygodności. Samouczki OpenCV mówią, że w teorii wystarczą dwa zdjęcia. W praktyce prawdziwe obrazy mają szum, więc użyj co najmniej 10 dobrych zdjęć. OpenCV obsługuje szachownicę, tablicę ChArUco i siatki okręgów, a siatka okręgów wymaga mniej zdjęć. Jeśli wzór pozostaje równoległy do pierwotnej pozycji albo tylko się przesuwa, nowe zdjęcie nie daje nowego ograniczenia (Zhang, sekcja 4). Dlatego obracaj wzór między zdjęciami.
W kodzie OpenCV wzór leży na płaszczyźnie Z = 0. Jeśli rozmiar boku kwadratu jest znany, na przykład 30 mm, wyniki są w milimetrach. Jeśli nie jest, wyniki są w jednostkach jednego kwadratu.
Laboratoryjne pole testowe. USGS opisuje klatkę kalibracyjną z trzema równoległymi panelami. Panele mają cele retroodblaskowe i kodowane cele. Obiektyw jest ustawiony na nieskończoność. Kamera wykonuje zdjęcia z trzech pozycji kątowych, a oprogramowanie potrzebuje co najmniej czterech kodowanych celów wspólnych dla zdjęć.
Zakres in situ. Zakres kalibracyjny ma gęsty zbiór dokładnych punktów kontrolnych. Wyrównanie bloku metodą najmniejszych kwadratów daje parametry. USGS zauważa, że wymaga to zdjęć lotniczych nad zakresem, co może być kłopotliwe, i że zakres wymaga starannej konserwacji.
Samokalibracja. Oprogramowanie SfM znajduje punkty wiązania na wielu zdjęciach. Szacuje jednocześnie orientację wewnętrzną, zniekształcenie i orientację zewnętrzną. USGS stwierdza, że to najczęstsza metoda w mapowaniu UAS. Wyjaśnia też, dlaczego sama kalibracja laboratoryjna nie wystarcza dla drona. Parametry mogą się zmienić między laboratorium a terenem, bo czujniki nie są stabilne.
Samokalibracja działa tylko wtedy, gdy sieć zdjęć jest mocna. Remondino i Fraser wymieniają zbieżne zdjęcia, ortogonalne kąty przechyłu i dużą liczbę dobrze rozłożonych punktów. USGS dodaje, że punkty wiązania powinny leżeć na stabilnych powierzchniach i być widoczne z co najmniej sześciu miejsc.
Jak sprawdzić wynik
Błąd reprojekcji pokazuje, jak dokładne są parametry. Oprogramowanie rzutuje znane punkty obiektu na obraz za pomocą oszacowanych parametrów. Następnie mierzy odległość do punktów, które znalazło na obrazie. Im bliżej zera jest błąd, tym dokładniejsze są parametry (OpenCV). OpenCV podaje wynik jako pierwiastek ze średniego kwadratu błędu (RMSE).
Samokalibrowany przelot sprawdza się punktami naziemnymi. USGS zostawia część naziemnych punktów kontrolnych poza kalibracją i używa ich jako punktów kontrolnych. USGS zaleca też zapisywanie parametrów kalibracji i ich niepewności w metadanych zbioru danych.
Kopułowatość i plan lotu
Samokalibracja może zawieść, gdy wszystkie zdjęcia patrzą w prawie tym samym kierunku. Oszacowanie zniekształcenia jest wtedy błędne, a model 3D pokazuje szeroką pionową kopułę. James i Robson (2014) ustalili, że ten błąd wynika z prawie równoległych kierunków obrazowania i z nieprawidłowej korekcji zniekształcenia radialnego. Kopułowatość ma liniową zależność od zniekształcenia radialnego. Zdjęcia ukośne ją zmniejszają. Bez punktów kontrolnych błąd spadł w ich planach lotu nawet o dwa rzędy wielkości.
USGS zaleca dwie wysokości lotu w kierunkach ortogonalnych. W jego przykładzie loty północ-południe są o 50 procent wyżej niż loty wschód-zachód. Punkty wiązania są wtedy fotografowane wielokrotnie i w różnych częściach kadru. Daje to wiarygodniejsze oszacowanie orientacji wewnętrznej.
Dlaczego kalibracja ma znaczenie dla dokładności
USGS podaje, że dokładne ortoprodukty są możliwe bez dobrze skalibrowanej kamery, ale wtedy wymagają gęstej sieci punktów kontrolnych. USGS mówi, że taka sieć czyni projekt zbyt kosztownym.
Dokładność nie wynika z samego GSD (ground sample distance). Punkty kontrolne muszą być co najmniej trzy razy dokładniejsze niż dokładność, jakiej wymaga obraz. Weźmy zbiór z GSD 1 cm. Załóżmy, że punkty kontrolne mają dokładność 2 cm (1 sigma) lub lepszą. Zbiór może wtedy mieć dokładność poniżej 6 cm (1 sigma). Punkty kontrolne z rozwiązań RTK (real-time kinematic) mają dokładność około 2 do 3 cm (1 sigma). Z nimi USGS mówi, że obraz można sprawdzić tylko do około 6 cm.
Kalibracja geometryczna i radiometryczna
Kalibracja geometryczna opisuje drogę promienia światła do kamery. Kalibracja radiometryczna to osobny proces. Łączy surowe wartości czujnika (liczby cyfrowe) z fizycznymi właściwościami celu, takimi jak promieniowanie, odbicie lub temperatura. USGS mówi, że bez niej liczby cyfrowe nie mają znaczenia w analizie naukowej. Kalibracja geometryczna tego powiązania nie daje.
Zastosowanie w inspekcji dronem
Przelot dronem nad lotniskiem mierzy odległości, powierzchnie i położenia na podstawie zdjęć. Geometria zdjęć pochodzi z kalibracji kamery, więc wpływa na każdy pomiar wykonany ze zdjęć. Źródła użyte na tej stronie nie określają wymagań kalibracji kamer inspekcyjnych specyficznych dla lotnisk. Przy zamawianiu przelotu zapytaj dostawcę o trzy rzeczy:
- Jaką metodę zastosowano, samokalibrację czy kalibrację laboratoryjną.
- Jak sprawdzono wynik, na przykład punktami kontrolnymi, które nie wchodziły w skład kalibracji.
- Gdzie są przechowywane parametry kalibracji i ich niepewności.
Często zadawane pytania
- Czym jest kalibracja kamery?
- Kalibracja kamery to proces, który szacuje geometryczne parametry kamery. Dzięki nim punkty na obrazie można powiązać z punktami w scenie. Kamera jest skalibrowana, gdy znane są jej odległość główna, przesunięcie punktu głównego i parametry zniekształcenia obiektywu (Remondino i Fraser, 2006).
- Jakie są parametry kalibracji kamery?
- Są trzy grupy. Parametry wewnętrzne to ogniskowa (fx, fy) i punkt główny (cx, cy), zapisywane jako macierz kamery 3x3. Współczynniki zniekształcenia obiektywu to k1, k2, p1, p2 i k3 w podstawowym modelu OpenCV. Parametry zewnętrzne to obrót i przesunięcie. Umieszczają kamerę w scenie i zmieniają się przy każdym zdjęciu.
- Jakie są metody kalibracji kamery?
- Są cztery. Płaski wzór, na przykład szachownica, jest fotografowany z różnych orientacji (metoda Zhanga). Laboratoryjne pole testowe z kodowanymi celami jest fotografowane z ustalonych pozycji. Leci się nad zakresem in situ z gęstymi punktami kontrolnymi. Samokalibracja szacuje parametry z samych zdjęć z przelotu i jest najczęstszą metodą w mapowaniu dronami.
- Ile zdjęć potrzeba do kalibracji szachownicą?
- Metoda Zhanga wymaga co najmniej dwóch orientacji płaskiego wzoru. Samouczek OpenCV prosi o co najmniej 10 dobrych zdjęć, bo prawdziwe obrazy zawierają szum. Wzór trzeba obracać między zdjęciami, bo drugie zdjęcie z równoległym wzorem nie daje nowego ograniczenia.
- Czy kamerę drona można skalibrować podczas przelotu pomiarowego?
- Tak. Większość oprogramowania SfM (struktury z ruchu) szacuje parametry kamery ze zdjęć z przelotu. To samokalibracja. Użytkownicy USGS zwykle na nią polegają. Zdjęcia prawie równoległe mogą dać błędne oszacowanie zniekształcenia i kopułowatą powierzchnię. Dodanie zdjęć ukośnych zmniejsza ten błąd (James i Robson, 2014).
- Czym jest model Brown-Conrady zniekształcenia?
- To model zniekształcenia obiektywu z członami radialnymi i decentrującymi (stycznymi). Brown (1971) sformułował ośmiowyrazową wersję fotogrametryczną. Ma trzy współczynniki radialne, dwa decentrujące, odległość główną i przesunięcie punktu głównego. OpenCV nazywa model Brown-Conrady jedną częścią swojego modelu racjonalnego zniekształcenia.
- Jak zapisać macierz kamery z ogniskowej i punktu głównego?
- Ogniskowe wpisz na przekątnej, a punkt główny w ostatniej kolumnie. Macierz ma postać [fx 0 cx / 0 fy cy / 0 0 1], przy czym wszystkie wartości są w pikselach. Przyjmij fx = fy = 721.5 i punkt główny (609.6, 172.9). Macierz wynosi wtedy [721.5 0 609.6 / 0 721.5 172.9 / 0 0 1].
- Jak skalibrować kamerę w C++ z OpenCV?
- Samouczek C++ OpenCV znajduje rogi wzoru na każdym zdjęciu za pomocą cv::findChessboardCorners albo cv::findCirclesGrid. Następnie wywołuje cv::calibrateCameraRO, która zwraca macierz kamery, współczynniki zniekształcenia i średni błąd reprojekcji. Program przykładowy jest w samples/cpp/tutorial_code/calib3d/camera_calibration.
Bibliografia
- opencv-calibration
- Camera Calibration (OpenCV-Python tutorial) OpenCV
- opencv-calibration-cpp
- Camera calibration With OpenCV (C++ tutorial) OpenCV
- opencv-calib3d
- Camera Calibration and 3D Reconstruction (calib3d module) OpenCV
- zhang-2000
- A Flexible New Technique for Camera Calibration (MSR-TR-98-71) Microsoft Research
- remondino-fraser-2006
- Digital camera calibration methods: considerations and comparisons ISPRS Commission V Symposium, IAPRS Volume XXXVI, Part 5, pp. 266-272
- usgs-ofr-2023-1033
- Guidelines for Calibration of Uncrewed Aircraft Systems Imagery (Open-File Report 2023-1033) U.S. Geological Survey
- james-robson-2014
- Mitigating systematic error in topographic models derived from UAV and ground-based image networks Earth Surface Processes and Landforms 39(10), 1413-1420 (DOI 10.1002/esp.3609)
To wpis referencyjny. TarmacView świadczy usługi inspekcji dronami i nie sprzedaje sprzętu ani materiałów opisanych w tym słowniczku.
