Porter-Duff Composition

aus Wikipedia, der freien Enzyklopädie

Porter-Duff Composition ist ein Verfahren zur Überlagerung digitaler Bilder. Es wurde 1984 von Thomas Porter und Tom Duff im Rahmen des Computer Graphics Project der Lucasfilm Ltd. beschrieben[1].

Bei der Überlagerung von digitalen Bildern muss definiert sein, welchen Einfluss die Überlagerung auf das einzelne Pixel hat. Dabei muss neben den drei Farbkanälen (rot, grün, blau) noch die Transparenz (Alphakanal) berücksichtigt werden, wodurch pro Pixel definiert werden kann, wie es bei Überlagerung mit einem darunterliegenden Pixel dargestellt werden soll bzw. wie stark die Farbe des unten liegenden Pixel auf dem überlagernden Pixel durchscheint.

Idee und Wirkungsweise

Das Verfahren unterscheidet für die Überlagerung von zwei Pixeln (A und B) zwischen 12 verschiedenen Methoden. In den Beispielen 1 und 3 ist eine Transparenz von 0 % bzw. eine Opazität von 100 % definiert, d. h. die Pixel sind nicht transparent. Bei Beispiel 2 hat sowohl Pixel A als auch Pixel B eine Transparenz von 50 %.

Methode Beschreibung Beispiel 1 Beispiel 2

(Transparenz: 50 %)

Beispiel 3
A nur Pixel von Bild A werden angezeigt Datei:PorterDuff A.png Datei:PorterDuff A tr50.png
[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]: Datei fehlt
B nur Pixel von Bild B werden angezeigt Datei:PorterDuff B.png Datei:PorterDuff B tr50.png Datei:PorterDuff B 2.png
A over B Pixel von Bild A überdecken Pixel von Bild B. Ist kein Pixel von Bild A vorhanden wird Pixel von Bild B dargestellt. Datei:PorterDuff AoverB.png Datei:PorterDuff AoverB tr50.png Datei:PorterDuff AoverB 2.png
B over A Pixel von Bild B überdecken Pixel von Bild A. Ist kein Pixel von Bild B vorhanden wird Pixel von Bild A dargestellt. Datei:PorterDuff BoverA.png Datei:PorterDuff BoverA tr50.png Datei:PorterDuff BoverA 2.png
A in B Pixel von Bild A wird nur dargestellt, wenn ein Pixel von Bild B vorhanden ist. Ist nur Pixel von Bild A oder nur Pixel von Bild B vorhanden, dann wird nichts (default-Farbe) dargestellt. Datei:PorterDuff AinB.png Datei:PorterDuff AinB tr50.png Datei:PorterDuff AinB 2.png
B in A Pixel von Bild B wird nur dargestellt, wenn ein Pixel von Bild A vorhanden ist. Ist nur Pixel von Bild A oder nur Pixel von Bild B vorhanden, dann wird nichts (default-Farbe) dargestellt. Datei:PorterDuff BinA.png Datei:PorterDuff BinA tr50.png Datei:PorterDuff BinA 2.png
A out B ein Pixel von Bild A wird nur dargestellt, wenn kein Pixel von Bild B vorhanden ist. Dort wo ein Pixel von Bild B vorhanden ist, wird weder das Pixel von Bild B noch das Pixel von Bild A dargestellt. Datei:PorterDuff AoutB.png Datei:PorterDuff AoutB tr50.png Datei:PorterDuff AoutB 2.png
B out A ein Pixel von Bild B wird nur dargestellt, wenn kein Pixel von Bild A vorhanden ist. Dort wo ein Pixel von Bild A vorhanden ist, wird weder das Pixel von Bild A noch das Pixel von Bild B dargestellt. Datei:PorterDuff BoutA.png Datei:PorterDuff BoutA tr50.png Datei:PorterDuff BoutA 2.png
A atop B Es wird nur ein Pixel von Bild B dargestellt. Sind sowohl Pixel von Bild A und Pixel von Bild B vorhanden, überlagert das Pixel von Bild A das Pixel von Bild B. Dort wo nur ein Pixel von Bild A vorhanden ist, wird nichts dargestellt (default-Farbe). Datei:PorterDuff AatopB.png Datei:PorterDuff AatopB tr50.png Datei:PorterDuff AatopB 2.png
B atop A Es wird nur Pixel von Bild A dargestellt. Sind sowohl Pixel von Bild A und Pixel von Bild B vorhanden, überlagert das Pixel von Bild B das Pixel von Bild A. Dort wo nur ein Pixel von Bild B vorhanden ist, wird nichts dargestellt (default-Farbe). Datei:PorterDuff BatopA.png Datei:PorterDuff BatopA tr50.png Datei:PorterDuff BatopA 2.png
A xor B XOR aus Pixel von Bild A und Pixel von Bild B, das heißt, es wird nur ein Pixel dargestellt, wenn entweder ein Pixel von Bild A oder ein Pixel von Bild B vorhanden ist. (Ist nur ein Pixel von Bild A vorhanden wird das Pixel von Bild A dargestellt. Ist nur ein Pixel von Bild B vorhanden wird das Pixel von Bild B dargestellt. Sind beide Pixel vorhanden, wird nichts dargestellt (default-Farbe)). Datei:PorterDuff AxorB.png Datei:PorterDuff AxorB tr50.png Datei:PorterDuff AxorB 2.png
clear weder Pixel von Bild A noch Pixel von Bild B werden dargestellt. Datei:PorterDuff Clear.png Datei:PorterDuff Clear.png Datei:PorterDuff Clear.png

Unterstützung

Alle modernen Grafiksysteme unterstützen die Porter-Duff-Verfahren. So z. B. in Quartz, der Grafikschicht des Betriebssystems macOS.[2]

Auch die Programmiersprache Java unterstützt standardmäßig diese Verfahren[3].

Nachweise

  1. T. Porter and T. Duff - Compositing Digital Images (PDF; 750 kB) SIGGRAPH 84 (Computer Graphics Volume 18, Number 3 July 1984) pp 253-259
  2. Mike Paquette “Pixar's Porter-Duff Composition used in Quartz”
  3. API-Dokumentation des Java Developement Kit 8 der Klasse java.awt.AlphaComposite

Weblinks