Odrzucanie pikseli przy integracji: wybór algorytmu i odczyt Rejection Map
„Odrzucanie” (rejection) przy integracji to automatyczne usuwanie — w trakcie składania wielu klatek — tych wartości odstających, których nie powinno tam być: śladów satelitów, białych plamek po promieniowaniu kosmicznym, resztkowych gorących pikseli (hot pixels), rozdętych obwódek zbyt jasnych gwiazd i tak dalej. Dobór właściwego algorytmu odrzucania pikseli (pixel rejection) i umiejętność odczytania wytwarzanej przez niego Rejection Map to klucz do czystego wyniku integracji. W tym artykule zbieram logikę wyboru algorytmu odrzucania oraz to, jak właściwie czytać te dwie tak często pomijane mapy odrzucania.
Rodzina algorytmów odrzucania
Program PixInsight oferuje przy integracji kilka algorytmów odrzucania. W oficjalnej dokumentacji wypisano, do jakiego scenariusza pasuje każdy z nich, i naprawdę warto to przeczytać (zwróć uwagę, że dokument ten opublikowano już jakiś czas temu i nie obejmuje dodanego później algorytmu GESD).

Z grubsza można je podzielić na dwie grupy:
- Rodzina Sigma: odrzucanie wartości odstających oparte na odchyleniu standardowym — na przykład Sigma Clipping, jego ulepszona wersja Winsorized Sigma Clipping oraz Percentile Clipping. Ich zasada działania i matematyka należą do tego samego systemu.
- GESD Test: opiera się na Grubbs’s test, a jego teoria i matematyka są całkowicie inne niż w metodach sigma-based; to algorytm dodany stosunkowo późno.
GESD vs Sigma: kto wygrywa przy małej liczbie klatek?
Sam to porównałem. Pewnego razu wziąłem materiał złożony z zaledwie 12 klatek i uruchomiłem na nim równolegle GESD Test, Winsorized Sigma Clipping oraz tradycyjny Sigma Clipping.

12 klatek w istocie nie osiąga zalecanej liczby klatek dla GESD ani dla Winsorized Sigma, a mimo to w tym konkretnym zestawie najlepszy efekt dał właśnie GESD Test. Muszę jednak dodać jedno zastrzeżenie na koniec: jeśli materiał jest kolorowy, a klatek dodatkowo jest za mało, to i tak lepiej sprawdzi się Winsorized Sigma albo Sigma. Nie ma więc algorytmu „zawsze najlepszego” — wszystko zależy od materiału.
GESD kontra słabe ślady satelitów
GESD ma jeszcze jedną przewagę w praktyce. Kiedy dawniej integrowałem z rodziną sigma, często trafiałem na słabsze ślady satelitów, których po prostu nie dawało się odrzucić — nawet przy 17 klatkach po integracji zostawał fragment śladu. Do tego tak słabe ślady nie nadają się do usuwania metodą manual selective rejection (ręczne zamalowywanie na czarno).

Po przejściu na GESD Test, odpowiednim dobraniu parametrów i rozszerzeniu (rozroście) słabego śladu satelity udało mi się odrzucić ślad wyjątkowo słaby; ogólnie rzecz biorąc, stosunek sygnału do szumu (S/N) przy GESD wychodzi wyższy niż przy tradycyjnym Sigma Clipping czy Winsorized Sigma Clipping. (Trzeba jednak dodać, że w większości przypadków rodzina sigma nie sprawia takich kłopotów z nieusuwalnym śladem — to dość skrajny przypadek.)
Broń specjalna: Range Clipping
Poza statystycznym odrzucaniem wartości odstających jest jeszcze jeden sposób — „siłowy”, ale przydatny — Range Clipping.

Jeśli masz klatki ze źle wykonaną kalibracją klatkami dark, na których widać mnóstwo czarnych punktów (na przykład są na 10 klatkach, a na 5 ich nie ma), zwykłym algorytmom odrzucania trudno usunąć te punkty przez wyszukiwanie wartości odstających. W takiej sytuacji przy integracji możesz użyć Range Low Clipping, żeby wymusić usunięcie wszystkich czarnych punktów poniżej pewnego progu. To bezpośredni środek wymierzony w konkretną wadę, uzupełniający odrzucanie statystyczne.

