Frage

Wenn von RGB Umwandlung in Graustufen, es wird gesagt, dass spezifische Gewichte Kanäle R, G und B sollen angewandt werden. Diese Gewichte sind. 0,2989, 0,5870, 0,1140

Es wird gesagt, dass der Grund für diese unterschiedliche ist die menschliche Wahrnehmung / Sensibilität gegenüber diesen drei Farben. Manchmal ist es auch gesagt, das sind die Werte verwendet NTSC-Signal zu berechnen.

Allerdings habe ich nicht eine gute Referenz für diese im Web finden. Was ist die Quelle dieser Werte?

Siehe auch diese vorherigen Fragen: hier und here .

War es hilfreich?

Lösung

Die spezifischen Zahlen in der Frage sind von CCIR 601 (siehe Wikipedia Link unten).

Wenn Sie konvertieren RGB -> Graustufen mit leicht unterschiedlichen Zahlen / verschiedenen Methoden, Sie werden überhaupt nicht viel Unterschied auf einem normalen Computer-Bildschirm sehen unter normalen Lichtverhältnissen - probieren Sie es

.

Hier sind einige weitere Links auf Farbe im Allgemeinen:

Luma

Bruce Lindbloom ‚herausragende Website

Kapitel 4 auf Farbe im Buch von Colin Ware "Information Visualization", ISBN 1-55860-819-2; Diese lange Verbindung zu Ware in books.google. com kann oder auch nicht funktionieren

cambridgeincolor : ausgezeichnet, gut geschrieben „Anleitungen, wie zu erwerben, interpretieren und verarbeiten digitale Fotos mit einem optisch orientierten Ansatz, Konzept über Verfahren "

betont

Wenn Sie laufen in "linear" vs "nicht-linear" RGB, hier ist ein Teil einer alten Notiz mich zu diesem Thema. Wiederholen, in der Praxis werden Sie nicht viel Unterschied.


RGB -> ^ gamma -> Y -> L *

In der Farbwissenschaft, die gemeinsamen RGB-Werte, wie in html rgb (10%, 20%, 30%), werden als „nicht-lineare“ oder Gamma korrigiert . "Linear" Werte sind definiert als

Rlin = R^gamma,  Glin = G^gamma,  Blin = B^gamma

Dabei gilt Gamma 2.2 für viele PCs. Die übliche R G B werden manchmal als R 'G' B '(R' = RLIN ^ (1 / gamma)) geschrieben (Puristen zungen klicken), aber hier werde ich fallen die‘.

Helligkeit auf einer CRT-Anzeige, ist proportional zu RGBlin = RGB ^ gamma, so 50% Grau auf einem CRT ist ziemlich dunkel: 0,5 ^ 2,2 = 22% der maximalen Helligkeit. (LCD-Displays sind komplexer; Darüber hinaus kompensieren einige Grafikkarten für Gamma.)

Um das Maß der Leichtigkeit genannt L* von RGB zu erhalten, erste divide R G B durch 255 und berechnen

Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma

Dies ist Y in XYZ-Farbraum; es ist ein Maß für die Farbe „Luminanz“. (Die realen Formeln sind nicht gerade x ^ gamma, aber in der Nähe; Stick mit x ^ gamma für einen ersten Durchlauf.)

Schließlich

L* = 116 * Y ^ 1/3 - 16
     

„... strebt Wahrnehmungs Einheitlichkeit [und] ehesten entspricht die menschliche Wahrnehmung von Leichtigkeit.“ -    Wikipedia Lab-Farbraum

Andere Tipps

Ich fand, dass diese Publikation in einer Antwort auf eine vorhergehende Frage verwiesen. Es ist sehr hilfreich:

http://cadik.posvete.cz/color_to_gray_evaluation/

Es zeigt ‚Tonnen‘ von verschiedenen Methoden Graustufen-Bilder mit unterschiedlichen Ergebnissen zu generieren!

