Was ist die fundamentale Begründung für Anti-Aliasing mit mehreren Zufallsstichproben innerhalb eines Pixels?

12

In Grafiken ist es üblich, mehrere Samples innerhalb der Grenzen eines Pixels zu nehmen und sie zu kombinieren (meistens nur einen Durchschnitt), um eine endgültige Sample-Pixelfarbe zu erhalten. Dies hat den Effekt eines Anti-Aliasing eines Bildes.

Einerseits macht dies für mich Sinn, weil Sie effektiv die Farbe des Pixels über den Bereich integrieren, den das Pixel darstellt. In dieser Denkrichtung scheint die Mittelung von "zufälligen" Stichproben die ideale Lösung für die Integration von Monte Carlo zu sein. ("zufällig" könnte geschichtet sein, auf blauem Rauschen basieren, Sequenzen mit geringer Diskrepanz usw.)

Andererseits fühlt sich dies aus Sicht der digitalen Signalverarbeitung falsch (oder zumindest nicht so richtig an, wie es sein könnte). Unter diesem Gesichtspunkt scheint es, als würden wir eine Menge Samples nehmen und dann mit einem Box-Filter (Box Blur) ein Downsampling durchführen, um den endgültigen Pixelwert zu erhalten. In diesem Licht scheint es das Ideale zu sein, eine Sinc-Filterung zu verwenden, anstatt die Abtastwerte zu mitteln. Ich konnte sehen, dass der Box-Filter eine billigere Annäherung ist, um in diese Richtung zu denken.

Das macht mich etwas verwirrt. Ist die Grundidee, dass wir den Pixelbereich integrieren und die Mittelung korrekt ist? Oder ist es so, dass wir ein Downsampling durchführen und sinc verwenden sollten, aber einen Box-Filter verwenden, weil er schnell ist?

Oder ist es etwas ganz anderes?

Ein bisschen verwandt: Anti-Aliasing / Filtering in Ray Tracing

Alan Wolfe
quelle
Ich finde
Alan Wolfe

Antworten:

9

Unter dem Gesichtspunkt der Signalverarbeitung nehmen Sie ein Signal im kontinuierlichen Bereich auf und müssen es filtern, um Frequenzen jenseits der Nyquist-Grenze zu entfernen. Diese Filterung führt zur Integration über den Pixelbereich - oder allgemeiner über die Unterstützung Ihres Antialiasing-Kernels (der keine Box sein muss).

x,y

Jetzt möchten Sie es auf eine begrenzte Anzahl von Pixeln konvertieren. Ähnlich wie beim Digitalisieren eines Audiosignals erhalten Sie beim Abtasten ein Aliasing, es sei denn, Sie eliminieren zuerst Frequenzen, die über dem durch die Abtastrate festgelegten Nyquist-Grenzwert liegen. Mit anderen Worten, Sie müssen Features entfernen, die kleiner als das Pixelraster sind. Dazu wenden Sie einen Tiefpassfilter an. Das ideale Tiefpassfilter ist die sinc-Funktion, aber aus praktischen Gründen verwenden wir andere Filter (die Frequenzen über der Nyquist-Grenze nicht perfekt eliminieren, sie aber zumindest dämpfen).

f(x,y)k(x,y)

fgefiltert(x,y)=f(x,y)k(x-x,y-y)dxdy

fgefiltert

kk=1k=0f

kk

Nathan Reed
quelle
Ausgezeichnete Antwort, wie immer.
IvoKabel
4

Sie machen tatsächlich beide Dinge. Sie integrieren den Bereich, und da Ihr Ergebnis immer noch diskrete Abtastwerte sind, rekonstruieren Sie das Signal, damit es kontinuierlich funktioniert. Daher die Filterung höherer Ordnung. (Auch das menschliche Auge ist ein diskreter Sampler, so dass es auch das Signal rekonstruiert.)

Ich habe viel Zeit gebraucht, um mich mit dieser Erklärung auseinanderzusetzen. Was mir geholfen hat, war ein Artikel von Tony Apodaca mit dem Titel The Lore of TDs .

joojaa
quelle
Danke für den tollen Link! Der letzte Link auf dieser Seite scheint genau das zu sein. Wissen Sie in der Praxis zufällig, ob etwas über einer Rahmenunschärfe wirklich einen großen visuellen Unterschied ergibt? Oder würde es der Konvergenz einen Schub geben?
Alan Wolfe
2
Es ist die beste Einführung in 3D-Grafik-Rendering-Konzepte, die ich je gesehen habe (es geht aber sowieso nicht so sehr um physisch basiertes Material oder Tracing-Material). Ein sinc-gefiltertes Bild ist viel schärfer als der Box-Filter. Würde es schneller konvergieren, bezweifle ich.
Joojaa
Sieht aus wie dieser Link ist jetzt weg. Welchen Titel haben Sie als den besten 3D-Primer bezeichnet, den Sie gelesen haben?
Johnbakers