Jak czytać Rejection Map
Po zakończeniu integracji w procesie ImageIntegration albo w skrypcie WBPP oprócz gotowego obrazu powstają jeszcze dwie mapy odrzucania: jedna dla kierunku wysokiej jasności (rejection high), druga dla kierunku niskiej jasności (rejection low). Większość osób po prostu je ignoruje — a to marnowanie bardzo przydatnej informacji diagnostycznej.

Na mapie rejection low zwykle nie ma na co patrzeć; najważniejsza jest rejection high: tu pojawiają się wszystkie zakłócenia, których „wolałbyś nie widzieć w gotowym obrazie” — ślady satelitów, obwódki zbyt jasnych lub rozdętych gwiazd, ślady obiektów bliskich Ziemi, a do tego gorące piksele i białe plamki po promieniowaniu kosmicznym (gorące piksele zwykle usuwam procesem Cosmetic Correction jeszcze przed integracją, więc tutaj nie ma ich wiele).
Najbardziej praktyczny sposób odczytania tej mapy jest taki: jeśli piksel, który chciałeś odrzucić, pojawia się na rejection high, znaczy to, że został skutecznie usunięty; jeśli natomiast go tu nie ma, a mimo to został w zintegrowanym wyniku (na przykład resztka śladu satelity), znaczy to, że parametry odrzucania są za słabe albo że trzeba zmienić algorytm.
Kilka częstych pytań w stylu „czy wyrzucić tę klatkę?”
Kiedy zrozumiesz powyższą zasadę, wiele rozterek początkujących znajduje odpowiedź.
Klatka z rozdętymi gwiazdami — wyrzucić ją z integracji? Jeśli nie chodzi o nieostrość, zwykle dopuszczam ją do integracji.

Wystarczy obejrzeć rejection high, żeby zobaczyć, że nadmiernie rozległe albo zbyt jasne fragmenty tych gwiazd zostały już usunięte przez odrzucanie i nie brały udziału w obliczeniach integracji; ślady sztucznych satelitów i białe plamy po promieniowaniu kosmicznym również lądują na rejection high. Taką robotę spokojnie zostaw programowi.
Jasny ślad satelity przecina cel na wylot — usunąć tę klatkę ręcznie? Odpowiedź znów brzmi: nie trzeba.

Sposób jest taki: jeśli klatek masz mało, sięgnij po algorytm o większej sile odrzucania (na przykład rodzinę Sigma Clipping) i ustaw parametr Sigma High nieco surowiej (na przykład poniżej 2.5). W jednym przypadku miałem tylko 7 klatek, a na jednej z nich ślad satelity przecinał cel w poprzek; każda klatka była ważna dla stosunku sygnału do szumu, więc po ustawieniu odpowiednich parametrów (bez wartości domyślnych programu) pozwoliłem procesowi integracji wykonać odrzucanie automatycznie, a skutecznie odrzucony ślad pojawił się na rejection high. Nie marnuj ani jednego z trudem zdobytego piksela.
Wyjątek uszkodzonej kolumny: odrzucanie tego nie uratuje
Na koniec dodam jeszcze jeden wyjątek, którego odrzucanie nie uratuje — uszkodzoną kolumnę matrycy CCD (defect column).

Uszkodzona kolumna jest zbyt ciemna i biegnie przez cały kadr; usuwanie jej na siłę odrzucaniem kosztuje zbyt wiele dobrych pikseli, a i tak działa kiepsko. Właściwa droga to najpierw przygotować dla kamery Defect Map (na przykładzie matrycy CCD 16803 w „Latte”: jedna wyraźna uszkodzona kolumna pośrodku kadru plus trzy mniej widoczne), wczytać ją i zastosować do klatek light procesem DefectMap, a gdy wpływ uszkodzonej kolumny mocno zmaleje, resztę bez trudu usunie już odrzucanie przy integracji. Innymi słowy: odrzucanie to sprzątacz na końcu, a nie wszechmocna pierwsza linia obrony — wady, którymi powinno zająć się specjalistyczne narzędzie, i tak najpierw wymagają właściwego narzędzia.