Kompletny przewodnik po WBPP: interfejs, master klatki kalibracyjne i przebieg wykonania
Ten artykuł powstał z notatek z lat 2021–2024; część narzędzi i procedur zdążyła się od tego czasu zmienić, więc miej to na uwadze podczas lektury. Część wspomnianych w tekście interfejsów, opcji i zachowań poszczególnych wersji (na przykład 2.1.2 i 2.5) opisuje stan z tamtych czasów. Jeśli chodzi o błędy i znane bugi napotykane podczas wykonania, tym zajmuje się osobny artykuł „WBPP Troubleshooting”.
WBPP (WeightedBatchPreprocessing) to skrypt w programie PixInsight, który przeprowadza „kalibrację, rejestrację i integrację” od początku do końca w pełni automatycznie — jest zaskakująco wygodny. W ostatnich latach zmieniał się bardzo często, a ja przez ten czas napisałem sporo rozproszonych notatek; ten artykuł zbiera je w miarę kompletne omówienie, podzielone na trzy poziomy: podstawowe pojęcia, które niewiele się zmieniają między wersjami, obecny przebieg wykonania oraz kilka ważnych zmian w kolejnych wersjach na przestrzeni lat. Niezależnie od tego, której wersji używasz, najpierw dobrze zrozum pojęcia — wtedy żadna zmiana interfejsu cię nie wystraszy.
Podstawowe pojęcie 1: obraz zintegrowany przez WBPP to tylko podgląd
To punkt, o którym najbardziej chcę powiedzieć na wstępie, a zarazem ten najczęściej pomijany.
Sam wpadłem w tę pułapkę: pewnego razu po użyciu Drizzle Integration zauważyłem, że środki gwiazd (miejsca przepalone) zrobiły się czarne. Kiedy zacząłem drążyć sprawę, okazało się, że winowajcą było wykonanie integracji w skrypcie WBPP.
WBPP owszem, jest wygodny, ale w sprawie tej klatki master light, którą sam automatycznie integruje, stanowisko twórców jest zupełnie jasne — to tylko wygodny podgląd „osiągalnego efektu”; po użyciu trzeba go wyrzucić i nie wolno traktować go jako gotowego produktu. Odpowiedź twórców z forum cytuję poniżej:
The integrated image generated by WBPP is just a convenience preview of the achievable image, but it should always be deleted/ignored, and the integration should always be done manually with the registered frames. This is the only way to obtain an optimal integrated image with full control over the normalization, pixel rejection and noise reduction tasks.
Twórcy pół żartem dodali nawet, że zdanie to trzeba powtórzyć „n+1 razy, gdzie n dąży już do nieskończoności”: klatka master light wygenerowana przez WBPP nie powinna trafiać do zastosowań ostatecznych, bo to tylko podgląd, a najlepszy wynik uzyskasz dopiero wtedy, gdy ręcznie wykonanym procesem Image Integration zoptymalizujesz odrzucanie pikseli (pixel rejection) i stosunek sygnału do szumu (S/N).
Dlatego mam taki zwyczaj: WBPP używam najdalej do kroku „rejestracji gwiazd”, a właściwą integrację oddaję w ręce ręcznie uruchamianego procesu Image Integration. Porządne podejście z rozdzielonymi etapami — kalibracja (zostaje przy WBPP), rejestracja gwiazd (Star Alignment) i integracja (Image Integration) — ma wprawdzie kilka kroków więcej, ale gdy coś pójdzie nie tak, znacznie łatwiej ustalić, które ogniwo się posypało. To także stało się moim późniejszym przekonaniem. Te dwa bardzo szczegółowe filmy instruktażowe o WBPP, nagrane swego czasu przez japońskich pasjonatów, też gorąco polecam, ale i tam trzeba dopisać to samo zastrzeżenie: wynik integracji traktuj wyłącznie jako punkt odniesienia.
Podstawowe pojęcie 2: rozróżnij, które pliki w folderze Master są gotowym produktem
Po pełnym przebiegu WBPP w domyślnym folderze Master ląduje cała sterta plików i wielu znajomych nie potrafi rozpoznać, który obraz jest tym właściwym. Wyjaśnijmy to:

