Co powoduje aliasing?

47

Zawsze słyszę o aliasingu i antyaliasingu i wiem, jak to wygląda, ale nie rozumiem, co go powoduje. Czy to zjawisko fizyczne? A może numeryczny?

Jeśli to pomaga wyjaśnić, mam trochę wiedzy programistycznej, ale nie w grach wideo ani grafice.

Kruncho
źródło

Odpowiedzi:

60

Czy to zjawisko fizyczne? czy numerycznie?

To pytanie sugeruje mi, że tak naprawdę nie wiesz, co oznacza aliasing / anty-aliasing. To znaczy, mówisz, że „wiesz, jak to wygląda”, ale gdybyś rzeczywiście wiedział, co oznaczają te terminy, prawdopodobnie zdałbyś sobie sprawę, że twoje pytanie jest bezsensowne. Aliasing jest efektem ubocznym renderowania grafiki komputerowej, a grafika komputerowa z definicji nie jest zjawiskiem fizycznym.

„Aliasing” odnosi się tylko do stopniowego wyglądu linii pod kątem, ponieważ grafika komputerowa składa się z wielu małych kwadratów w siatce. Oto obraz ilustrujący to, o czym mówię: wprowadź opis zdjęcia tutaj

Jest to problem przy każdym renderowaniu pikseli na obrazie, niezależnie od tego, czy rysujesz odręcznie, czy piszesz algorytm do obliczania pikseli dla wielokąta 3D. To tylko efekt uboczny tego, że obraz jest kwadratową siatką pikseli. „Wygładzanie” ma miejsce, gdy ukrywasz wygląd schodów, łącząc kolory wzdłuż pikseli krawędzi.

jhocking
źródło
18
@Kruncho Nigdy nie żałuj, że się mylisz, chyba że uczysz innych swoich błędów! Przykro mi tylko wtedy, gdy nie próbujesz zrozumieć lub nie chcesz być poprawiony. Twój błąd faktycznie pomógł wyjaśnić, o co dokładnie prosiłeś, aby wiedzieć: („jak” aliasing zachodzi w grafice komputerowej?). Przy okazji, ta odpowiedź najlepiej ilustruje, co, jak i dlaczego jest to kwestia liczbowa. Można to uznać za ograniczenie próby reprezentowania liczb ułamkowych przy użyciu tylko całych liczb całkowitych. Nie ma półpikseli itp. W efekcie powstają blokowe obrazy.
Fuzzy Logic,
5
@jhocking Korekta pedantyczna: kwadratowość pikseli nie jest tak naprawdę istotna. Aliasing byłby taki sam, gdyby każdy piksel był okrągłym punktem o tym samym rozmiarze.
Fuzzy Logic,
10
@jhocking „Kwadratowa siatka” też go nie wycina. Nadal uzyskasz aliasing (wyglądający nieco inaczej), jeśli piksele byłyby ułożone w sześciokątną siatkę. Liczy się tylko to, że piksele są ułożone w regularny wzór i mają niezerowy rozmiar, a oba te warunki są prawdziwe dla każdej możliwej technologii wyświetlania.
Mike Scott,
3
Rozłączasz się ze słowem „kwadrat”, gdy jest to tylko deskryptor dla „siatki”.
jhocking
11
@MikeScott: Nawet przy nieregularnie rozmieszczonych pikselach pojawi się aliasing. :))) Ważnym warunkiem pojawienia się aliasingu jest to, że maksymalna częstotliwość oryginalnego sygnału (oryginalny obraz) jest wyższa niż 2 * (1 / T) (gdzie T to odstęp między próbkami = odległość między pikselami ). --- Gdy oryginalny obraz ma ostre krawędzie (jak czarna linia na białym tle), wówczas jego maksymalna częstotliwość jest nieskończona.
pabouk,
121

Przyjęta odpowiedź nie jest ściśle poprawna, chociaż dotyczy najczęściej wykorzystywanych grafik komputerowych. Aliasing jest podstawową koncepcją przetwarzania sygnałów, a jego matematyczna teoria poprzedza wyświetlacze komputerowe. Nie jest też prawdą, że „jest to efekt uboczny faktu, że piksele są kwadratowe”. Aliasing występuje za każdym razem, gdy dyskretnie próbkujesz sygnał z częstotliwością niższą niż częstotliwość Nyquista dla tego sygnału i wpływa on na dźwięk cyfrowy, a także obrazy i wiele innych rodzajów dyskretnie próbkowanych sygnałów. Aliasing w grafice komputerowej to efekt uboczny dyskretnego próbkowania, a nie kształtu pikseli.

Anty-aliasing w grafice komputerowej jest głębokim i złożonym tematem i jest o wiele więcej niż tylko anty-aliasing krawędzi. Ponownie, istnieje wiele podstawowych teorii związanych z przetwarzaniem sygnału i jest to aktywny obszar badań w grafice komputerowej, w jaki sposób skutecznie wygładzać, nie tylko krawędzie, ale także tymczasowe aliasing, aliasing podczas rekonstrukcji BRDF w shadery pikseli, w cieniu krawędzie i wiele innych obszarów. Mapowanie MIP tekstur w grafice 3D to dobrze znana technika antyaliasingu, która rozwiązuje ważny problem inny niż na przykład antyaliasing krawędzi.

