Rasteroperation

Eine Rasteroperation (kurz: ROP) verknüpft mit booleschen Operatoren, die zu schreibende Bilddaten mit den bereits im Framebuffer vorhandenen Werten. Man unterscheidet zwischen binären ROPs, die lediglich Quelle und Ziel miteinander verknüpfen und seltener verwendeten ternären Operatoren, die zusätzlich einen Pinsel (Brush) verwenden[1]. Im Gegensatz zu Blending werden bei Rasteroperationen ganzzahlige Farbwerte miteinander verknüpft, da logische Verknüpfungen im Allgemeinen auf Gleitkommazahlen nicht angewandt werden können.

Im einfachsten Fall werden die Pixel des zu schreibenden Bildes ohne Rücksicht auf den Inhalt des Framebuffers geschrieben. Die Quelle wird also mit einer logischen Eins verknüpft, das Ziel mit einer logischen Null. Da die Quelle unverändert übernommen wird, wird die durchgeführte Operation als Kopie bezeichnet.

Ein häufiges Anwendungsgebiet von ROPs sind Maskierungsfunktionen: Das Ausgangsbild und ein Schwarz-Weiß-Bild (die Maske) werden mit einem UND-Operator verknüpft. Diese Verknüpfung mit einem schwarzen Bildpunkt in der Maske führt immer zu einem schwarzen Bildpunkt, ein weißer Bildpunkt lässt die Ausgangsdaten unverändert. Mit dieser Methode ist es möglich, Transparenz-Effekte zu erzeugen, d. h. nur Teile des Bildes zu rendern.

Eine andere Einsatzmöglichkeit von Rasteroperationen ist das Invertieren einer Grafik. Dazu werden die Bilddaten mit einer XOR-Verknüpfung, angewandt auf eine weiße Maske, verbunden. Da jedes Bit in der Maske gesetzt ist, wird jedes Bit im Bild invertiert, das Resultat ist also das Negativ des Originals.

Die boolesche Rasteroperation wird stets gleich an allen Bits aller Pixel ausgeführt. Daher ergibt sich bei der o.a. XOR-Verknüpfung die Komplementärfarbe, sofern es sich nicht um Palettenindizes handelt. Bei Palettenbildern ergibt sich hingegen nur das Komplement des Palettenindex. Nur durch die komplementäre Verteilung von Farbwerten in der Palette ergibt sich dann das erwartete visuelle Ergebnis. In der Praxis belegt man dazu die beiden „Enden“ der Palette mit festen, häufig benutzten Farbwerten, etwa den Index 0 mit Schwarz und den Index 255 mit Weiß. Unter MS-Windows sind bei einer Bildschirmanzeige mit 256 Farben 20 komplementäre Paletteneinträge reserviert, 10 „unten“ und 10 „oben“.

Funktionsweise

Bei binären ROPs gibt es insgesamt 24 = 16 Kombinationen, Quell- und Zieldaten zu verknüpfen. Quelldatenbits werden üblicherweise mit P (für Pattern) und Zieldatenbits mit D (für Destination) symbolisiert. Da sowohl P als auch D logisch Null oder Eins sein kann, ergeben sich 22 = 4 Kombinationen des Zusammentreffens von Bits. Eine 4 Zeilen lange (= 2 Adressbits) und 1 Bit breite Lookup-Tabelle übersetzt dann in das Ergebnisbit. Davon gibt es 16 mögliche.

6 (von 16 möglichen) Lookup-Tabellen
PDblacknotmergepenxorpencopypenmergepenwhite
00010001
01001011
10001111
11000111
logisch:0DPonDPxPDPo1

Die Implementierung via Lookup-Tabelle ist für Grafikprozessoren günstig. Bei Verwendung eines Universalprozessors wird die Lookup-Tabelle durch eine (hier schnellere) logische Verknüpfung ersetzt, die gleich mehrere Bits verarbeitet. Die Angabe der logischen Verknüpfung findet man abgekürzt in umgekehrter polnischer Notation etwa so vor: DPx bedeutet D exklusiv-oder-verknüpft mit P.

Bei ternären ROPs gibt es insgesamt 28 = 256 Kombinationen, das B-Bit (für Brush) kommt hinzu. Die Lookup-Tabelle ist entsprechend 8 Zeilen (= 3 Adressbits) lang.

Vor- und Nachteile

Binäre Rasteroperationen sind ideal für Bildschirme mit geringer Farbtiefe, etwa schwarz-weiße, einfach zu implementieren und dabei schnell. Sie leiden nicht an Sättigungseffekten wie arithmetische (Alpha-Blending) und sind für CAD-Bearbeitung in mehreren Lagen (typischerweise Platinenentwurf) sehr günstig. Hingegen sind sie für Bildbearbeitung in hoher Farbtiefe (etwa Fotos) kaum geeignet. Durch die Verwendung farbtiefer Systeme sind binäre Rasteroperationen aus der Mode gekommen. In Vektorgrafiken werden binäre ROPs nur in den Windows-Vektordateien WMF und EMF unterstützt und bereiten Probleme bei der Konvertierung zu solchen, die das nicht unterstützen.

Alpha-Blending als eine wichtige moderne Operation löst mehr und mehr die binären Rasteroperationen ab und ist in nahezu allen modernen Vektorgrafikformaten verfügbar, etwa PDF und SVG. Alpha-Blending kann nicht durch binäre Rasteroperationen nachgebildet werden, abgesehen vom „harten“ Ausstanzen, was einem 1-Bit-Alpha-Kanal entspricht.

Quellen

  1. Raster Operation Codes im MSDN