Z notatnika optyka: USM

Autor: Bernard Piechal

31 Grudzień 2011
Artykuł na: 6-9 minut
Po krótkiej, świątecznej przerwie przyszła pora na kolejny odcinek cyklu "Z notatnika optyka". Tym razem o filtrze "unsharp mask" i wyostrzaniu. Zapraszamy do lektury.

Dlaczego to się nazywa "UNsharp mask"?

W ostatnim czasie pisałem trochę o rozdzielczości. Okazało się m.in., że współczesne aparaty cyfrowe są w tej dziedzinie dość ograniczone. A jednak, jeżeli ogląda się dobre cyfrowe zdjęcia, ten fakt wcale nie rzuca się w oczy. Przeciwnie, bardzo wiele zdjęć zrobionych przez fotografów-cyfrzarzy, którzy znają się na rzeczy, wygląda ostrzej niż wiele zdjęć na robionych na filmach podobnych formatów. To dlatego, że to, co nam się wydaje ostre, to niekoniecznie to, co rzeczywiście jest ostre. Jednym słowem można bardzo skutecznie oszukiwać. W dzisiejszym odcinku będzie o tym, jak działa najpopularniejszy chyba filtr wyostrzający zdjęcia. Od razu ostrzegam, że jest to kurs włażący w same podstawy działania filtra, ale z tego wyniknie jak ustawiać poszczególne jego parametry i czym grozi złe ustawienie każdego z nich.

Co nam się wydaje ostre

Mamy dwa obrazki przedstawiające jakąś krawędź:

Krawędź na drugim obrazku wydaje nam się troszkę ostrzejsza. Ale to tylko złudzenie. Na pierwszym obrazku granica pomiędzy jasnoszarym, a ciemnoszarym jest tak ostra, jak się tylko da - po prostu następuje skokowa zmiana koloru. Natomiast obrazek drugi powstał w ten sposób, że ostatni piksel jasnego obrazu trochę jeszcze rozjaśniłem, a pierwszy ciemny - przyciemniłem. I voila, od razu wydaje się ostrzej.

Działa to dlatego, że wrażenie ostrości nie zależy tylko od tego, jak płynne będzie przejście pomiędzy dwoma obszarami – jasnym i ciemnym, ale też od kontrastu pomiędzy jasnym i ciemnym. A więc, powiększając ten kontrast, choćby w małym obszarze, stwarzamy wrażenie większej ostrości.

To się wcale nie zaczęło na komputerze

A więc aby wyostrzyć zdjęcie, należy selektywnie podbić kontrast tylko na krawędziach. Tylko jak?

Metodę, która jest używana w niemal wszystkich programach do obróbki zdjęć, wymyślono właściwie w latach 30 XXw., a więc jakiś czas przed komputerami. Jest w pełni zgodna ze znaną zasadą pewnego radzieckiego teoretyka wynalazczości: jak czegoś się nie da zrobić w jeden sposób, spróbuj to zrobić dokładnie odwrotnie. Aby wyostrzyć należy... rozmyć. Najpierw z negatywu robiono pozytyw tych samych rozmiarów, który miał dwie cechy: był nisko kontrastowy i trochę nieostry. Potem precyzyjnie składano ten pozytyw z oryginalnym negatywem i z tego robiono odbitkę. Wychodziło mniej więcej coś takiego:

Złożenie negatywu z mniej kontrastowym pozytywem powodował spadek ogólnego kontrastu negatywu, więc odbitkę trzeba było zrobić na bardziej kontrastowym papierze. Ale, jako że pozytyw był bardziej nieostry od oryginalnego negatywu, kontrast krawędzi spadał znacznie mniej. W efekcie, po podniesieniu kontrastu papieru dostawano obraz, który miał ogólny kontrast taki jak poprzednio, ale z podniesionym kontrastem w obrębie krawędzi i drobnych detali. A taki obraz wydawał się ostrzejszy.

Jak to się robi na kompie

Komputer używa algorytmu bazującego w zasadzie na tej samej zasadzie. Ten algorytm nazywa się "Unsharp mask", czyli dosłownie tłumacząc "nieostra maska" i występuje chyba we wszystkich choć trochę zaawansowanych programach graficznych i nie tylko (występuje też na przykład w najpopularniejszym programie do obrabiania danych pomiarowych dla fizyków). Co toto robi?

Po pierwsze to bierze zdjęcie, które ma wyostrzyć i je rozmywa "rozmyciem gaussowskim" (wersje angielskie aplikują gaussian blur). I tu wchodzi pierwszy parametr do ustawienia: promień. To jest ten sam promień jaki jest używany w filtrze "rozmycie gaussowskie" i mówi jak odległe piksele będą uśredniane. Im większy promień, tym mocniej rozmyty zostanie obrazek.

Następnie tą rozmytą wersję odejmuje się od początkowego obrazka. Przy czym pisząc "odejmuje" dokładnie odejmowanie mam na myśli: od wartości składowej czerwonej obrazka początkowego odejmuje wartość składowej czerwonej obrazka rozmytego, podobnie z pozostałymi składowymi. W ten sposób powstaje taki śmieszny obraz samych krawędzi:

