Domanda

Durante la conversione da RGB a scala di grigio, si dice che pesi specifici canali R, G e B deve essere applicato. Questi pesi sono:. 0,2989, 0,5870, 0,1140

Si dice che la ragione di questo è diverso percezione umana / sensibilità verso questi tre colori. A volte si dice anche questi sono i valori utilizzati per il calcolo del segnale NTSC.

Tuttavia, non ho trovato un buon riferimento per questo sul web. Qual è la fonte di questi valori?

Si veda anche queste domande precedenti: qui e here.

È stato utile?

Soluzione

I numeri specifici in questione sono da CCIR 601 (si veda il link Wikipedia sotto).

Se si converte RGB -> scala di grigi con leggermente diversi numeri / metodi diversi, non si vedrà molta differenza a tutti su uno schermo di computer normale in condizioni di luce normale - provare

.

Ecco alcuni link sul colore in generale:

Luma

eccezionale sito web 's Bruce Lindbloom

Capitolo 4 a colori nel libro di Colin Ware, "Information Visualization", ISBN 1-55860-819-2; questa lunga link per Ware in books.google. it può o non può lavorare

cambridgeincolor : eccellente, ben scritto "Tutorial su come acquisire, interpretare ed elaborare le fotografie digitali utilizzando un approccio visivamente-oriented che enfatizza concetto su procedura "

In caso di incorrere in vs RGB "lineare" "non lineare", qui è parte di una vecchia nota a me su questo. Ripetere, in pratica non si vede molta differenza.


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

In scienza del colore, i valori comuni RGB, come in html rgb (10%, 20%, 30%), sono chiamati "non lineare" o Gamma corretto . valori "lineari" sono definiti come

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

dove gamma è 2.2 per molti PC. Il solito R G B sono talvolta scritto come R 'G' B '(R' = RLIN ^ (1 / gamma)) (Puristi della lingua-click), ma qui io cadere la'.

Luminosità su un display CRT è proporzionale RGBlin = RGB ^ gamma, così grigio al 50% su un CRT è piuttosto scuro: .5 ^ 2,2 = 22% della luminosità massima. (LCD sono più complesse; Inoltre, alcune schede grafiche compensano gamma.)

Per ottenere la misura di leggerezza chiamato L* da RGB, prima divisione R G B da 255, e calcolare

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

Questa è Y nello spazio di colore XYZ; si tratta di una misura di colore "luminanza". (Le formule reali non sono esattamente x ^ gamma, ma quasi; bastone con x ^ gamma per un primo passaggio.)

Infine,

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

"... aspira a uniformità percettiva [e] partite da vicino la percezione umana di leggerezza." -    spazio colore Lab

Altri suggerimenti

ho scoperto che questa pubblicazione fa riferimento in una risposta ad una precedente domanda simile. E 'molto utile:

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

Si mostra 'tonnellate' di diversi metodi per generare immagini in scala di grigi con esiti diversi!

Heres po 'di codice in C per la conversione rgb in scala di grigi. Il vero ponderazione utilizzato per rgb conversione in scala di grigi è 0,3R + 0.6G + 0.11B. questi pesi arent assolutamente fondamentale in modo da poter giocare con loro. Ho fatto loro 0.25R + 0.5G + 0.25B. Produce un'immagine leggermente più scura.

Nota: il codice seguente presuppone formato di pixel a 32 bit xRGB

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
        }

Controlla la colori FAQ informazioni su questo. Questi valori provengono dalla standardizzazione dei valori RGB che usiamo nei nostri schermi. In realtà, secondo il colore FAQ, i valori che si sta utilizzando non sono aggiornati, in quanto sono i valori utilizzati per lo standard NTSC originale e non monitor moderni.

  

Qual è la fonte di questi valori?

La "fonte" dei coefficienti pubblicati sono le specifiche NTSC che può essere visto in REC601 e Caratteristiche di televisione .

La "fonte ultima" sono la CIE circa 1931 esperimenti sulla percezione umana del colore. La risposta spettrale della visione umana non è uniforme. Gli esperimenti hanno portato alla ponderazione dei valori tristimolo basati sulla percezione. Il nostro L, coni M e S 1 sono sensibili alle lunghezze d'onda della luce che identifichiamo come "Rosso", "Verde" e "Blu" (rispettivamente), che è dove i colori primari tristimolo sono derivati . 2

La luce lineare 3 coefficienti spettrali per sRGB (e REC709) sono:

R lin * 0,2126 + G lin * 0,7152 + B lin * 0.0722 = y

Queste sono specifici per gli spazi colore sRGB e REC709, che sono destinati a rappresentare monitor per computer (sRGB) o monitor HDTV (REC709), e sono dettagliati nei documenti ITU per REC709 e anche < 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)

NOTE (1) I coni sono il colore individuare le cellule della retina dell'occhio.
(2) Tuttavia, le lunghezze d'onda tristimolo scelti non sono al "picco" di ogni tipo cono - valori anziché tristimolo sono scelti in modo che stimolano il particolare cono tipo sostanzialmente più di un altro, cioè la separazione di stimolo
. (3) È necessario linearizzare i valori sRGB prima di applicare i coefficienti. Discuto questo un'altra risposta qui.

Questi valori variano da persona a persona, in particolare per coloro che sono daltonici.

è tutto questo davvero necessario, la percezione umana e CRT vs LCD varierà, ma l'intensità di R G B non lo fa, perché non L = (R + G + B)/3 e impostare il nuovo RGB a L, L, L?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top