In Computergrafiken ist eine Palette eine endliche Menge von Farben. Paletten können optimiert werden, um die Bildgenauigkeit bei Vorhandensein von Software- oder Hardware-Einschränkungen zu verbessern.
Terminologie
Eine adaptive Farbpalette, die von 2 Farben auf 256 Farben erweitert wurde und zeigt, wie sich das Bild verändert (klicken Sie, um die Animation zu sehen).
Je nach Kontext kann der Begriff Palette und verwandte Begriffe wie Web-Palette und RGB-Palette etwas unterschiedliche Bedeutungen haben. Im Folgenden finden Sie einige der weit verbreiteten Bedeutungen für die Palette in der Computergrafik:
Die Gesamtzahl der Farben, die ein bestimmtes System generieren oder verwalten kann (obwohl es aufgrund der Einschränkungen des Videospeichers möglicherweise nicht alle gleichzeitig anzeigen kann):
volle Palette: Zum Beispiel haben Highcolor-Displays eine 16-Bit-RGB-Palette.
Die begrenzte Auswahl an Farben, die gleichzeitig angezeigt werden können:
Auf dem ganzen Bildschirm:
Festgelegte Palettenauswahl: Ein bestimmter Grafikkartenadapter kann eine feste Farbauswahl bieten, wenn seine Hardwareregister entsprechend eingestellt sind. Zum Beispiel kann der Color Graphics Adapter (CGA) in einem der Standard-Grafikmodi so eingestellt werden, dass er die sogenannte Palette # 1 oder die Palette # 2 zeigt: zwei Kombinationen aus 3 festen Farben und einer benutzerdefinierten Hintergrundfarbe jeder.
ausgewählte Farben oder ausgewählte Farben: In diesem Fall wird die Farbauswahl, im Allgemeinen aus einer breiteren, explizit verfügbaren vollen Palette, immer durch Software ausgewählt, sowohl durch den Benutzer als auch durch ein Programm. Zum Beispiel soll der Standard-VGA-Anzeigeadapter eine Palette von 256 simultanen Farben von insgesamt 262 144 verschiedenen Farben bereitstellen.
Standardpalette oder Systempalette: Die angegebenen ausgewählten Farben wurden von einer Körperschaft oder einem Unternehmen offiziell standardisiert. Zum Beispiel die bekannten websicheren Farben zur Verwendung mit Internetbrowsern oder die Microsoft Windows-Standardpalette.
Auf einem einzelnen Bild:
Farbkarte oder Farbtabelle: Die begrenzte Farbauswahl wird innerhalb der angegebenen indizierten Farbbilddatei gespeichert. Zum Beispiel, GIF.
Bildpalette oder Bildfarben: Die beschränkte Farbauswahl wird als die vollständige Liste der Farben angenommen, die das gegebene digitale Bild aufweist, selbst wenn die Bilddatei keine indexierte Farbpixelcodierung verwendet.
Die zugrunde liegende Hardware, die zum Beibehalten dieser simultanen Farben verwendet werden kann:
Hardware-Palette oder Color Look-Up Table (CLUT): Um sie anzuzeigen, müssen die Werte der ausgewählten Farben in die Farbhardware-Register des Anzeige-Subsystems geladen werden. Zum Beispiel sind die Hardware-Register des Commodore Amiga sowohl als ihre Farbpalette als auch als ihre CLUT bekannt, abhängig von den Quellen.
GUI-Paletten
Eine Anordnung einer begrenzten Anzahl von Benutzer- oder Systemfarben, die ausgewählt werden können. In solchen Fällen sind die Ausdruck-Farbpalette oder die Benutzerfarbpalette übliche Äquivalente. Diese Verwendung ähnelt einer echten Künstlerpalette.
Eine Werkzeugpalette, ein rechteckiger Bereich, der als Palettenfenster bezeichnet wird, des Anwendungsbildschirms mit Schaltflächen, Symbolen oder anderen GUI-Steuerelementen, die für einen schnellen Befehls- oder Symbolzugriff verfügbar sind; Wenn der Benutzer es irgendwo platzieren kann, indem er es durch eine Maus oder ein ähnliches Zeigegerät bewegt, wird dies als eine schwebende Palette bezeichnet. Eine Palette zum Auswählen von Farben kann auch eine schwebende Palette sein.
Master-Palette
Eine Anwendung kann wiederum viele verschiedene Miniaturbilder in einem Mosaik auf dem Bildschirm anzeigen. Es ist offensichtlich, dass das Programm nicht alle adaptiven Paletten jeder angezeigten Bildminiatur zur gleichen Zeit in den Hardware-Farbregistern laden kann. Eine Lösung besteht darin, eine einzigartige, gemeinsame Master-Palette oder universelle Palette zu verwenden, mit der jede Art von Bild mit angemessener Genauigkeit angezeigt werden kann.
Dazu werden die Farben so ausgewählt, dass die Master-Palette einen vollständigen RGB-Farbraum „in Miniatur“ aufweist, der die möglichen Ebenen für die roten, grünen und blauen Komponenten begrenzt. Diese Art von Anordnung wird manchmal als eine einheitliche Palette bezeichnet. Das normale menschliche Auge hat eine Empfindlichkeit gegenüber den drei Grundfarben in verschiedenen Graden: je mehr zum Grün, desto weniger zum Blau. RGB-Anordnungen können dies nutzen, indem sie mehr Ebenen für die grüne Komponente und weniger für die blaue zuweisen.
Eine Master-Palette, die auf diese Weise erstellt wurde, kann mit bis zu 8R × 8G × 4B = 256 Farben gefüllt werden, aber dies lässt keinen Platz in der Palette für reservierte Farben, Farbindizes, die das Programm für spezielle Zwecke verwenden könnte. Es ist allgemeiner, nur 6R × 6G × 6B = 216 (wie im Falle der Web-Farben), 6R × 8G × 5B = 240 oder 6R × 7G × 6B = 252 zu verwenden, die Platz für einige reservierte Farben lassen.
Wenn dann das Mosaik von Bildminiaturbildern (oder anderen heterogenen Bildern) geladen wird, ordnet das Programm einfach jedes ursprüngliche indizierte Farbpixel seinem am meisten angenäherten in der Hauptpalette zu (nachdem es in die Hardware-Farbregister abgelegt wurde) und schreibt das Ergebnis in die Videopuffer Hier ist ein Beispiel eines einfachen Mosaiks der vier Bildminiaturbilder unter Verwendung einer Hauptpalette von 240 RGB-angeordneten Farben plus 16 zusätzliche Zwischenschattierungen von Grau; Alle Bilder werden ohne wesentlichen Verlust an Farbgenauigkeit zusammengesetzt:
Adaptive Palette
Bei der Verwendung indizierter Farbtechniken werden reale Bilder mit einer besseren Wiedergabetreue wiedergegeben als mit echten Originalvorlagen, indem adaptive Paletten (manchmal buchstabierte adaptive Paletten) verwendet werden, bei denen die Farben durch einen Algorithmus direkt aus dem Originalbild ausgewählt oder quantisiert werden häufigsten Farben). Auf diese Weise und mit weiterem Dithering kann das indizierte Farbbild nahezu mit dem Original übereinstimmen.
Dies erzeugt jedoch eine starke Abhängigkeit zwischen den Bildpixeln und ihrer adaptiven Palette. Unter der Annahme einer begrenzten 8-Bit-Tiefengrafikanzeige ist es erforderlich, die adaptive Palette eines gegebenen Bildes in die Farbhardwareregister zu laden, bevor die Bildoberfläche selbst in den Bildpuffer geladen wird. Um verschiedene Bilder mit verschiedenen adaptiven Paletten anzuzeigen, müssen sie wie in einer Diashow einzeln geladen werden. Hier sind Beispiele von vier verschiedenen indizierten Farbbildern mit Farbfeldern, um ihre jeweiligen (und weitgehend inkompatiblen) adaptiven Paletten zu zeigen:
Transparenz in Paletten
Ein einzelner Paletteneintrag in einem indizierten Farbbild kann als transparente Farbe bezeichnet werden, um eine einfache Videoüberlagerung durchzuführen: Ein gegebenes Bild über einen Hintergrund wird so überlagert, dass ein Teil des überlappten Bildes den Hintergrund verdeckt und der Rest nicht . Das Überlagern von Film- / TV-Titeln und Credits ist eine typische Anwendung von Video-Overlay.
In dem Bild, das überlagert werden soll (eine indizierte Farbe wird angenommen), spielt ein bestimmter Paletteneintrag die Rolle der transparenten Farbe. Normalerweise ist die Indexnummer 0, aber andere können gewählt werden, wenn die Überlagerung von Software durchgeführt wird. Zur Entwurfszeit wird der Eintrag der transparenten Farbpalette einer beliebigen (normalerweise unterscheidbaren) Farbe zugewiesen. Im folgenden Beispiel ist ein typischer Pfeilzeiger für ein Zeigegerät über einem orangefarbenen Hintergrund angeordnet, sodass die orangefarbenen Bereiche hier die transparenten Bereiche (links) bezeichnen. Zur Laufzeit wird das überlappte Bild an einer beliebigen Stelle über dem Hintergrundbild platziert und so gemischt, dass, wenn der Pixelfarbindex die transparente Farbe ist, das Hintergrundpixel beibehalten wird, andernfalls wird es ersetzt.
Diese Technik wird für Zeiger in typischen 2-D-Videospielen für Charaktere, Kugeln usw. (die Sprites), Videotitel und andere Bildmischanwendungen verwendet.
Einige frühe Computer wie Commodore 64, MSX und Amiga unterstützen Sprites und / oder Vollbild-Video-Overlay per Hardware. In diesen Fällen wird die Eintragsnummer der transparenten Palette durch die Hardware definiert, und es wurde die Nummer 0 verwendet.
Einige indexierte Farbbilddateiformate wie GIF und PNG unterstützen nativ die Bezeichnung eines gegebenen Paletteneintrags als transparent, frei wählbar unter irgendeinem der Paletteneinträge, die für ein gegebenes Bild verwendet werden.
Das BMP-Dateiformat reserviert Speicherplatz für Alphakanalwerte in seiner Farbtabelle, jedoch wird dieser Platz derzeit nicht für Transluzenzdaten verwendet und auf Null gesetzt.
Bei Echtfarbenbildern können einige Videomischgeräte das RGB-Triplett (0,0,0) (kein Rot, kein Grün, kein Blau: der dunkelste Schwarzton, in diesem Zusammenhang manchmal als Superlack bezeichnet) als transparente Farbe verwenden . Zur Designzeit wird es durch das sogenannte Magic Pink ersetzt. Genauso kann eine typische Desktop-Publishing-Software annehmen, dass reines Weiß, RGB-Tripel (255,255,255) aus Fotos und Illustrationen ausgeschlossen wird, damit die Textabsätze in die Begrenzungsbox des Bildes eindringen können, um eine unregelmäßige Textanordnung um die Motive herum zu erreichen.
2-D-Malprogramme, wie Microsoft Paint und Deluxe Paint, können beim Schneiden, Kopieren und Einfügen die vom Benutzer festgelegte Hintergrundfarbe als transparente Farbe verwenden.
Obwohl Bild-Bitmasken und Alphakanäle verwandt sind (da sie für die gleichen Zwecke verwendet werden), sind sie Techniken, die überhaupt nicht die Verwendung von Paletten oder einer transparenten Farbe erfordern, sondern außer-image hinzugefügte zusätzliche binäre Datenschichten.
Softwarepaletten
Microsoft Windows
Microsoft Windows-Anwendungen verwalten die Palette der indizierten 4-Bit- oder 8-Bit-Farbanzeigegeräte über spezielle Funktionen der Win32-API (für die Anzeigemodi „Highcolor“ und „TrueColor“ fehlt diesen Funktionen jede interessante Funktionalität). Diese APIs behandeln die sogenannte Systempalette und viele logische Paletten.
Die Systempalette ist eine Kopie der Hardwareregister der Farbanzeige im RAM, in erster Linie eine physische Palette, und sie ist eine einzigartige gemeinsame Ressource des Systems. Beim Booten wird es mit der Standard-Systempalette geladen (hauptsächlich eine Master-Palette, die mit den meisten Programmen gut funktioniert).
Wenn eine bestimmte Anwendung kolorierte Grafiken und / oder Bilder ausgeben möchte, kann sie ihre eigene logische Palette einstellen, dh ihre eigene private Auswahl von Farben (bis zu 256). Es wird angenommen, dass jedes Grafikelement, das die Anwendung auf dem Bildschirm zu zeigen versucht, die Farben ihrer logischen Palette verwendet. Jedes Programm kann eine oder mehrere logische Paletten ohne weitere erwartete Interferenz (im voraus) frei verwalten.
Bevor die Ausgabe effektiv gemacht wird, muss das Programm seine logische Palette realisieren: Das System versucht dann, die logischen Farben mit physikalischen zu vergleichen. Wenn eine beabsichtigte Farbe bereits in der Systempalette vorhanden ist, ordnet das System intern sowohl die logischen als auch die Systempalettenindizes zu (weil sie selten zusammenfallen). Wenn die beabsichtigte Farbe noch nicht vorhanden ist, wendet das System einen internen Algorithmus an, um die am wenigsten verwendete Farbe in der Systempalette (im Allgemeinen einige, die von einem anderen Fenster im Hintergrund verwendet werden) zu verwerfen und sie durch die neue Farbe zu ersetzen. Da in der Systempalette nur ein begrenzter Platz für Farben zur Verfügung steht, versucht der Algorithmus auch, ähnliche Farben neu zuzuordnen und immer redundante Farben zu vermeiden.
Das Endergebnis hängt davon ab, wie viele Anwendungen mit Bildschirmfarben arbeiten. Das Vordergrundfenster ist immer favorisiert, daher können sich Fenster im Hintergrund auf verschiedene Arten verhalten: Sie werden beschädigt, um sich schnell neu zu zeichnen. Wenn sich die Systempalette ändert, löst das System ein bestimmtes Ereignis aus, um jede Anwendung zu informieren. Wenn ein Fenster empfangen wird, kann es sich schnell neu zeichnen, indem es eine einzelne Win32-API-Funktion verwendet. Aber das muss explizit im Programmcode geschehen; daher die Tatsache, dass viele Programme dieses Ereignis nicht verwalten, und ihre Fenster in dieser Situation beschädigt werden.
Eine Anwendung kann das Laden der Systempalette mit bestimmten Farben und sogar in einer bestimmten Reihenfolge erzwingen, indem sie das System trickst, indem es sagt, dass es sich um Farbeinträge für Animationen handelt (schnelle Farbänderungen der Farben in der physischen Palette bei bestimmten Einträgen). Das System kann dann nicht davon ausgehen, dass jeder Hardware-Paletteneintrag für ihre Farbpaletten-Farbverwaltung frei ist, und diese Einträge werden von ihrem Algorithmus ausgeschlossen. Das Endergebnis hängt von den Fähigkeiten des Farbzwangsprogramms und dem Verhalten der anderen Programme (das dauert genau wie im regulären Fall ab) und dem des Betriebssystems ab.