Nie ma niestety dobrego polskiego słowa na ten etap obróbki. Generalnie dążymy do takiego przekształcenia zdjęcia, żeby można było go przedstawić w skali 8-bitowej. Jeżeli wykonałeś fotkę za pomocą specjalizowanej kamery lub lustrzanką cyfrową i przetwarzasz surowy sygnał (RAW) masz do czynienia z danymi opisanymi 16 bitami na każdy kanał. Oznacza to, że każdy z kolorów może być opisany za pomocą 65535 różnych wartości (w przypadku obrazów czarno-białych 65535 odcieni szarości). Dodatkowo sygnał ten jest w mniejszym lub większym stopniu liniowy, co oznacza, że obiekt dwa razy jaśniejszy jest reprezentowany przez dwukrotnie większą liczbę, trzy razy jaśniejszy przez trzy krotnie większą liczbę, itd. Pojawiają się więc dwa problemy: po pierwsze nasze zmysły (w tym również wzrok) nie nie są przetwornikami liniowymi, po drugie liczba odcieni naszego zdjęcia jest zbyt duża, żeby można je było pokazać w całej okazałości na monitorze, odbitce, wydruku itp. To powoduje, że osiągnięte do tej pory wyniki na pierwszy rzut oka są kiepskie. Manipulując suwakami w oknie poziomów możemy uzyskać ustawienia przy których widoczne są słabe obiekty (np. mgławice, galaktyki, najsłabsze zarejestrowane gwiazdy), ale w takim przypadku jasne gwiazdy tworzą wielkie, rozlane placki. Jeżeli ustawimy suwaki tak żeby dobrze wyglądały jasne gwiazdy giną obiekty słabsze. Jest to spowodowane tym, że nasz monitor nie jest w stanie wyświetlić obrazu o tak dużej rozpiętości tonalnej, a nasze oko nie radzi sobie z sygnałem liniowym. Musimy dokonać przekształcenia, które zmniejszy rozpiętość tonalną obrazka i dodatkowo "wykrzywi" jego liniową charakterystykę - różnice sygnału w ciemnych partiach obrazu muszą być znacznie większe niż w jasnych. Dążymy więc do przekształcenia obrazu, które schematycznie przedstawia rysunek 9.1.
Rys.9.1. Idea przekształcenia danych liniowych
Iris oferuje kilka funkcji, którymi można przekształcać obraz. Dwie podstawowe to View->Dynamic stretching i View->Color stretching. Idea ich działania jest podobna i odpowiada przekształceniu przedstawionemu na rys.9.1.. Dynamic stretching modyfikuje jasność poszczególnych punktów i jest zbliżona w działaniu do klasycznego algorytmu DDP (Digital Processing Development). Color stretching działa w oparciu o funkcją asinh (area sinus hiperboliczny) - to w miarę nowy pomysł w obróbce zdjęć astro, ale stosowany np. przez zespół, który zajmuje się materiałami z HST. Przekształcenie to poprawia widoczność ciemnych części obrazu, zachowując strukturę jasnych obiektów i dodatkowo wzmacnia kolorystykę zdjęcia. Ten etap obróbki omówię na przykładzie tej właśnie funkcji.
Po kliknięciu opcji View->Color stretching pojawi się okno Color stretching (rys.9.2.). Zwróć uwagę, że nie blokuje ono dostępu do innych elementów programu i możesz nadal korzystać np. z okna poziomów lub wprowadzać polecenia w oknie komend (za chwilę bardzo się to przyda).
Rys.9.2. Okno Color stretching
Parametr Stretch należy traktować jako agresywność działania algorytmu (patrz poniżej), natomiast Intensity jest współczynnikiem skalującym, który pozwala na utrzymanie odpowiedniego poziomu jasności. Nie można niestety podać uniwersalnego przepisu na dobór tych parametrów. Do każdego zdjęcia należy podejść indywidualnie i znaleźć najlepsze ustawienia drogą kolejnych eksperymentów. Proponuję rozpocząć od parametru Stretch i dobierać do niego odpowiednią wartość Intensity.
Jakie znaczenie ma parametr Stretch? W pewnym uproszczeniu można przyjąć, że przekształcenie wykonywane przez algorytm opisuje zależność:
y = asinh(stretch*x)
gdzie x to oryginalne dane (wartości pikseli) z Twojego zdjęcie, a y to sygnał wynikowy, czyli wartości jakie pojawią się na zdjęciu po przekształceniu. Wpływ parametru na uzyskany wynik dla różnych wartości parametru Stretch pokazują poniższe rysunki. Oś pozioma odpowiada danym wejściowym (jasności pikseli na obrazie oryginalnym), a pionowa wartości, którą otrzymają po przekształceniu.
Rys.9.3a. Wykses asinh dla stretch=0.0005
Rys.9.3b. Wykses asinh dla stretch=0.005
Rys.9.3c. Wykses asinh dla stretch=0.5
Jak widać większe wartości parametru powodują szybszy wzrost funkcji w jej początkowym odcinku, co odpowiada bardziej agresywnemu podbijaniu wartości w ciemnych partiach obrazu (trzeba uważać, łatwo w ten sposób wyciągnąć szum z tła). Pokazane powyżej wykresy potraktuj jedynie jako ilustrację - dobierałem wartości parametru w taki sposób, aby wyraźnie zademonstrować jego wpływ na kształt krzywej. W przypadku funkcji Color stretching orientacyjnie można przyjąć, że wartość 0.001 daje w efekcie delikatne działanie algorytmu, natomiast 0.01 odpowiada bardzo agresywnemu przekształceniu.
Przy pomocy parametru Intensity możemy wpływać na uzyskiwaną skalę jasności. W rzeczywistości na powyższych wykresach wartości maksymalne były różne - doprowadziłem je do wspólnej skali dobierając odpowiedni współczynnik przez który pomnożyłem oryginalny wynik. Manipulując tymi dwoma wartościami należy doprowadzić do sytuacji, w której widać możliwie najwięcej detali, ale nie widać jeszcze szumu. Pamiętaj, że każda zmiana parametrów powoduje zmianę skali jasności pikseli i pociąga za sobą konieczność dopasowania poziomów. W tym miejscu przydaje się możliwość korzystania z okna komend. Proponuję każdym po ustawieniu nowych wartości przejść do okna komend (bez zamykania Color stretching) i wykonać bezparametrową komendę STAT. Wyświetla ona w oknie danych wyjściowych aktualną statystykę zdjęcia, m.in. maksymalne i minimalne jasności w każdym kanale. Na podstawie tych informacji należy odpowiednio ustawić poziomy i dopiero w tedy ocenić wygląd zdjęcia. Dopiero gdy uzyskamy wynik w pełni satysfakcjonujący klikamy na przycisku OK i zapisujemy zdjęcie w ostatecznej postaci.
Uwaga: Iris zapisuje dane w postaci 16-bitowej liczby ze znakiem. Oznacza to, że wartości, które mogą przyjmować poszczególne punkty obrazu mieszczą się w przedziale -32768..32767. Nie należy obawiać się wartości ujemnych - to zupełnie normalne, że pojawiają się one w ciemnych partiach zdjęcia.