Farben und Graustufen
CIP Index Up Left Right

Farben und Graustufen

Es gibt 3 Arten von Grafikkarten: Monochrom, 8-bit und 24 Bit. Sie unterscheiden sich in der Anzahl der Farben, die gleichzeitig auf dem Bildschirm dargestellt werden koennen: einen Monochrom-Karte nur 2 (schwarz und weiss), 8-bit 256 und 24-bit 2^24. Nur auf letzteren lassen sich Farbphotographien realistisch darstellen, auf 8-bit Displays müssen Mechanismen wie Dithering eingesetzt werden, um größere Anzahl von Farben zu simulieren.

Die 8-bit Karten hat man als Kompromiss eingefuehrt, da man zum Speichern des Bildinhaltes weniger Platz braucht (eben nur 8 bit pro Pixel) aber auch da man fuer Grafikoperationen weniger Rechenkapazität benötigt (nur 1 Byte/Pixel verarbeiten, anstatt 3 oder 4 bei 24-bit!). Tatsächlich ist es auch so, daß die CIP-Maschinen mit 24-BitDisplays (derzeit die Sparc-5 faui03g-faui03j) deutlich langsamer bei Grafikoperationen (z.B. Verschieben von Fenstern) sind.

Der Monitor hat mit der Anzahl der Farben nichts zu tun (die Farbwerte werden von der Grafikkarte zum Monitor analog übertragen). Hier gibt es nur die Unterscheidung Graustufen- oder Farb-Monitor.

8-Bit-Displays und Pseudo-Color

Eine 8-Bit Karte kann nur 256 verschiedene Farben auf dem gesamten Bildschirm zu einem gegebenen Zeitpunkt gleichzeitig darstellen. Doch welche sollten das sein? In X ist das Problem so gelöst, daß es eine globale Farbtabelle gibt, in der sich Anwendungen einen Eintrag reservieren können - falls die gewünschte Farbe nicht schon enthalten ist.

Im Bild selber wird dann nicht mehr mit Farbwerten (wie etwa RGB) gearbeitet, sondern nur mit 8-bit Indizes in die Farbtabelle. Deswegen nennt man diese Darstellungsart auch PseudoColor. Mit anderen Worten: eine Anwendung kann, sofern noch colormap-slots frei sind - jede beliebige Farbe darstellen, aber maximal 256 verschiedene zur gleichen Zeit.

Problems gibt es, wenn mehrere farbintensive Anwendungn gleichzeitig laufen - sie alle benutzen standardmäßig dieselbe globale Farbtabelle im X-Server, d.h. sie nehmen sich gegenseitig Einträge weg. Wenn die lookup table voll ist, kommt vom X Server die Fehlermeldung "Color table is full". Die Anwendungen regieren unterschiedlich darauf, xv stellt z.B. in Falschfarben dar, andere brechen ab.

Man kann wieder color table Einträge freigeben, wenn man Anwendungen, die andere Farben belegen, beendet. Das gleiche gilt übrigens auch für die Graustufenmonitore: auch hier belegt jede Schattierung einen Eintrag in der table. Allerdings kann man mit 256 Graustufen Photos schon recht sehr darstellen (wenn man ein GrayScale visual benutzt, siehe unten).

Eine Andere Ahilfemöglichkeit bei mangelnder Zahl von Farben sind private colormaps. Einige clients bieten die Möglichkeit sich eine private colormap zu reservieren. Dann gilt in deren Fenster eine andere color map, mit der Folge, daß jedesmal wenn man den Mauszeiger in das Fenster herein oder hinaus bewegt die global angewendete colormap umgeschaltet wird. Die Farben im Fenster werden also nur richtig dargestellt, wenn sich der Mauszeiger darin befindet. Im xv kann man das mit der Option -owncmap oder besser -visual PseudoColor bzw. -visual GrayScale einschalten.

Auf bestimmte Farben kann man über einen Namen, z.B. "red" oder einen Zahlenwert zugreifen. Die Default-Namen sind in /usr/lib/X11/rgb.txt bzw. auf Sun`s in /local/X11/lib/X11/rgb.txt definiert, können aber von den clients umdefiniert werden. Eine Liste dieser Farben erhält man durch showrgb und mit zusätzlicher Anzeige der Farben durch xco. Näheres dazu in den Manual Pages zu den genannten Kommandos und in der Manpage zu X Abschnitt COLOR NAMES.

Wahl des Visuals

Visual nennt man im X-Jargon den Modus, in dem eine Grafikkarte betrieben wird. Die meisten Karten beherrschen mehrere visuals. So kann z.B. eine Farbkarte auch im GrayScale-Modus arbeiten, oder ein 24-Bit Monitor mit PseudoColor. Das visual kann man für viele Anwendungen frei einstellen. z.B. xv -visual GrayScale wählt das Graustufen-Visual. Dieses Flag sollte man auf Graustufenmonitoren unbedingt mit angeben, da sonst gedithered wird.

Eine Liste aller von einem display unterstützen visuals erhält man mit dem Kommando xdpyinfo.

Warnung am Rande: diese Darstellgun enthält einige Verallgemeinerungen. Die Zahl der Grafikkarten ist so groß, daß man unmöglich Aussagen über alle von ihnen treffen kann. Näheres zur Hardware, color tables und Farbmodellen in der Vorlesung Computergrafik I am Lehrstuhl für Graphische Datenverarbeitung.