Palette (Computer) - Palette (computing)

Beispielbild
Die im Bild verwendete Palette, die sich um den RGB-Farbraum dreht .

In der Computergrafik ist eine Palette , auch Color Lookup Table (CLUT) genannt, eine Korrespondenztabelle, in der ausgewählten Farben aus dem Farbwiedergabebereich eines bestimmten Farbraums ein Index zugewiesen wird, durch den sie referenziert werden können. Durch Referenzieren der Farben über einen Index, der weniger Informationen benötigt, als zur Beschreibung der tatsächlichen Farben in diesem Farbraum benötigt wird, zielt diese Technik darauf ab, den Datenverbrauch zu reduzieren, sei es als Verarbeitungsnutzlast, Übertragungsbandbreite, RAM-Nutzung oder persistenter Speicher. Bilder, in denen Farben durch Verweise auf eine CLUT angezeigt werden, werden als indizierte Farbbilder bezeichnet .

Beschreibung

Ab 2019 ist das RGB-Farbmodell mit 8 Bit pro Pixel Farbtiefe der gebräuchlichste Bildfarbraum im Computerbereich . Bei dieser Technik werden 8 Bit pro Pixel verwendet, um den Luminanzpegel in jedem der RGB-Kanäle zu beschreiben , daher sind 24 Bit Speicher erforderlich, um die Farbe jedes Pixels vollständig zu beschreiben. Das Ziel der Verwendung von Paletten besteht darin, diesen Speicherbedarf zu verringern, indem die Menge möglicher Farben reduziert wird, die gleichzeitig verarbeitet werden müssen (oft unter Verwendung adaptiver Methoden), wobei angenommen wird, dass jeder möglichen Farbe ein Index zugewiesen wird, der es ermöglicht, auf jede Farbe zu verweisen Verwenden Sie weniger Informationen, als für die vollständige Beschreibung der Farbe erforderlich sind. Ein gängiges Beispiel ist die 256-Farben-Palette, die üblicherweise im GIF- Dateiformat verwendet wird, bei der 256 Farben, die zur Darstellung eines Bildes verwendet werden sollen, aus dem gesamten 24-Bit-Farbraum ausgewählt werden, wobei jeder ein 8-Bit-Index zugewiesen wird. Auf diese Weise kann das System zwar potenziell jede Farbe im RGB-Farbraum reproduzieren (solange es die Beschränkung auf 256 Farben zulässt), der Speicherbedarf pro Pixel wird jedoch von 24 auf 8 Bit pro Pixel gesenkt.

Master-Palette

Eine adaptive Farbpalette, die von 2 auf 256 Farben erweitert wird und zeigt, wie sich das Bild ändert (klicken, um die Animation anzuzeigen).

In einer Anwendung, die viele verschiedene Miniaturbilder in einem Mosaik auf dem Bildschirm anzeigt, kann das Programm möglicherweise nicht alle adaptiven Paletten jedes angezeigten Miniaturbilds gleichzeitig in die Hardware-Farbregister laden. Eine Lösung besteht darin, eine einzigartige, gemeinsame Masterpalette oder Universalpalette zu verwenden, die verwendet werden kann, um jede Art von Bild mit angemessener Genauigkeit anzuzeigen.

Dies geschieht durch die Auswahl von Farben so, dass die Masterpalette einen vollständigen RGB-Farbraum „in Miniatur“ umfasst, wodurch die möglichen Stufen der Rot-, Grün- und Blaukomponenten begrenzt werden. Diese Art der Anordnung wird manchmal als einheitliche Palette bezeichnet . Das normale menschliche Auge nimmt die drei Grundfarben in unterschiedlichem Maße wahr: je mehr für Grün, desto weniger für Blau. RGB-Anordnungen können dies also ausnutzen, indem sie dem Grünanteil mehr Pegel und dem Blauanteil weniger zuweisen.

Eine so aufgebaute Masterpalette kann mit bis zu 8R×8G×4B = 256 Farben gefüllt werden , aber das 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 Fall der Webfarben ), 6R×8G×5B = 240 oder 6R×7G×6B = 252 zu verwenden , was Platz für einige reservierte Farben lässt.

