-
Technisches Gebiet
-
Der hierin offengelegte Gegenstand bezieht sich im Allgemeinen auf Farbskalen und insbesondere auf die Farbskalenkonvertierung.
-
Stand der Technik
-
Eine Farbskala ist eine komplette Untermenge von Farben, die durch ein dreidimensionales Volumen definiert sind. Der sRGB-Farbraum ist eine übliche, bekannte Definition des Farbraums. Viele Inhaltsfarbräume entsprechen grundlegenden sRGB-Primärfarben, zum Beispiel ein Foto, das im sRGB-Farbraum gespeichert ist, und ein Video im ITU-R Recommendation BT.709-Format oder xvYCC-Format. Einige Inhaltsfarbräume entsprechen jedoch nicht den sRGB-Primärfarben, sondern anderen Formaten, zum Beispiel dem AdobeRGB-Raum. In vielen Fällen stimmen die Farbskalenräume von Inhalt und Displays nicht überein. Zum Beispiel haben viele Notebook-Computerdisplays eine Farbskala, die kleiner als der sRGB-Farbraum ist. Einige High-End-Notebooks haben Displays mit einer breiteren Farbskala als die Farbskala des sRGB-Farbraums.
-
1 zeigt ein Beispiel von Display- und Inhaltsfarbskalenräumen, die in der xy-Ebene des CIE 1931 Yxy-Raums dargestellt werden. Die Displayfarbskala wird vom Dreieck 123 definiert, wobei der Inhaltsfarbskalenraum durch das Dreieck 1'2'3' definiert wird. Im Yxy-Farbraum stellt Y Helligkeit und x und y stellen Chromatizitätswerte dar. Wenn die Inhaltsfarbskalengrenze dieselbe wie die Displayfarbskala ist, die vom Dreieck 1'2'3' repräsentiert wird, ist keine Farbskalenzuordnung für originalgetreue Farbwiedergabe erforderlich.
-
Jedoch ist im Beispiel von 1 der Displayfarbskalenraum kleiner als der Inhaltsfarbraum, was normalerweise bei handelsüblichen Notebooks und mobilen Internetgeräten der Fall ist. Wenn keine Farbskalenzuordnung durchgeführt wird, wird die Inhaltsfarbe komprimiert, was zu dumpfer und ungesättigter Farbe führt.
-
Wenn die Displayfarbskala größer als der Inhaltsfarbraum ist, wird, wenn keine Farbskalenzuordnung durchgeführt wird, die Inhaltsfarbe erweitert, was zu übersättigten Farben führt. In einigen Fällen ist die übersättigte Farbe angenehm für das Auge. In einigen Fällen wird jedoch die originalgetreue Farbe bevorzugt und eine genaue Farbskalenzuordnung ist erforderlich.
-
Betriebssystem-Farbmanagementsystem und farbbewusste Anwendungen bieten Farbskalentransformationen. Betriebssysteme von Microsoft, wie Vista und Windows 7, und das Betriebssystem von Apple haben Farbmanagementmodule, auf die mithilfe von Application Program Interfaces (API) zugegriffen werden kann. Das Farbmanagement von Microsoft Windows 7 führt Farbkorrekturen durch, wenn ein benutzerdefiniertes ICC-Profil für das Display verfügbar und mit dem Display verbunden ist. Diese Farbmanagementmodule erfordern benutzerdefinierte Displayprofile mit Chromatizitätswerten der RGBW-Primärfarben und Gammawerte. Die Erstellung eines benutzerdefinierten ICC-Profils erfordert ein aufwändiges Farbmesstool und Farbkenntnisse. Dies ist selbst für einen fachkundigen Computernutzer nicht einfach. Viele Standard-Videoanwendungen für Windows sind nicht farbbewusst, zum Beispiel Internet Explorer (IE). Dies bedeutet, dass die Farben in Videos und IE nicht korrigiert werden, selbst wenn ein benutzerdefiniertes Displayprofil verfügbar ist.
-
Kurze Beschreibung der Zeichnungen
-
Erfindungsgemäße Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Zeichnungen veranschaulicht, bei denen gleiche Bezugsnummern zum Verweis auf ähnliche Elemente verwendet werden.
-
1 zeigt ein Beispiel von Display- und Inhaltsfarbskalenräumen, die in der xy-Ebene des CIE 1931 Yxy-Raums dargestellt werden.
-
2 zeigt ein Beispielsystem, in dem Ausführungsformen verwendet werden können.
-
3A zeigt ein Beispiel eines Systems, das verwendet werden kann, um Farbkorrektur durchzuführen, wenn Farben von Pixeln aus dem Inhaltsfarbskalenraum in den Displayfarbskalenraum konvertiert werden, und auch um während der Konvertierung lineare Korrektur anzuwenden.
-
3B zeigt ein Beispiel eines Systems, das verwendet werden kann, um Farbkorrektur durchzuführen, wenn Farben von Pixeln aus dem Inhaltsfarbskalenraum in den Displayfarbskalenraum konvertiert werden, und auch um während der Konvertierung mehrere Formen der Pixelkorrektur anzuwenden.
-
4 zeigt ein Beispiel eines HSV-Raums.
-
5 zeigt einen Prozess, der verwendet werden kann, um Pixelsättigungswerte zu bestimmen, die über der Sättigungsgrenze des Displays liegen, und eine Methode zu bestimmen die Sättigungswerte korrigiert.
-
6 zeigt ein Beispiel eines Histogramms der Sättigungswerte einer Farbe.
-
7 bietet ein Beispiel einer linearen Verschiebung der Sättigungswerte außerhalb der linearen Pixelgrenze, wobei die Sättigungswerte innerhalb der linearen Pixelgrenze unverändert bleiben. Die Verschiebung der Sättigungswerte außerhalb der linearen Pixelgrenze kann auch nicht linear erfolgen.
-
Ausführliche Beschreibung
-
Verweise in dieser Beschreibung auf „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, mindestens in einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Verwendungen des Ausdrucks „bei einer Ausführungsform” an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Charakteristika in einer oder mehr Ausführungsformen kombiniert werden.
-
Verschiedene Ausführungsformen bieten sowohl für enge als auch für breite Farbskaleninhalte und Displays automatische Farbskalenzuordnung von Inhaltsfarbskala zu Displayfarbskala. Einige Ausführungsformen sorgen für den Zugriff auf eine sRGB-Farbskalenfarbtabelle, die Bestimmung einer Farbkonvertierungsmatrix, die auf der sRGB-Farbskalenfarbtabelle und Chromatizitätswerten der RGBW-Primärfarben und Gammawerte basiert, die im Display gespeichert oder mit dem Display verbunden sind, die Anwendung der Farbraumkonvertierung auf die Pixel für Pixel, die die Farbkonvertierungsmatrix verwenden, und die Anwendung linearer und nichtlinearer Korrektur auf Pixelsättigungswerte. Einige Ausführungsformen sorgen für das Lesen von Chromatizitätswerten von RGBW-Primärfarben und Gammawerten, die im Display gespeichert oder mit dem Display verbunden sind, sorgen für die Bestimmung einer maximalen Displaysättigung für Farben, sorgen für die Anwendung adaptiver Farbskalenzuordnung auf den Inhalt auf Basis der Displayeigenschaften und sorgen für die Anwendung der Korrektur der Pixelsättigungswerte der Farben auf Basis der maximalen Displaysättigung. Demgemäß bieten verschiedene Ausführungsformen eine adaptive Inhaltsfarbskalenzuordnungstechnik, die lebendigere und genauere Farbe auf Displays mit einer kleineren als der sRGB-Farbskala und originalgetreuere Farbe auf Display mit breiterer Farbskala produzieren kann.
-
In verschiedenen Ausführungsformen liest ein Grafiktreiber Paneleigenschaften, die in den Extended Display identification Data (EDID) gespeichert sind, und der Grafiktreiber programmiert Grafikhardware für die Zuordnung der Inhaltsfarbe zum RGB-Raum des Zieldisplays. EDID ist eine Datenstruktur, die von einem Display bereitgestellt wird, um seine Fähigkeiten für eine Grafikkarte zu beschreiben. Sie ist in VESA E-EDID Version 1, Rev 4 (2006) definiert.
-
Verschiedene Ausführungsformen verwenden möglicherweise kein benutzerdefiniertes Displayprofil. Das voreingestellte sRGB-Standardprofil kann für die Farbkorrektur verwendet werden. Die Farbkorrektur kann automatisch durch die Grafikhardware und den Treiber auf Basis der in den EDID gespeicherten Displayinformationen erfolgen. Außerdem bieten verschiedene Ausführungsformen Farbkorrektur für Videos, wenn die Videoanwendung nicht farbbewusst ist. Verschiedene Ausführungsformen sind mit dem Farbmanagementsystem eines Betriebssystems oder einer Anwendung kompatibel, zum Beispiel Adobe.
-
In verschiedenen Ausführungsformen wird der sRGB-Farbraum verwendet, um Nicht-sRGB-Grafikinhalte mithilfe des sRGB-Farbraums in einem Farbmanagementsystem zur Farbskala des Zieldisplays zu konvertieren. Für Nicht-sRGB-Grafikinhalte werden farbbewusste Anwendungen verwendet, um Nicht-sRGB-Inhalte zuerst in den sRGB-Farbraum zu konvertieren. Für Videoinhalte muss die Anwendung nicht farbbewusst sein, da der Farbraum der Videoquelle (BT. 601, BT. 709, xvYCC) vom Grafiktreiber erkannt werden kann. Bei der Konvertierung vom Nicht-sRGB- zum sRGB-Raum können die konvertierten Pixeldaten im Speicher gespeichert oder in der Grafik-Pipe weitergeleitet werden, sodass die Werte, die außerhalb des Bereichs liegen, nicht abgeschnitten werden.
-
Zum Beispiel kann eine Konvertierung von Pixeln im 0-1-Bereich im AdobeRGB-Raum zum sRGB-Raum zu Pixelwerten führen, die kleiner als 0 oder größer als 1 sind.
-
2 zeigt ein Beispielsystem, in dem Ausführungsformen verwendet werden können. Grafik-Pipeline 202 kann nicht verarbeitete Vertices von einer Anwendung oder einer anderen Quelle erhalten. Zum Beispiel können nicht verarbeitete Vertices über eine drahtgebundene oder drahtlose Schnittstelle (nicht dargestellt) erhalten werden. Pipeline 202 erhält nicht verarbeitete Vertices und liefert gerasterte Pixel für das Display. Zum Beispiel kann Pipeline 202 mit Segal, M. und Akeley, K., „The OpenGL Graphics System: A Specification (Version 2.0)" (2004), der Microsoft DirectX 9 programmierbaren Grafikpipeline, Microsoft Press (2003) und Microsoft® DirectX 10 (beispielsweise beschrieben in D. Blythe, „The Direct3D 10 System", Microsoft Corporation (2006)) sowie Variationen davon kompatibel sein. DirectX ist eine Gruppe von Programmierschnittstellen (Application Program Interfaces, APIs), die sich mit Grafiken bei Eingabegeräten, Audio und Video beschäftigen. Pipeline 202 kann mithilfe eines Grafikprozessors, einer Central Processing Unit und/oder eines Grafikprozessors, der allgemeine Computerbefehle verarbeitet, oder einer Kombination daraus implementiert werden. Pipeline 202 liefert Pixel in einer Speicherregion (nicht dargestellt). Die Pixel können für die Verarbeitung von Display-Pipeline 204 zur Verfügung gestellt werden.
-
In einigen Ausführungsformen kann sRGB als voreingestellter Displayfarbraum im Farbmanagementmodul des Betriebssystems eingestellt werden. So können Nicht-sRGB-Inhalte farbkonvertiert werden, wenn die Anwendung und das Betriebssystem farbbewusst sind. Nicht-sRGB-Inhalte können in sRGB-Raum konvertiert und im Speicher gespeichert werden, bevor sie zur Display-Engine übertragen werden.
-
Display-Engine 204 kann Pixelfarbdaten und Ausgabepixel für die Anzeige durch Display 206 modifizieren. Zum Beispiel kann Display-Engine 204 mindestens inverse Gammakorrektur, Farbraumkonvertierung und Gammakorrektur durchführen. In verschiedenen Ausführungsformen beinhaltet Display-Engine 204 die Fähigkeit, Farbkorrektur bei der Konvertierung vom Inhaltsfarbskalenraum zum Farbskalenraum von Display 206 auf Basis der Paneichromatizität und der Gammadaten aus den Extended Display Identification Data (EDID) durchzuführen, die im Speicher von Display 206 gespeichert sind. Beschreibung einer Art der Farbraumkonvertierung erfolgt in Bezug auf 3A und 3B.
-
3A zeigt ein Beispiel eines Systems, das verwendet werden kann, um Farbkorrektur durchzuführen, wenn Farben von Pixeln aus dem Inhaltsfarbskalenraum in den Displayfarbskalenraum konvertiert werden, und auch um während der Konvertierung lineare Korrektur anzuwenden. Das System erhält Daten im Format Rot-Grün-Blau (RGB) von einer Anwendung oder einem Betriebssystem oder einer anderen Quelle. Es können neben RGB auch andere Farbformate verwendet werden. Die Pixel können von einem Speicher oder in einem Stream bereitgestellt werden.
-
Displays, welche Abschnitt 3.7 von VESA E-EDID Version 1, Rev 4 (2006) entsprechen, beinhalten oder haben Zugriff auf einen Speicher, der RGBW-Primärchromatizitätswerte speichert, die als x-, y- und Gammawerte in einer Taktsteuerung (TCON) oder einer im EEPROM integrierten Schaltung beschrieben sind, die mit einem Display gekoppelt ist. Der Gammawert in den Kernelementen kann durch eine Zahl für weißes Gamma oder drei Nachschlagetabellen der individuellen R, G, B und Gamma repräsentiert werden. In anderen Ausführungsformen können Chromatizitätswerte von RGBW-Primär- und Gammawerten, die mit einem Display verbunden sind, an einer anderen Stelle im Display, auf einem Hostsystem, auf einem externen Speicher des Displays, zum Download aus dem Internet oder Netzwerk verfügbar, gespeichert werden oder von einer anderen Quelle verfügbar sein.
-
Farbskaleninformationen des sRGB-Farbraums können im Speicher auf einem Display oder auf dem Hostsystem, auf der Grafik-Engine oder auf der Display-Engine gespeichert werden.
-
Verarbeitungsblock 304 kann Folgendes durchführen: (1) Lesen der Panel-Chromatizität und Gammadaten aus den EDID im Speicher sowie der Farbskaleninformationen des sRGB-Farbraums, (2) Bestimmung der 3 × 3 Color Space Conversion(CSC)-Koeffizienten und Programmierung von Registern des 3 × 3 CSC-Blocks 308, (3) Programmierung von Nachschlagetabellen, die im inversen Gamma des inversen Gammablocks 306 verwendet werden, und (4) Programmierung von Nachschlagetabellen, die in der Gammatabelle von Gammablock 310 verwendet werden.
-
Techniken, die von Verarbeitungsblock
304 verwendet werden, um Matrixkoeffizientenwerte für 3 × 3 CSC-Block
308 zu erzeugen, basieren auf den Chromatizitätswerten (x, y) des Inhaltsfarbskalenraums und des Displayfarbskalenraums. In verschiedenen Ausführungsformen ist der Inhaltsfarbskalenraum als sRGB-Standardraum definiert und die Chromatizitätswerte des sRGB-Raums haben eine Standarddefinition, die in Tabelle 1 angegeben ist. Tabelle 1
Chromatizität | Rot | Grün | Blau | Weißer Punkt |
X | 0,6400 | 0,3000 | 0,1500 | 0,3127 |
Y | 0,3300 | 0,6000 | 0,0600 | 0,3290 |
-
Die Chromatizitätswerte der Displayfarbskala können aus den EDID eines Displays erhalten werden. EDID enthalten Chromatizitätswerte für rot, grün, blau und weiß und außerdem Gammainformationen für jedes rot, grün, blau und weiß.
-
Damit die Farben während der Konvertierung nicht verändert werden, kann der XYZ-Farbraum als Brücke verwendet werden, um die Zuordnungsmatrix für die Konvertierung vom Quell-RGB-Raum, z. B. sRGB, (als Raum 1 angegeben) zum Ziel-RGB-Raum (als Raum 2 angegeben) (d. h. Displayraum) abzuleiten, wie in den folgenden Gleichungen dargestellt:
wobei,
- M1
- die Konvertierungsmatrix vom RGB-Raum 1 zum XYZ-Raum ist,
- M2
- die Konvertierungsmatrix vom RGB-Raum 2 zum XYZ-Raum ist,
- r1, g1, b1
- Pixelwerte aus dem Inhaltsraum sind, und
- r2, g2, b2
- Pixelwerte nach der Konvertierung sind, die zum Display geschickt oder für das Display zu einem anderen Zeitpunkt gespeichert werden können.
-
Für die Konvertierung vom RGB-Raum 1 (d. h. Inhaltsfarbskalenraum) zum RGB-Raum 2 (d. h. Displayfarbskalenraum) ist die Koeffizientenzuordnungsmatrix. Koeffizienten in M1 und M2 können durch Ableitung der Koeffizienten der generischen Matrix M gelöst werden, die zwischen RGB- und XYZ-Farbraum konvertieren kann.
-
-
Zum Beispiel für ein Rot von (1, 0, 0), Grün von (0, 1, 0), Blau von (0, 0, 1), Weiß von (1, 1, 1) und Y
W = 1 können die Matrixkoeffizienten aufgelöst werden von:
-
Um die Koeffizientenzuordnungsmatrix für M1 zu bestimmen, werden die Werte xr, yr, xg, yg, xb, yb aus Tabelle 1 in den Formeln verwendet und Yr, Yg und Yb werden mithilfe der obigen Formel bestimmt. Um die Koeffizientenzuordnungsmatrix für M2 zu bestimmen, werden die Chromatizitätswerte aus den EDID verwendet.
-
Ein Grafiktreiber oder eine Anwendung, die vom Grafiktreiber angefordert wird, kann Operationen von Verarbeitungsblock 304 durchführen.
-
Pseudo-Code zur Feststellung der Koeffizientenmatrix ist unten angegeben.
function CAM = sRGB2display(disp_RGBW, input CS)
rx = disp_RGBW(1);
ry = disp_RGBW(2);
gx = disp_RGBW(3);
gy = disp_RGBW(4);
bx = disp_RGBW(5);
by = disp_RGBW(6);
wx = disp_RGBW(7);
wy = disp_RGBW(8);
M = [rx/ry gx/gy bx/by; 1 1 1; (1 – rx – ry)/ry(1 – gx – gy)/gy(1 – bx – by)/by];
wrgb = [wx/wy 1 (1 – wx – wy)/wy]';
Yrgb = inv(M)·wrgb;
Yr = Yrgb(1);
Yg = Yrgb(2);
Yb = Yrgb(3);
MM = [rx/ry·Yr gx/gy·Yg bx/by·Yb; Yr Yg Yb; (1 – rx – ry)/ry·YP(1 – gx – gy)/gy·Yg(1 – bx – by)/by·Yb];
% sRGB
M2 = MM; CAM = inv(M2)·M1
-
Der inverse Gammablock 306 muss Pixeldaten empfangen und inverse Gammakorrektur auf die Pixeldaten anwenden, um die Pixeldaten linear zu machen. Der inverse Gammablock 306 muss die linearen Pixeldaten zu 3 × 3 CSC-Block 308 ausgeben. Da die Foto- und Videoinhalte gammakorrigiert sind, wird inverse Gammakorrektur angewandt, bevor die Farbraumkonvertierungsmatrix angewandt wird. Verarbeitungsblock 304 kann Nachschlagetabellen für den inversen Gammablock 306 bereitstellen, um inverse Gammaausgabewerte für eingehende Pixeldaten zu identifizieren.
-
3 × 3 CSC-Block 308 muss linearisierte Pixeldaten für den inversen Gammablock 306 erhalten und Farbkorrektur auf die Pixeldaten auf Basis der Korrekturmatrix von Verarbeitungsblock 304 anwenden. Zum Beispiel kann 3 × 3 CSC-Block 308 RGB-Eingabewerte mit einer 3 × 3-Matrix multiplizieren. Pixeldatenwerte vom inversen Gammablock 306 können zu einem Bereich von 0 bis 1 normalisiert werden. 3 × 3 CSC-Block 308 muss außerdem Inhaltsfarbraum zu Displayfarbraum zuordnen in Fällen, in denen die Inhaltsfarbskala innerhalb der Displayfarbskala oder außerhalb der Displayfarbskala liegt.
-
In einigen Fällen ist bei der linearen Zuordnung die Inhaltsfarbskala kleiner als die Displayfarbskala, wenn der größte Koeffizient in der Koeffizientenmatrix kleiner als eins ist. In einigen Fällen ist bei der linearen Zuordnung die Inhaltsfarbskala größer als die Displayfarbskala, wenn der größte Koeffizient in der Koeffizientenmatrix größer als eins ist.
-
In einer Implementierung, wenn die Inhaltsfarbskala kleiner als die Displayfarbskala ist, kann der Inhaltsfarbskalenraum linear vergrößert werden, um die Grenzen des Displayfarbskalenraums zu erreichen, als Reaktion darauf, dass der Inhaltsfarbskalenraum kleiner als der Displayfarbskalenraum ist. Der größte Wert in der Koeffizientenmatrix kann identifiziert werden und alle Werte in der Matrix werden mit der Inverse des größten Werts multipliziert. Demgemäß wird der größte Wert in der Koeffizientenmatrix zu Wert 1 verschoben.
-
In dem Fall, wo der Inhaltsfarbskalenraum größer als der Displayfarbskalenraum ist, wird auf jeden Koeffizienten der Konvertierungsmatrix ein Normalisierungsfaktor angewandt. Normalisierung verschiebt alle Farben linear zur Displayfarbskalengrenze. Zum Beispiel kann ein Normalisierungsfaktor die Inverse der größten Komponente der Konvertierungsmatrix (die größer als 1 sein wird) sein. Jeder Koeffizientenwert in der Matrix kann mit dem Normalisierungsfaktor multipliziert werden, sodass der größte Koeffizientenwert in der Matrix 1 ist.
-
Nach der Farbraumkonvertierung wird Gamma erneut angewandt, um das Displaygamma zu kompensieren und eine lineare Ausgabe zu produzieren. Gammablock 310 muss Gammakorrektur auf die Eingabepixeldaten nach der Farbkonvertierung anwenden. In einigen Ausführungsformen kann Gammablock 310 eine oder mehrere Nachschlagetabellen für jede Farbe zur genauen Gammakorrektur verwenden. Zum Beispiel kann Gammablock 310 jeden Pixelwert von 3 × 3 CSC-Block 308 auf einen gammakorrigierten Wert mithilfe einer oder mehrerer Nachschlagtabellen der roten, grünen und blauen Farbe konvertieren. Gammakorrekturwerte können in einem erweiterten Block der EDID gespeichert werden, der auch als EDID-Standard bei Abschnitt 1.4 definiert ist.
-
Inverser Gammablock 306, 3 × 3 CSC-Block 308, Gammablock 310 können von der Hardware in der Display-Engine des Grafikchips implementiert und vom Grafiktreiber programmiert werden.
-
3B zeigt ein Beispiel eines Systems, das verwendet werden kann, um Farbkorrektur durchzuführen, wenn Farben von Pixeln aus dem Inhaltsfarbskalenraum in den Displayfarbskalenraum konvertiert werden, und auch um während der Konvertierung mehrere Formen der Pixelkorrektur anzuwenden. Das System in 3B ist ähnlich dem von 3A mit Ausnahme der unten beschriebenen Unterschiede.
-
RGB-zu-HSV-Raumkonvertierungsblock 401 konvertiert Pixel vom RGB-Raum zum HSV-Raum. Bildanalyseblock 402 erhält Pixeldaten im HSV-Format und erstellt ein oder mehrere Histogramme auf Basis der Sättigungswerte der Pixel jeder Farbe. Ein ganzer Bildschirm voll mit Pixeln kann verwendet werden, um ein Histogramm für eine bestimmte Farbe zu erstellen. Zum Beispiel können Histogramme für jede rote, grüne, blaue, zyan, gelbe und magenta Farbe erstellt werden, um Sättigungswertverteilungen der Pixel zu zeigen. Histogramme können auf dem HSV-Raum basieren. 6 zeigt ein Beispiel eines Histogramms der Sättigungswerte einer Farbe. Farbsättigungswerte können von 0 bis 1 reichen. Bildanalyseblock 402 leitet die Histogramminformationen für jede Farbe zu Verarbeitungsblock 404 weiter.
-
Verarbeitungsblock 404 analysiert die Histrogramme der einzelnen Farben und bestimmt für jede Farbe die maximal erlaubte Sättigung für das Display auf Basis der Pixelprozentsätze, die sich außerhalb des Bereichs befinden, wie in Bezug auf 5 beschrieben. Verarbeitungsblock 404 programmiert außerdem Bildanpassungsblock 403, um die Pixelsättigungswerte auf Basis von Techniken anzupassen, die in Bezug auf Block 508 von 5 beschrieben sind. Bildanpassungsblock 403 kann über eine Sättigungsnachschlagetabelle (Look up Table, LUT) für jedes Farbsegment implementiert werden. Wenn das Histogramm auf 6 Farbsegmenten (RGBYCM) aufgebaut ist, können 6 LUTs verwendet werden.
-
Zum Beispiel zeigt 7 ein Diagramm der Konvertierung von Eingabe- zu Ausgabesättigungswerten in einer Sättigungs-LUT. 7 bietet ein Beispiel der linearen Verschiebung von Farbwerten innerhalb und außerhalb der linearen Pixelgrenze. In anderen Ausführungsformen können Pixelwerte außerhalb des linearen Pixelwerts nicht linear bis zum maximalen Displaysättigungswert verschoben werden. Es kann zum Beispiel eine parabolische Konvertierung verwendet werden.
-
Unter erneuter Bezugnahme auf 3B konvertiert der HSV-zu-RGB-Raumblock 405 Pixel vom HSV-Raum wieder zurück in den RGB-Raum.
-
Verarbeitungsblock 404 erhält außerdem Panelchromatizitäts- und Gammadaten von den EDID sowie Sättigungsverteilungsinformationen für Farben von Bildanalyseblock 402. Verarbeitungsblock 404 bestimmt außerdem Matrixkoeffizientenwerte, die vom 3 × 3 CSC-Block 308 in ähnlicher Weise verwendet werden, wie in Bezug auf Verarbeitungsblock 304 von 3A beschrieben. Außerdem programmiert Verarbeitungsblock 404 den inversen Gammablock 306 und Gammablock 310 in ähnlicher Weise, wie in Bezug auf Verarbeitungsblock 304 von 3A beschrieben.
-
5 zeigt einen Prozess, der verwendet werden kann, um Pixelsättigungswerte zu bestimmen, die über der Sättigungsgrenze des Displays liegen, und eine Weise zu bestimmen, um Sättigungswerte zu korrigieren. Block 502 beinhaltet die Zuordnung des Displayfarbraums zum Inhaltsfarbskalenraum.
-
Zum Beispiel kann zur Veranschaulichung eine beispielhafte Koeffizientenzuordnungsmatrix, die für 3 × 3 CSC-Block 308 bereitgestellt wird, wie folgt sein:
[0,8588 0,1634 0,0018 0.364 0,9331 0,0347 –0,0007 –0,0199 0,9074]
-
In der obigen Zuordnungsmatrix ist die maximale rote Farbe, die das Display reproduzieren kann, (0,8588, 0,0364, –0,0007) im RGB-Raum. Jedoch wird im Inhaltsfarbraum von sRGB die gesättigte rote Farbe als (1, 0, 0) dargestellt.
-
Block
504 beinhaltet die Bestimmung der Displaysättigungsgrenzen für jede Farbe aus dem HSV-Raum. Um den Sättigungswert für jede Farbe zu bestimmen, wird die Grenze des Displays im HSV-Farbraum bestimmt. H ist Farbton, S ist Farbsättigung und V ist Helligkeit. Ein Beispiel für den HSV-Farbraum ist in
4 dargestellt. Die gesättigte rote Farbe im Inhaltsfarbraum entspricht Sättigung 1 bei Farbtonwinkel 30/360°-Ausdrücke, die zur Konvertierung des RGB-Raums zum HSV-Raum verwendet werden, sind allgemein bekannt. Ausdrücke können zum Beispiel wie folgt sein:
wobei,
- max
- der maximale Pixelwert für eine Farbe ist und
- min
- der minimale Pixelwert für eine Farbe ist.
-
Im obigen Beispiel kann die maximale Sättigung der roten Farbe, die das Display reproduzieren kann, durch Konvertierung der maximalen Koordinate der roten Farbe des Displays im RGB-Raum, das heißt (0,8588, 0,0364, –0,0007), zum HSV-Raum bestimmt werden. Der Sättigungswert für rot ist der Wert s im HSV-Raum. Auf diese Weise kann die Displaysättigungsgrenze der roten Farbe bestimmt werden. Ähnliche Techniken können angewandt werden, um die Displaysättigungsgrenzen der anderen Farben zu bestimmen. Je nach Präferenz des Designers können Sättigungsgrenzen für rot, grün, blau und andere Farben definiert werden.
-
Block 506 beinhaltet die Bestimmung des Out-Of-Range (OOR)-Prozentsatzes der Pixel für jede Farbe. Histogramme können verwendet werden, um den Prozentsatz der Pixel im Inhaltsfarbskalenraum mit Sättigungswerten zu bestimmen, die sich innerhalb und außerhalb der Displaysättigungsgrenzen für jede Farbe befinden. 6 stellt ein Beispiel eines Histogramms der Pixelwerte für eine Farbe dar.
-
Block 508 beinhaltet die Anpassung von Pixelfarben auf Basis des OOR-Prozentsatzes und der Histogrammverteilung. Für jede Farbe wird der Prozentsatz der Pixel außerhalb der Pixelsättigungsgrenze (OOR-Prozentsatz) als Parameter für die Bestimmung eines linearen Pixelgrenzwerts verwendet. Zum Beispiel: linearer Pixelgrenzwert = 1 – OOR-Prozentsatz/100.
-
In diesem Beispiel entspricht ein OOR-Prozentsatz von 10% einem linearen Pixelgrenzwert von 0,9. Pixel mit Sättigungsfarbwerten unter diesem linearen Pixelgrenzwert werden 1:1 konvertiert. Pixel mit Sättigungsfarbwerten über diesem linearen Pixelgrenzwert werden linear wie folgt konvertiert: Ausgabesättigungswert = linearer Pixelgrenzwert + (maximaler Displaysättigungswert – linearer Pixelgrenzwert)/(1 – linearer Pixelgrenzwert)
-
Block 510 beinhaltet die Konvertierung der Pixel zurück zur RGB-Domäne.
-
8 stellt ein System 800 gemäß einer Ausführungsform dar. System 800 kann ein Quellgerät, zum Beispiel ein Hostsystem 802, und ein Zielgerät 850 beinhalten. Host-System 802 kann einen Prozessor 810 mit mehreren Kernen, Hostspeicher 812, Speicher 814 und Grafik-Subsystem 815 beinhalten. Chipsatz 805 kann Geräte im Hostsystem 802 kommunikativ koppeln. Grafik-Subsystem 815 kann Video und Audio verarbeiten. Obwohl nicht dargestellt, kann System 802 Videos, Bilder oder Audio über eine drahtgebundene oder drahtlose Schnittstelle erhalten. Schnittstelle 845 kann eine drahtgebundene oder drahtlose Schnittstelle zwischen Hostsystem 802 und Zielgerät 850 bereitstellen. Zielgerät 850 kann ein Displaygerät mit Fähigkeiten zur Anzeige visueller Inhalte und Senden von Audioinhalten sein. Außerdem kann System 800 auch eine oder mehrere Antennen und eine drahtlose Netzwerkschnittstelle, die mit einer oder mehreren Antennen (nicht dargestellt) oder einer drahtgebundenen Netzwerkschnittstelle (nicht dargestellt) für die Kommunikation mit anderen Geräten gekoppelt ist, beinhalten.
-
Die hierin beschriebenen Grafik- und/oder Videoverarbeitungs-Techniken können in verschiedenen Hardware-Architekturen implementiert werden. Beispielsweise kann Grafik- und/oder Videofunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein separater Grafik- und/oder Videoprozessor verwendet werden. Als noch weitere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Universalprozessor, einschließlich eines Mehrkernprozessors, implementiert werden. Bei einer weiteren Ausführungsform können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.
-
Ausführungsformen der vorliegenden Erfindung können als irgendeine Form oder eine Kombination der Folgenden implementiert sein: ein oder mehr Mikrochips oder integrierte Schaltungen, die mittels eines Motherboards verbunden sind, fest verdrahtete Logik, von einem Speichergerät gespeicherte und von einem Mikroprozessor ausgeführte Software, Firmware, ein anwendungsspezifischer integrierter Schaltkreis (application specific integrated circuit, ASIC) und/oder ein Field Programmable Gate Array (FPGA). Der Begriff „Logik” kann beispielsweise Software oder Hardware und/oder Kombinationen von Software und Hardware beinhalten.
-
Ausführungsformen der vorliegenden Erfindung können beispielsweise als ein Computerprogramm-Produkt bereitgestellt sein, das ein oder mehr maschinenlesbare Medien mit darauf gespeicherten maschinenausführbaren Befehlen beinhalten kann, die, wenn sie von einer oder mehr Maschinen, wie z. B. einem Computer, einem Netzwerk von Computern oder anderen elektronischen Geräten ausgeführt werden, dazu führen können, dass die eine oder die mehreren Maschinen Operationen in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung ausführen. Ein maschinenlesbares Medium kann beinhalten, ist aber nicht beschränkt auf, Disketten, optische Disks, CD-ROMs (Compact Disc-Read Only Memories), magnetooptische Disks, ROMS (Read Only Memories), RAMs (Random Access Memories), EPROMs (Erasable Programmable Read Only Memories), EEPROMs (Electrically Erasable Programmable Read Only Memories), magnetische oder optische Karten, Flash-Memory oder andere Art von Medien/maschinenlesbares Medium, das zum Speichern maschinenausführbarer Befehle geeignet ist.
-
Die Zeichnungen und die vorstehende Beschreibung gaben Beispiele der vorliegenden Erfindung. Obwohl sie als eine Anzahl ganz verschiedener funktionaler Objekte dargestellt sind, ist es für Fachleute selbstverständlich, dass ein oder mehr solcher Elemente sehr wohl zu einzelnen funktionalen Elementen kombiniert werden können. Alternativ können bestimmte Elemente in mehrere funktionale Elemente geteilt werden. Elemente aus einer Ausführungsform können einer weiteren Ausführungsform hinzugefügt werden. Beispielsweise können hierin beschriebene Reihenfolgen von Prozessen verändert werden und sind nicht auf die hierin beschriebene Art und Weise beschränkt. Außerdem müssen die Handlungen eines jeden Ablaufdiagramms weder in der gezeigten Reihenfolge implementiert sein, noch müssen alle Vorgänge unbedingt ausgeführt werden. Ebenfalls können diejenigen Vorgänge, die nicht von anderen Vorgängen abhängen, parallel mit den anderen Vorgängen ausgeführt werden. Der Umfang der vorliegenden Erfindung ist jedoch keineswegs durch diese spezifischen Beispiele beschränkt. Zahlreiche Variationen, entweder ausdrücklich in der Beschreibung gegeben oder nicht, wie z. B. Unterschiede in Struktur, Abmessung und Verwendung von Material, sind möglich. Der erfindungsgemäße Umfang ist zumindest so breit, wie von den folgenden Ansprüchen gegeben.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Segal, M. und Akeley, K., „The OpenGL Graphics System: A Specification (Version 2.0)” (2004) [0022]
- D. Blythe, „The Direct3D 10 System”, Microsoft Corporation (2006) [0022]
- Abschnitt 3.7 von VESA E-EDID Version 1, Rev 4 (2006) [0026]
- EDID-Standard bei Abschnitt 1.4 [0042]