Czym jest mapa współrzędnych, dlaczego musi być w pełnej precyzji, co się dzieje na krawędziach kadru i jak sprawdzić, że undistort jest odwracalny.
STMapa jest obrazem, w którym wartości pikseli nie są barwami, tylko współrzędnymi. Piksel na pozycji (x, y) niesie w kanale czerwonym i zielonym informację: „weź piksel źródłowy stamtąd”.
Zaleta jest jedna i decydująca: STMapa opisuje dowolne przekształcenie, także takie, którego nie da się zapisać wzorem. Dystorsja obiektywu rzadko jest idealnym wielomianem — bywa lekko niesymetryczna, bo szkło nie jest idealnie osiowe. Wielomian tego nie odda; mapa zmierzona z siatki odda dokładnie tyle, ile zmierzono.
Druga zaleta jest praktyczna: mapa jest danymi, a nie kodem. Przechodzi między programami bez tłumaczenia konwencji, daje się obejrzeć, porównać i wersjonować jak każdy inny obraz. Wzór trzeba przepisywać dla każdego narzędzia osobno, a każde ma inne uporządkowanie współczynników.
Wada też jest jedna: mapa ma skończoną rozdzielczość i skończoną precyzję. Zapisana w ośmiu bitach na kanał daje ziarnistość przesunięcia rzędu jednego piksela na kadrze 4K — czyli bezużyteczną. STMapa musi być zmiennoprzecinkowa albo co najmniej szesnastobitowa, i jest to najczęstsza przyczyna dziwnych, schodkowych artefaktów po jej zastosowaniu.
| Konwencja | Warianty | Objaw pomyłki |
|---|---|---|
| zakres wartości | 0–1 albo w pikselach | obraz zapada się do jednego piksela w rogu |
| kierunek osi Y | od góry albo od dołu | obraz odbity w pionie |
| początek układu | róg piksela albo jego środek | przesunięcie o pół piksela, czyli lekkie zmiękczenie |
| kierunek mapy | „skąd brać” albo „dokąd iść” | dystorsja nakłada się zamiast zdejmować |
Pierwsze trzy dają objawy widoczne od razu. Czwarty jest podstępny, bo przy słabej dystorsji wygląda na „prawie dobrze”.
Czwarty wiersz wart jest komentarza, bo jest źródłem najdłuższych poszukiwań. Mapa „skąd brać” i mapa „dokąd iść” to dwie różne rzeczy i jedna nie jest odwrotnością drugiej w sensie arytmetycznym — odwrócenie wymaga rozwiązania równania dla każdego piksela, bo przekształcenie nie jest zwykle wyrażalne wzorem w drugą stronę.
Test rozstrzygający zajmuje chwilę: nałóż mapę na siebie samą dwa razy. Jeśli konwencja jest ta sama i mapa jest odwrotnością siebie, wynik powinien być zgodny z oryginałem. Jeśli dystorsja się podwoiła, kierunek jest odwrotny do zakładanego.
Model wielomianowy, wystarczający dla większości obiektywów, opisuje przesunięcie punktu wzdłuż promienia od środka kadru:
| Typ obiektywu | k₁ | k₂ | Przesunięcie w rogu |
|---|---|---|---|
| szeroki kinowy, dobrze skorygowany | −0,003 | 0,0005 | 0,3% promienia |
| szeroki fotograficzny, typowy | −0,05 | 0,010 | 4,0% |
| bardzo szeroki, wyraźna beczka | −0,09 | 0,020 | 7,0% |
| tele z poduszką | +0,015 | −0,001 | 1,4% |
| rybie oko | −0,35 | 0,120 | 23,0% |
Wartości orientacyjne, przy normalizacji r do jedności w rogu kadru. Ostatnia kolumna to (r' − r)/r w rogu, czyli o ile procent promienia punkt się przesuwa.
Protokół pomiaru z siatki jest krótki i wart wykonania raz na obiektyw, a nie raz na ujęcie.
Krok 1. Sfotografuj płaską siatkę prostokątną wypełniającą kadr, ustawioną równolegle do matrycy. Równoległość jest tu ważniejsza niż wszystko inne — pochylenie siatki wygląda w wyniku jak dystorsja asymetryczna.
Krok 2. Znajdź w obrazie środek dystorsji. Zwykle nie leży dokładnie w środku kadru — odchylenie o kilka pikseli jest normalne i jego pominięcie daje resztkowy błąd rosnący ku jednemu brzegowi.
Krok 3. Dopasuj k₁ i k₂ tak, żeby proste w wyprostowanym obrazie były proste. Kryterium ilościowe: odchylenie punktu środkowego krawędzi od odcinka łączącego jej końce, mierzone w pikselach. Poniżej pół piksela jest bardzo dobrze, poniżej dwóch wystarcza.
Krok 4. Zapisz jako STMapę i sprawdź na oryginalnej siatce. To sprawdzenie łapie wszystkie cztery pomyłki konwencyjne z poprzedniej sekcji naraz.
Modal w Rozdziale 35 pokazuje, ile kosztuje każde przepróbkowanie. STMapy dają na to prosty sposób: przekształcenia składa się na poziomie map, a dopiero wynik stosuje do obrazu.
Mechanizm jest ten sam, co przy zwykłym składaniu funkcji. Mając mapę A („skąd brać dla kroku pierwszego”) i mapę B dla kroku drugiego, mapę wypadkową otrzymuje się, stosując A do B — czyli traktując B jak obraz i przepuszczając ją przez A. Ponieważ mapy są zmiennoprzecinkowe, ta operacja nie kosztuje nic pod względem jakości.
Warto na koniec zauważyć konsekwencję, która wykracza poza geometrię. Skoro przekształcenia da się składać i stosować raz, to porządek pracy w compie powinien odkładać wszystkie operacje geometryczne na jeden krok, zamiast rozsiewać je po drzewie. Jest to jedna z reguł, które Rozdział 36 zbiera w całość — i jedna z niewielu, które poprawiają obraz nie zmieniając w nim nic poza liczbą przejść.