Dann, wenn das Mosaik aus Miniaturbildern (oder anderen heterogenen Bildern) geladen wird, ordnet das Programm einfach jedes original indizierte Farbpixel dem am meisten angenäherten in der Masterpalette zu (nachdem es in die Hardware-Farbregister übertragen wurde) und schreibt das Ergebnis in die Videopuffer. Hier ist ein Beispiel für ein einfaches Mosaik der vier Miniaturansichten, das eine Master-Palette von 240 RGB- Farben plus 16 zusätzliche Zwischengrautöne verwendet; alle Bilder werden ohne nennenswerten Verlust an Farbgenauigkeit zusammengefügt:

IndexedColorSample (Mosaik).png

Adaptive Palette

Bei der Verwendung von indizierten Farbtechniken reale Bilder werden mit einem besseren Treue zum vertreten True Color Original unter Verwendung von adaptiven Paletten (manchmal buchstabierten anpassungsfähige Paletten ), in dem die Farben ausgewählt werden oder quantisiert direkt aus dem Originalbild durch irgendeinen Algorithmus (durch die Kommissionierung häufigsten Farben). Auf diese Weise und mit weiterem Dithering kann das indizierte Farbbild dem Original nahezu entsprechen.

Dies erzeugt jedoch eine starke Abhängigkeit zwischen den Bildpixeln und seiner adaptiven Palette. Unter der Annahme einer grafischen Anzeige mit begrenzter 8-Bit-Tiefe ist es notwendig, die adaptive Palette eines gegebenen Bildes in die Farb-Hardware-Register zu laden, bevor die Bildoberfläche selbst in den Bildpuffer geladen wird . Um verschiedene Bilder mit unterschiedlichen adaptiven Paletten anzuzeigen, müssen diese 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:

IndexedColorSample (Erdbeeren gepflückt).png IndexedColorSample (Caerulea3 crop).png IndexedColorSample (Lapis.elephant.800pix.060203).png IndexedColorSample (Zitrone).png

Transparenz in Paletten

Ein einzelner Paletteneintrag in einem indizierten Farbbild kann als transparente Farbe bezeichnet werden, um eine einfache Videoüberlagerung durchzuführen : Überlagern eines bestimmten Bildes über einen Hintergrund, so dass ein Teil des überlappten Bildes den Hintergrund verdeckt und der Rest nicht . Das Überlagern von Film-/Fernsehtiteln und Credits ist eine typische Anwendung von Video-Overlay.

Im zu überlagernden Bild (indizierte Farbe wird angenommen) spielt ein bestimmter Paletteneintrag die Rolle der transparenten Farbe. Normalerweise die Indexnummer 0, aber es können auch andere gewählt werden, wenn die Überlagerung von der Software durchgeführt wird . Zur Entwurfszeit wird der transparente Farbpaletteneintrag einer willkürlichen (normalerweise unverwechselbaren) Farbe zugewiesen. Im Beispiel unten ist ein typischer Pfeilzeiger für ein Zeigegerät über einen orangefarbenen Hintergrund ausgelegt ist, so dass hier die orangefarbenen Flächen der transparenten Bereiche bezeichnet ( von links). 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 2D-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 durch Hardware. In diesen Fällen wird die Nummer des transparenten Paletteneintrags von der Hardware definiert und war früher die Nummer 0.

Einige indizierte Farbbilddateiformate wie GIF unterstützt nativ die Benennung eines bestimmten Paletteneintrag als transparent , frei wählbar zwischen einem der Paletteneinträge für ein bestimmtes Bild verwendet.
Das BMP-Dateiformat reserviert Platz für Alpha-Kanalwerte in seiner Farbtabelle, jedoch wird dieser Platz derzeit nicht verwendet, um Transluzenzdaten zu speichern und ist auf Null gesetzt. Im Gegensatz dazu unterstützt PNG Alphakanäle in Paletteneinträgen, wodurch Halbtransparenz in Palettenbildern ermöglicht wird.

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 auch als Superschwarz bezeichnet ) als transparente Farbe verwenden . Zur Designzeit wird es durch das sogenannte Magic Pink ersetzt . Auf die gleiche Weise kann eine typische Desktop-Publishing- Software davon ausgehen, dass reines Weiß, RGB-Triplet (255,255,255) von Fotos und Illustrationen ausgeschlossen wird, damit die Textabsätze in den Begrenzungsrahmen des Bildes eindringen können , um eine unregelmäßige Textanordnung um die Motive des Bildes zu erzielen.

