Antyaliasing (ang. anti-aliasing) – zespół technik służących zmniejszeniu liczby błędów zniekształceniowych (aliasing, schodkowanie obrazu), powstających przy reprezentacji obrazu (lub innego sygnału) o wysokiej rozdzielczości w rozdzielczości mniejszej.
W grafice komputerowej rezultatem antyaliasingu jest tworzenie wrażenia wygładzenia krawędzi obiektów wyświetlanych na ekranie komputera, który jest ekranem rastrowym.
Wygładzanie krzywych
[edytuj | edytuj kod]Problem aliasingu w grafice rastrowej dotyczy prawie wszystkich krzywych. Wyjątkiem są jedynie pionowo oraz poziomo ułożone linie proste, których grubość jest równa wielokrotności pojedynczego piksela. Dla przykładu, wyświetlana bez użycia antyaliasingu czarna skośna linia prosta na białym tle będzie się składać z czarnych pikseli na białym tle i – przy większości współcześnie używanych rozdzielczości ekranu – będzie w widoczny sposób nierówna (schodkowana).
Antyaliasing w tym przypadku może polegać na uzupełnieniu obrazu o piksele o jasności proporcjonalnej do odległości ich środków od idealnej prostej. W takim rozwiązaniu piksel, przez którego środek przechodzi linia, będzie czarny, a piksel dalej od niej położony – w odpowiednim stopniu szary bądź całkiem biały (w wypadku pikseli, których linia nie przecina). Taka linia będzie wydawać się dużo gładsza wizualnie, jednak nieco rozmazana.
Ze względu na konieczność uzyskania rozsądnego kompromisu między gładkością a rozmyciem stosuje się różne techniki zaniku jasności, oparte np. na różnych miarach odległości. Ze względu na brak obiektywnych metod porównywania efektów zastosowania tych technik, właściwy efekt najczęściej otrzymuje się poprzez eksperymenty.
Supersampling
[edytuj | edytuj kod]Innym rodzajem antyaliasingu jest supersampling (pol. nadpróbkowanie). Jest to rozwiązanie polegające na użyciu tzw. brute force do rozwiązania problemu aliasingu. W tej technice obraz jest renderowany w rozdzielczości odpowiadającej wielokrotności rozdzielczości docelowej, a uzyskany tym sposobem dużo większy obraz jest dyskretyzowany poprzez próbkowanie (ang. sampling) do właściwej, niższej rozdzielczości docelowej. W używanych współcześnie układach graficznych technika ta nosi nazwę antyaliasingu pełnoekranowego (FSAA – ang. Full-Screen Anti-Aliasing), obsługiwanego przez wszystkie nowoczesne karty graficzne.
W większości nowych środowisk graficznych antyaliasing jest stosowany do wygładzania krawędzi czcionek ekranowych. Jest to problem znacznie bardziej złożony niż dla zwykłych linii, ponieważ rozmycia linii, które tworzą glify, mogą powodować nakładanie się i zlewanie blisko leżących linii, co z kolei może znacząco utrudnić odczytanie tekstu. Często jest też niemożliwe stosowanie zaawansowanych technik ze względu na wzrost czasu przetwarzania i dużą ilość tekstu. Między innymi z powodu trudności w zastosowaniu antyaliasingu dla fontów nie zaleca się stosowania pochylonego tekstu (kursywy) w rastrowym urządzeniu wyjściowym (np. ekran monitora) o niedużej rozdzielczości.
W graficznych systemach operacyjnych do renderowania tekstu oprócz antyaliasingu stosuje się również wygładzanie podpikselowe (zwane subpikselowym), które wykorzystuje fakt, że każdy piksel ekranu monitora składa się najczęściej z trzech podpikseli (czerwony, zielony i niebieski), ponieważ działa w modelu barw RGB (zob. rysunek obok). Już odpowiednie modyfikowanie jasności poszczególnych podpikseli pozwala na uzyskanie zadowalających efektów wygładzania czcionek, a zastosowanie równocześnie antyaliasingu doprowadza to działanie do bardzo dobrych rezultatów wizualnych. W systemach Windows w celu zwiększenia czytelności tekstu stosowana jest technologia wygładzania czcionek autorstwa Microsoft o nazwie ClearType, która właśnie wykorzystuje modyfikacje podpikseli wraz z antyaliasingiem.
Przykłady
[edytuj | edytuj kod]czterokrotne powiększenie | oryginalny rozmiar grafiki | ||
---|---|---|---|
bez antyaliasingu | z antyaliasingiem | bez antyalias. | z antyalias. |
Zobacz też
[edytuj | edytuj kod]Linki zewnętrzne
[edytuj | edytuj kod]- Antyaliasing w przykładach (ang.).