Heres einige Code in C zu konvertieren rgb in Graustufen. Die eigentliche Gewichtung für rgb in Graustufen Konvertierung verwendet wird 0,3R + 0,6G + 0,11 B. diese Gewichte Arent absolut kritisch, so können Sie mit ihnen spielen. Ich habe sie 0.25R + 0,5G + 0.25B gemacht. Es erzeugt ein etwas dunklere Bild.

Hinweis: Der folgende Code geht davon aus xRGB 32bit Pixelformat

unsigned int *pntrBWImage=(unsigned int*)..data pointer..;  //assumes 4*width*height bytes with 32 bits i.e. 4 bytes per pixel
unsigned int fourBytes;
        unsigned char r,g,b;
        for (int index=0;index<width*height;index++)
        {
            fourBytes=pntrBWImage[index];//caches 4 bytes at a time
            r=(fourBytes>>16);
            g=(fourBytes>>8);
            b=fourBytes;

            I_Out[index] = (r >>2)+ (g>>1) + (b>>2); //This runs in 0.00065s on my pc and produces slightly darker results
            //I_Out[index]=((unsigned int)(r+g+b))/3;     //This runs in 0.0011s on my pc and produces a pure average
        }

Überprüfen Sie die Farbe FAQ out für Informationen zu diesem Thema. Diese Werte stammen aus der Standardisierung von RGB-Werten, die wir in unserer Displays verwenden. Eigentlich nach der Farbe FAQ, die Werte, die Sie verwenden, sind veraltet, da sie die Werte für den ursprünglichen NTSC-Standard verwendet, und nicht moderne Monitore.

Hier ist ein Papier auf, wie diese Zahlen (oder ähnliche) wurden abgeleitet:

https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf

  

Was ist die Quelle dieser Werte?

Die „Quelle“ der entsandten Koeffizienten sind die NTSC-Spezifikationen, die in REC601 und Eigenschaften von Fernsehen .

Die „ultimative Quelle“ sind die CIE circa 1931 Versuche an menschlichen Farbwahrnehmung. Die spektrale Empfindlichkeit des menschlichen Sehvermögens ist nicht einheitlich. Experimente führten zur Gewichtung der Tristimuluswerte basierend auf Wahrnehmung. Unsere L, M und S-Zapfen 1 sind empfindlich auf die Lichtwellenlängen wir als „Rot“, „Grün“ und „Blau“ (jeweils) zu identifizieren, das ist, wo die tristimulus Primärfarben abgeleitet . 2

Die lineare Licht 3 spektrale Gewichtungen für sRGB (und REC709) sind:

R lin * 0.2126 + G lin 0,7152 * + B lin * 0,0722 = Y

Diese sind spezifisch für den sRGB und REC709 Farbräume, die dazu bestimmt sind zu vertreten Computermonitore (sRGB) oder HDTV-Monitore (REC709) und sind in den ITU-Dokumente REC709 und auch < a href = "https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2380-2-2018-PDF-E.pdf" rel = "nofollow noreferrer"> BT ,2380-2 (10/2018)

FUßNOTEN (1) Zapfen sind die Farbzellen der Netzhaut des Auges zu erkennen.
(2) jedoch die gewählten Tristimulus-Wellenlängen sind nicht auf der „peak“ eines jeden Typs cone - statt Tristimuluswerte so gewählt sind, dass sie auf bestimmte cone stimulieren Typ wesentlich mehr als der andere, das heißt Trennung von Stimulus
. (3) Sie benötigen sRGB-Werte linearisieren, bevor die Koeffizienten anzuwenden. Ich diskutiere diese in einer anderen Antwort hier.

Diese Werte variieren von Person zu Person, vor allem für Menschen, die farbenblind sind.

ist all dies wirklich notwendig, die menschliche Wahrnehmung und CRT vs LCD variieren, aber die R G B Intensität nicht, warum nicht L = (R + G + B)/3 und stellen Sie den neuen RGB zu L, L, L?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top