- Obraz w czerwonej ramce to właśnie ta gotowa, zintegrowana klatka master light, o którą ci chodzi.
- Obraz w żółtej ramce to obraz referencyjny (Ref) dla Local Normalization, a nie master light — nie pomyl ich.
- Obrazy bez ramki to master klatki kalibracyjne; znajdziesz tu master flat, master bias i master dark.
(Pamiętaj jednak o poprzedniej sekcji: ta „master light” wciąż ma u WBPP charakter podglądu — jeśli chcesz zrobić to porządnie, powinieneś zintegrować ją jeszcze raz samodzielnie.)
Obecny przebieg wykonania: pełny zestaw dla kamery kolorowej
WBPP idzie do końca jednym kliknięciem, ale w tle kryje się długi ciąg automatycznych procedur wykonywanych po kolei. Na przykładzie kamery kolorowej (OSC) pełna kolejność wykonania wygląda tak:

- Calibration File Integration: tworzy master klatki kalibracyjne
- Calibration: kalibruje klatki light
- Cosmetic Correction: usuwa gorące piksele (hot pixels) lub uszkodzone linie
- Debayer: debayeryzacja, czyli demozaikowanie (rozdzielenie RGB)
- Measurements: mierzy klatki light i nadaje im wagi
- Reference frame selection: wybiera obraz referencyjny do rejestracji
- Plate solving reference frames: wykonuje plate solving (rozwiązanie astrometryczne) obrazu referencyjnego
- Registration: rejestracja gwiazd
- LN reference generation: tworzy obraz referencyjny dla Local Normalization
- Local Normalization: uruchamia Local Normalization
- Integration: integruje klatki light
- RGB Combination: ponownie łączy trzy kanały RGB
W bardziej zwięzłym ujęciu można to sprowadzić do ośmiu kroków: utworzenie plików kalibracyjnych → kalibracja obrazów → Cosmetic Correction → debayeryzacja (rozdzielenie trzech kanałów RGB) → rejestracja gwiazd → Local Normalization → integracja obrazów → połączenie trzech kanałów RGB.

Dwa kroki zasługują tutaj na kilka słów więcej: rozdzielenie RGB ma pokonać dyspersję atmosferyczną (krawędzie gwiazd wyglądają wtedy tak, jakby po obu stronach miały inny kolor), a ceną jest dłuższy czas obliczeń; Drizzle Integration, jeśli go używasz, nie służy tutaj do powiększenia obrazu, lecz do uniknięcia artefaktów, więc ma sens dopiero przy dostatecznej liczbie klatek z ditheringiem — przy mniej niż 50 klatkach zwykle można go pominąć. Na marginesie o tym, jak to wygląda czasowo w praktyce: raz przepuściłem 360 dziewięciomegapikselowych klatek od kalibracji aż po Drizzle Integration 1x i zajęło to ponad godzinę; przy większej liczbie pikseli robi się tylko „ciekawiej”.

Master klatki kalibracyjne: w czym WBPP jest sprytny
W obsłudze klatek kalibracyjnych (flat, dark, bias i podobnych) WBPP kryje sporo przemyślanych rozwiązań — zasługują na osobną sekcję.
Klatki kalibracyjne najlepiej odtworzyć z surowych plików wewnątrz WBPP. Niemało osób po kalibracji stwierdza, że z klatkami light jest coś nie tak, a główną przyczyną bywa użycie „plików Master wykonanych innym oprogramowaniem lub inną procedurą” (master flat/bias/dark). Najbezpieczniej jest wrzucić surowe pliki kalibracyjne do WBPP i pozwolić mu zrobić pliki Master od nowa.
Drobne odchyłki czasu ekspozycji? Zostaw to opcji Exposure tolerance. Pewien kolega zapytał kiedyś na grupie: robił klatki dark, sterując sygnałem przez Eqmod, i przez opóźnienia jego pięciosekundowe klatki dark mogły w rzeczywistości wypadać między 4,980 a 5,02 sekundy, więc chciał przejść na fotografowanie w programie NINA. Otóż WBPP pomyślał o tym już dawno: klatki kalibracyjne mieszczące się w określonej różnicy czasu można przypisać do jednej grupy, a WBPP automatycznie wykona na klatkach z tej samej grupy to, co trzeba, i automatycznie dopasuje je do klatek light. Ta wartość tolerancji to właśnie Exposure tolerance.

Zdjęcia zrobione w różne dni? Grouping Keywords załatwia to za jednym razem. Po zmianie wersji WBPP zyskał funkcję grupowania, więc nawet obrazy zrobione w różnych dniach można wrzucić naraz i przetworzyć razem — wystarczy pogrupować je w polu Grouping Keywords za pomocą słowa kluczowego (na przykład daty). Tak było z moim zestawem plików: klatki flat z każdego dnia były inne, a WBPP i tak potrafił automatycznie skalibrować je osobno według daty; nie musiałem ręcznie ustawiać par klatek light i flat dla każdej daty z osobna. Bardzo wygodne.

