Teoretycznie idealnym filtrem antyaliasingu dla dyskretnie próbkowanych danych jest filtr cynkowy , ponieważ doskonale usuwa wszystkie częstotliwości wyższe niż częstotliwość Nyquista, pozostawiając w spokoju wszystkie niższe. Tak więc do pewnego stopnia możemy spodziewać się filtrów antyaliasingu, które bardziej przypominają filtr sinc w celu uzyskania lepszej jakości zdjęć.
Filtr namiotowy (filtr trójkątny) z pewnością przypomina centralny szczyt filtra cynkowego bardziej niż filtr pudełkowy:
Dwububowy filtr (np. Mitchell-Netravali) mógłby jeszcze dokładniej uchwycić kształt cynku, w tym jego pierwsze dwa ujemne płaty.
Rzeczywistość wyboru filtra jest nieco bardziej subtelna niż „przybliżenie sinusa, jak to możliwe”, ponieważ istnieją różne rodzaje artefaktów, które mogą być generowane przez „nie idealne” filtry antyaliasingowe, takie jak aliasing, nadmierne rozmycie i dzwonienie. Ponadto różne filtry mogą być mniej lub bardziej drogie obliczeniowo. Jest to więc gra polegająca na próbie wymiany różnych artefaktów przeciwko sobie i na wydajność. Różne sceny / obrazy mogą sprzyjać takiemu wyborowi, a częściowo jest to również ocena estetyczna.
Jeśli chodzi o to, dlaczego smallpt korzysta w szczególności z filtra namiotu, zgaduję, że potrzebna jest kombinacja wydajności (jest to szybki filtr do oceny) i zwięzłości - można to zrobić za pomocą kilku linii kodu, podczas gdy filtr bicubic zająłby sporo więcej kod.
Nawiasem mówiąc, smallpt faktycznie używa siatki subpikseli 2x2 i umieszcza filtr namiotu na każdym subpikselu , a następnie uśrednia wyniki czterech subpikseli. Co ciekawe, ogólny efekt to suma czterech namiotów, które wyglądają jak piramida z płaskim szczytem:
Nie jestem pewien, czy było to celowe, czy po prostu tak się udało. Domyślam się, że skutkuje to nieco ostrzejszym obrazem niż w przypadku użycia jednego filtra namiotu na piksel (z powodu węższej obsługi), ale prawdopodobnie również bardziej widocznego aliasingu.
Właśnie obejrzałem artykuły w Wikipedii na temat interpolacji dwuliniowej. Filtr namiotowy jest rodzajem interpolacji dwuliniowej. Interpolacja dwuliniowa interpoluje na 2 wymiarach. Najpierw interpoluje liniowo na jednym wymiarze, a następnie na drugim.
Kiedy patrzysz na to zdjęcie, najpierw robi to na kolumnie, a następnie na przykład w wierszu.
Powodem, dla którego może to być lepsze niż uśrednianie kolorów, jest to, że gdy jeden z punktów zbliża się do środka niż inny, przyczynia się bardziej do ostatecznego koloru. Dzięki uśrednieniu kolorów wszystkie punkty mają równy udział, nawet gdy jeden punkt znajduje się bliżej środka niż inny punkt.
Jeśli wszystkie 4 punkty znajdują się na ustalonych pozycjach w równej odległości od centrum, otrzymasz dokładnie 25% wkładu na wszystkie punkty, to tyle samo co uśrednianie.
Oznacza to, że po wdrożeniu wygładzania wystarczy renderowanie w rozdzielczości 4-krotnie wyższej, a następnie próbkowanie w dół. Dane wyjściowe między dwoma sposobami powinny być takie same, o ile je rozumiem.
Którego filtra należy użyć? To zależy od tego, czego chcesz i twojej sytuacji. Jeśli wybierzesz losowe lokalizacje subpikseli dla swoich próbek, lepszym rozwiązaniem może być interpolacja dwuliniowa. Jeśli wszystkie punkty są ustalone, a ty renderujesz tylko w wyższej rozdzielczości, uśrednianie może być przydatne. W końcu to tylko niektóre subpiksele, których normalnie nie zauważasz lub ledwo zauważasz, więc jeśli istnieje jakiś rodzaj AA, to jest wystarczająco dobry. Ale to tylko moja opinia i prawdopodobnie przeciętnego widza animacji 3D lub coś w tym rodzaju.
Dwububowa interpolacja zapewnia gładszy wygląd. Bicubic:
Dwuliniowy:
Który jest lepszy? To zależy od tego, co lubisz, i nie sądzę, że będzie ogromna różnica.
Moje źródła: https://en.wikipedia.org/wiki/Reconstruction_filter#Image_processing
https://en.wikipedia.org/wiki/Bilinear_interpolation
https://en.wikipedia.org/wiki/Bicubic_interpolation
(Obrazy pochodzą z Wikipedii i są własnością publiczną)
Mam nadzieję, że to pomaga, chcę tylko powiedzieć, że nie jestem profesjonalistą, jestem po prostu kimś, kto lubi grafiki komputerowe. Możliwe, że popełniłem kilka błędów. Jeśli tak, po prostu powiedz to, a ja to zmienię!
źródło