Ten, nazwijmy go roboczo obrazek różnicowy (ta nazwa nie jest żadną przyjętą nazwą, tylko moją radosną twórczością), to taki zbiór wartości (zarówno dodatnich jak i ujemnych), który pokazuje, o ile i w którą stronę rozmyta wersja różni się od oryginalnej. W następnym kroku mnoży się go przez liczbę, która zależy od tego, co wpiszemy w pole "wartość" (lub "amount") i dodaje do obrazu początkowego. Ponieważ po ciemnej stronie krawędzi obrazek różnicowy ma wartości ujemne, te piksele zostaną przyciemnione. Analogicznie, po jasnej stronie krawędzi piksele zostaną rozjaśnione. W efekcie kontrast na krawędzi zostanie powiększony, ergo krawędź zostanie wyostrzona.

Zwracam uwagę, że to, co narysowałem, przedstawia sytuację, w której użytkownik nieco przesadził z "wartością" i "promieniem". Powstają wtedy takie przestrzelenia - jasne obwódki wokół ciemnych obiektów. Narysowałem to po to, aby pokazać, który parametr na co wpływa. Nie jest to idealnie ścisła zależność, jednak ustawiając promień wpływamy przede wszystkim na to, jak szeroka będzie jasna obwódka. Natomiast wartość wpływa głównie na to, jak będzie jasna. Właściwie da się wartość ustawić tak, aby jasnych obwódek w ogóle nie było, ale tylko pod warunkiem, że nie ustawimy zbyt dużego promienia. Z drugiej strony promień nie może być zbyt mały, bo wtedy filtr przestaje działać w ogóle - obrazki rozmyty i początkowy przestają się różnić. Jako wartość początkową (do dalszych prób) polecałbym ustawić promień na mniej więcej tyle pikseli, ile zajmuje przejście od jasnego do ciemnego - a więc będą to zupełnie inne wartości, gdy wyostrzamy zdjęcia w rozdzielczościach do druku, a inne (dużo mniejsze), gdy wyostrzamy zdjęcia w rozdzielczościach ekranowych.

Próg

A właściwie tak to by wyglądało, gdybyśmy wartość ostatniego parametru ustawili na 0. Ten ostatni parametr to "próg" (po angielsku "threshold"). I jest to jedyny parametr, którego nie ma w tradycyjnej, ciemniowej wersji wyostrzania.

Jeżeli wartość "progu" ustawimy na coś większego od zera, to program będzie sprawdzał, piksel po pikselu jak duża jest różnica pomiędzy obrazkiem początkowym a wersją rozmytą. Jeżeli różnica w przypadku danego piksela jest większa, niż to, co użytkownik wybrał w polu "próg", to program zaaplikuje wyostrzanie tak, jak to opisałem powyżej. Natomiast jeżeli różnica jest mniejsza od wartości progowej, program z tym pikselem... nie zrobi nic - po wyostrzeniu ten piksel się nie zmieni. Inaczej mówiąc parametr "próg" wyłącza cały filtr wyostrzający dla obszarów, gdzie zmiany jasności czy koloru są nie dość szybkie. Celem istnienia tego parametru jest przeciwdziałanie skutkowi ubocznemu wyostrzania: wyostrzaniu i potęgowaniu szumu.

Jednak działanie progu samo zostawia skutki uboczne. Powoduje, że wprawdzie szum i ziarno nie są wyostrzane, ale w obrębie samej wyostrzonej krawędzi powstaje efekt rozdzielenia tonów. Ostatni piksel, który znajdzie się "poniżej progu" w ogóle nie zostanie zmieniony, ale następny zostanie już zmieniony bardzo. Gdzieś w połowie przejścia też będzie obszar, w którym piksele zostaną zakwalifikowane jako te, których nie należy zmieniać.

W efekcie, zamiast ostrzejszego ale płynnego przejścia od jasnego do ciemnego, dostaniemy krawędź przypominającą nieco mapę hipsometryczną. Przykład z życia:

To jest powiększony kawałek zdjęcia wyostrzonego z progiem ustawionym na zero. Ten sam kawałek wyostrzony z dokładnie identycznymi parametrami wartość i promień, ale z niezerowym progiem wygląda tak:

I można zobaczyć, jak ładnie pominięty przy wyostrzaniu został szum, oraz jakiego rodzaju artefakt powstał w zamian.

Za tydzień zapraszam na ostatni odcinek. Właściwie będzie to odcinek bonusowy, klasa będzie oglądać film

Skopiuj link
Słowa kluczowe:
Komentarze
Więcej w kategorii: Poradniki
Jak dobrać kabel HDMI do filmowania i streamingu?
Jak dobrać kabel HDMI do filmowania i streamingu?
Jak wybrać kabel HDMI, żeby nie mieć problemów na planie i uzyskać optymalną jakość? W tym poradniku przyglądamy się odpowiednim kablom do filmowania na przykładzie oferty marki...
17
Jak zrobić oryginalne zdjęcie na walentynki? Zapytaliśmy ChatGPT
Jak zrobić oryginalne zdjęcie na walentynki? Zapytaliśmy ChatGPT
Nadal myślisz, że najlepszym pomysłem na walentynkowe zdjęcie jest serce narysowane na zaparowanej szybie? Zobaczcie, co na ten temat ma do powiedzenia sztuczna inteligencja.
4
Oświetlenie filmowe w fotografii portretowej - GlareOne LED 300 BiColor D w praktyce
Oświetlenie filmowe w fotografii portretowej - GlareOne LED 300 BiColor D w praktyce
Filmowo-fotograficzny świat nie mógłby istnieć bez światła. W tym artykule fotograf Piotr Werner na przykładzie lamp GlareOne 300 BiColor D pokazuje trzy filmowe ustawienia...
16
Powiązane artykuły
Wczytaj więcej (16)