Chcesz zrobić tylko master klatki kalibracyjne? Bez klatek light też się da. To zastosowanie, o którym wielu nie wie: jeśli nie masz w ogóle klatek light, wrzuć do WBPP klatki dark, bias, flat i flat dark, a on sprytnie zamieni je we właściwej kolejności kroków w master klatki kalibracyjne i zapisze do wskazanego folderu — oszczędzisz sobie mozołu wykonywania ich ręcznie różnymi procedurami.

Opcje na stronie Light i sposoby na przyspieszenie
Na stronie Light w WBPP jest cały rząd opcji, które zaznaczasz według potrzeb. Domyślnie żadna z nich nie jest zaznaczona poza subframe weighting.

Skoro te kroki można włączać i wyłączać, nasuwa się praktyczne pytanie: ile czasu da się zaoszczędzić, wyłączając niepotrzebną obróbkę? Sprawdziłem to na zestawie danych udostępnionym do pobrania za granicą — łącznie 372 klatki szesnastomegapikselowe — i po odrzuceniu zbędnej obróbki czas skrócił się jakieś 7 do 8 razy (25 min 03 s vs. 03 min 30 s), a jakość obrazu ucierpiała tylko nieznacznie: na moim komputerze różnica wynosiła około 15%, a po kompresji do przesłania przez sieć praktycznie nie da się jej dostrzec. Kiedy gonią cię terminy albo chcesz najpierw zobaczyć zarys całości, taki kompromis bardzo się opłaca.

Do tego, które kroki pożerają najwięcej czasu i które najbardziej opłaca się wyłączyć, wrócę w artykule „WBPP Troubleshooting”.
Zmiany w wersjach: to pojawiło się dopiero później
WBPP przez te lata sporo zyskał; zbiorę kilka ważniejszych kamieni milowych, żebyś mógł łatwo porównać je z wersją, którą masz u siebie:
Kilka spraw z wersji 2.1.2. Od tej wersji warto zwrócić uwagę na trzy rzeczy. Po pierwsze, problemy z klatkami light po kalibracji często biorą się z wymieszania plików Master wykonanych na zewnątrz (o czym była mowa wyżej). Po drugie, Dark frame optimization stosuje się głównie wtedy, gdy długości klatek light i dark do siebie nie pasują (na przykład 20-minutowa klatka light i 30-minutowa klatka dark); najlepiej sprawdza się przy długich ekspozycjach i wielu klatkach, a żeby w ogóle zobaczyć tę opcję, trzeba kliknąć plik light. Po trzecie, u osób używających CCD z czasem pojawiają się defekty, zwłaszcza column defect — dawniej trzeba było usuwać je bardzo czasochłonną defect map, a WBPP daje do pomocy Linear Pattern Subtraction.

Execution Monitor (okno monitorowania wykonania). Po aktualizacji do nowszej wersji podczas pracy WBPP wyskakuje okno WBPP Execution Monitor, które mówi ci, na którym kroku właśnie jesteś i jakie prace zostały wykonane; jego zawartość można nawet przewijać i przeciągać w górę i w dół. W starszych wersjach użytkownik poza wpatrywaniem się w bieżące okno console nie miał żadnego sposobu, by poznać postęp — mógł tylko czekać, aż wszystko się skończy albo zatrzyma na błędzie, i dopiero wtedy sprawdzić coś przez console.

Pamięć podręczna (cache) — od wersji 2.5. To bardzo istotne usprawnienie. Jeśli po przejściu całego zestawu zauważysz błąd albo coś niezgodnego z oczekiwaniami i zmienisz część ustawień, czy trzeba znowu przepuszczać wszystko od nowa? Nie trzeba. Pamięć podręczna WBPP sama to rozstrzyga: jeżeli zmienione ustawienie nie wpływa na obrazy, po prostu użyje wyniku z poprzedniego przebiegu; ponownie przetworzona zostanie tylko ta część obrazów, na którą zmiana naprawdę wpływa, dzięki czemu czas drugiego uruchomienia skraca się bardzo wyraźnie.