2D-Malprogramme wie Microsoft Paint und Deluxe Paint können beim Ausführen von Ausschneide-, Kopier- und Einfügevorgängen die vom Benutzer festgelegte Hintergrundfarbe als transparente Farbe verwenden .

Obwohl verwandt (da sie für die gleichen Zwecke verwendet werden), sind Bildbitmasken und Alphakanäle Techniken, die überhaupt keine Paletten oder transparente Farben verwenden, sondern außerhalb des Bildes hinzugefügte zusätzliche binäre Datenschichten.

Softwarepaletten

Microsoft Windows

Microsoft Windows- Anwendungen verwalten die Palette von 4-Bit- oder 8-Bit-indizierten Farbanzeigegeräten durch spezielle Funktionen der Win32-API . Die Anwendbarkeit von Paletten in den Anzeigemodi Highcolor und Truecolor wird fraglich. Diese APIs beschäftigen sich mit der sogenannten "Systempalette" und mit vielen "logischen Paletten".

Die "Systempalette" ist eine Kopie im RAM der Hardwareregister der Farbanzeige, hauptsächlich eine physikalische Palette, und sie ist eine einzigartige, gemeinsam genutzte Ressource des Systems. Beim Booten wird es mit der Standardsystempalette geladen (hauptsächlich eine "Masterpalette", 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 Farbauswahl (bis zu 256). Es wird angenommen, dass jedes grafische Element, das die Anwendung auf dem Bildschirm anzuzeigen versucht, die Farben seiner logischen Palette verwendet. Jedes Programm kann ohne weitere zu erwartende Eingriffe (im Voraus) eine oder mehrere logische Paletten frei verwalten.

Bevor die Ausgabe effektiv gemacht wird, muss das Programm erkennen , seine logische Palette: Das System versucht , mit „physisch“ denjenigen , die „logischen“ Farben übereinstimmen. Wenn eine beabsichtigte Farbe bereits in der Systempalette vorhanden ist, ordnet das System die logischen Indizes der Systempalette intern zu (da sie selten übereinstimmen). Wenn die gewünschte Farbe noch nicht vorhanden ist, wendet das System einen internen Algorithmus an, um die am wenigsten verwendete Farbe in der Systempalette zu verwerfen (im Allgemeinen eine, die von einem anderen Fenster im Hintergrund verwendet wird) und ersetzt sie durch die neue Farbe. Aufgrund des begrenzten Platzes für Farben in der Systempalette versucht der Algorithmus auch, ähnliche Farben neu zuzuordnen und vermeidet immer, redundante Farben zu erzeugen.

Das Endergebnis hängt davon ab, wie viele Anwendungen gleichzeitig versuchen, ihre Farben auf dem Bildschirm anzuzeigen. Das Vordergrundfenster wird immer bevorzugt, daher können sich Hintergrundfenster unterschiedlich verhalten: von beschädigt bis schnell neu gezeichnet. 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 mithilfe einer einzelnen Win32-API-Funktion schnell selbst neu zeichnen. Dies muss jedoch explizit im Programmcode erfolgen; Daher können viele Programme dieses Ereignis nicht verarbeiten und ihre Fenster werden in dieser Situation beschädigt.

Eine Anwendung kann das Laden der Systempalette mit bestimmten Farben (sogar in einer bestimmten Reihenfolge) erzwingen und das System "austricksen", indem sie ihm mitteilt, dass es sich um Farbeinträge handelt, die zur Animation bestimmt sind (schnelle Farbänderungen der Farben in der physischen Palette bei bestimmten Einträgen ). Das System nimmt dann an, dass diese Hardware-Paletteneinträge für seinen Palettenfarbverwaltungsalgorithmus nicht mehr frei sind. Das Endergebnis hängt von den Fähigkeiten des Color-Forcing-Programms und dem Verhalten der anderen Programme ab (obwohl dieses Problem das gleiche ist wie im normalen Fall) und dem des Betriebssystems selbst.

Siehe auch

Anmerkungen

Verweise

  • Julio Sanchez und Maria P. Canton (2003). Das PC-Grafikhandbuch. CRC-Presse. ISBN  0-8493-1678-2 .
  • Farbpaletten im Microsoft Developer Network (MSDN)
  • Der RGBQUAD-Farbtabelleneintrag in der BITMAPINFO-Struktur im Microsoft Developer Network (MSDN)