To naprawdę zjawisko matematyczne bardziej niż fizyczne, ale pojawia się w inżynierii w wielu obszarach innych niż grafika komputerowa. Tak naprawdę nie opisałbym tego również jako zjawiska liczbowego - jest to wynik dyskretnego próbkowania, a nie dyskretnej reprezentacji wartości liczbowych na komputerze, chociaż może to również powodować efekty aliasingu. Zrozumienie podstaw przetwarzania sygnałów jest dobrym fundamentem do zrozumienia, w jaki sposób aliasing przejawia się w grafice komputerowej, oraz do zrozumienia, jak go zmniejszyć.

mattnewport
źródło
6
Z jednej strony, hej, nauczyłem się dzisiaj czegoś nowego, nigdy nie słyszałem o aliasingu w innym kontekście niż krawędzie grafiki. To powiedziawszy, ten dodatkowy szczegół techniczny nie wydaje się być sprzeczny z wyjaśnieniem „jest to efekt uboczny faktu, że piksele są kwadratowe”. „Dyskretne próbkowanie” to po prostu fantazyjny sposób powiedzenia „krawędź to tak naprawdę wiązka dyskretnych pikseli, a nie linia ciągła”.
jhocking
15
+1 za poprawność techniczną. Chociaż jest to nieco zbyt techniczne, biorąc pod uwagę poziom zadanego pytania, i tak naprawdę nie odnosi się do domyślnego pytania. Przyjęta odpowiedź jest bardziej odpowiednia do celu pytania. Nauczyłem się jednak czegoś nowego, więc dziękuję za opracowanie :)
Fuzzy Logic,
6
@ jhocking przepraszam, nasi programiści graficzni mają tendencję do nieco pracowania nad aliasingiem :) Myślę, że twoja odpowiedź odpowiada na pytanie, ale jeśli ktoś chce pójść głębiej w grafice komputerowej, myślę, że warto zrozumieć, że aliasing jest zjawiskiem matematycznym z mnóstwo teorii za tym. Cały ten techniczny szczegół jest przydatny do ostatecznego celu zrobienia ładnych zdjęć w naszych grach :)
mattnewport
4
@ jhocking Chodzi o to, że nie ma znaczenia, jaki kształt mają piksele - więc nie jest to efekt uboczny faktu, że piksele są kwadratowe , to efekt uboczny faktu, że piksele nie zmieniają koloru na swoim stopień. Zresztą piksel nie jest małym kwadratem .
Daniel Wagner,
1
W twojej odpowiedzi brakuje zdjęć, w przeciwnym razie byłby to na pewno zaakceptowany. Oprócz przykładowego wygładzania krawędzi potrzebuje: 1) animowanego gifa kół samochodowych obracających się zgodnie z ruchem wskazówek zegara i nagle zatrzymujących się i zmieniających kierunek. 2) szachownica 3D (znasz tę, która zmierza do nieskończoności) ... Studiowałem także przetwarzanie sygnałów.
MartinTeeVarga
68

Dodając do pozostałych dwóch odpowiedzi, oto bardziej intuicyjne wyjaśnienie tego, co się dzieje.

Aliasing w wielokącie 2D

Kwadraty siatki reprezentują piksele. Czerwony wielokąt po lewej stronie jest rysowanym kształtem, reprezentowanym wewnętrznie jako sekwencja punktów. Podczas renderowania jest konwertowany z listy punktów na bufor kolorów pikseli. Dyskretne próbkowanie określa, które piksele są ciemne, a które jasne. Na podstawie tego, ile wielokąta pokrywa każdy piksel.

Aby odpowiedzieć na twoje pytanie, jest to zjawisko numeryczne / matematyczne, ponieważ informacje o oryginalnym kształcie są tracone z powodu przybliżenia.

Wygładzanie krawędzi

Wygładzanie ma miejsce, gdy renderowanie próbuje poprawić aliasing, zmniejszając intensywność częściowo zakrytych pikseli.

aebabis
źródło
5
Oto pierwsza odpowiedź, która naprawdę wyjaśnia, co się dzieje. Dobra robota.
Beska,
1
„zmniejszenie intensywności częściowo pokrytych pikseli” nie jest dokładnie takie, jak rozumiem. Uważam, że większość algorytmów antyaliasingu stosuje filtr dolnoprzepustowy (taki sam jak filtr rozmycia), czasami w całej renderowanej ramce (jak w przypadku FXAA) lub bardziej inteligentne algorytmy wykonują go tylko poza granicami krawędzi. MSAA robi to w inny sposób, ale ogólny efekt pozostaje taki jak LPF ponad twardymi granicami krawędzi.
Łukasz
1
@Luke Nie chciałem, aby ostatni akapit był wyjaśnieniem tego, jak działają rzeczy; po prostu opisuje wynik antyaliasingu. „Intensywny” nie jest właściwym terminem, ale ma zastosowanie, gdy wygładzanie jest wykonywane na kształcie, którego kolor jest bardziej intensywny niż tło. To wszystko co powiedziałem.
aebabis
3

W polu przetwarzania sygnału aliasing odnosi się do błędnej identyfikacji częstotliwości sygnału. Na przykład z powodu braku odpowiedniego uwzględnienia w etapie niedostatecznego próbkowania może to prowadzić do błędów generowania i zniekształceń. Można go uogólnić na dyskretny sygnał 2D, taki jak obraz.

użytkownik70164
źródło