Odtwarzalny skrypt w folderze log. Najnowszy WBPP po zakończeniu pracy zostawia w folderze log szczegółowy log oraz skrypt wykonania. Gdy wczytasz ten skrypt w edytorze Script Editor w PI, skompilujesz go i uruchomisz, wyskoczy Process Container zawierający ikony ICON wszystkich procesów z podmenu Pipeline w głównym oknie WBPP — każdą z nich można otworzyć w PI osobno. To ogromne ułatwienie przy debugowaniu: jeśli na przykład chcesz sprawdzić, dlaczego Cosmetic Correction nie wykonał się poprawnie albo nie dał efektu, otworzysz stąd ten konkretny krok i zobaczysz, czy problem tkwi w parametrach, czy w bugu samego programu. Inne zastosowanie: kto nie czuje się pewnie w obróbce wstępnej, może tą drogą odczytać każdy krok i każdy parametr WBPP i potraktować to jako wzorcowy szablon do własnego, ręcznego wykonania.

Pierwszy krok po otwarciu WBPP wcale nie polega na wczytaniu plików
Na koniec wróćmy do rzeczy najbardziej podstawowej, a zarazem najłatwiejszej do zepsucia. Pierwszym krokiem po otwarciu WBPP nie jest pośpieszne „wczytywanie plików light, dark, flat i bias”.
WBPP należy do nielicznych skryptów, które zachowują zawartość z poprzedniego użycia. Jeśli korzystałeś z niego wcześniej, wszystkie ustawienia wciąż tam są. Dlatego pierwszym krokiem powinno być wyczyszczenie listy plików; czy przy okazji wyczyścić także pozostałe parametry, zależy już od potrzeb.
A drugi krok bardzo łatwo pominąć — wiele filmów instruktażowych też o nim nie wspomina: naciśnij Purge Cache. Wyżej była mowa o zaletach pamięci podręcznej (od wersji 2.5): gdy zmienisz tylko część parametrów, WBPP przelicza wyłącznie to, co się zmieniło, a resztę bierze z pamięci podręcznej. Ale z drugiej strony jeśli przebieg już się odbył, a ta zawartość pamięci podręcznej nie jest ci już potrzebna, trzeba ją w całości wyczyścić; inaczej przy uruchamianiu nowych plików powtarzająca się zawartość pamięci podręcznej może wywołać nieprzewidywalne błędy.

Wstępne ustawienia środowiska dla użytkowników Windows
Jeśli uruchamiasz WBPP w systemie Windows, dwa ustawienia środowiska najlepiej załatwić od razu na starcie — oszczędzą ci później całej sterty niezrozumiałych błędów (komunikaty o tych błędach i ich diagnostykę znajdziesz w artykule „WBPP Troubleshooting”):
Włącz obsługę długich ścieżek. Po pewnej aktualizacji WBPP w systemie Windows zaczął często pokazywać ostrzeżenie o długiej ścieżce, twierdząc, że nie potrafi utworzyć ścieżki dłuższej niż 256 znaków. Sam raz miałem tak, że przez zbyt długą ścieżkę pliki utworzone przez WBPP wyszły uszkodzone (bo nie dało się ich zapisać). Rozwiązanie: wyszukaj regedit na pasku zadań, otwórz Edytor rejestru (Registry Editor), znajdź odpowiednie miejsce i zmień wartość LongPathsEnabled na 1; po ponownym uruchomieniu programu PixInsight to ostrzeżenie już się nie pojawi.

Unikaj ścieżek ze znakami spoza ASCII (na przykład chińskimi). To także powód, dla którego nie polecam używania chińskich znaków w ścieżkach plików. W systemie Windows, jeśli domyślnym programem do otwierania jest PI, dwukrotne kliknięcie pliku ze ścieżką zawierającą chińskie znaki wywoła komunikat o błędzie, a te „krzaczki” w nim to właśnie chiński tekst. Obejście jest takie: bez zmieniania ścieżki po prostu przeciągnij plik do PI, a wtedy się otworzy.

Gdy poskładasz to wszystko razem, całościowy obraz WBPP staje się w zasadzie jasny: to potężny, zautomatyzowany silnik obróbki wstępnej, ale musisz pamiętać, że jego wynik integracji jest tylko podglądem, umieć grupować kalibrację, dobrze wykorzystywać pamięć podręczną oraz wiedzieć, co wyczyścić i jakie ustawienia środowiska wprowadzić przed rozpoczęciem pracy. Gdy pojęcia są poukładane, reszta to już tylko kwestia wprawy.