YCbCr

Da Wikipedia, l'enciclopedia libera.
Un'immagine a colori e i suoi componenti Y, Cb e Cr. Si osservi come il segnale Y sia essenzialmente una copia in scala di grigi dell'immagine originale; la neve bianca appare come un valore intermedio nei canali Cr e Cb; la finestra marrone è di debole intensità nel canale Cb e forte nel Cr; l'erba verde ha bassi valori sia nei canali Cb che Cr e il cielo blu ha un livello elevato nel canale Cb e basso nel Cr.

In elettronica il termine YCbCr o Y'CbCr indica una famiglia di spazi colore usata nei sistemi video a componenti e di fotografia digitale. Y' è il componente di luma mentre Cb e Cr indicano i componenti di crominanza. Il simbolo primo dopo la Y serve a distinguere il luma dalla luminanza. Lo Y'CbCr è talvolta confuso con lo spazio colore YUV, e gli stessi termini YCbCr e YUV sono a volte usati come sinonimi, dando origine a un po' di confusione. Quando ci si riferisce a segnali di tipo video o in forma digitale, "YUV" significa probabilmente "Y'CbCr" nella maggior parte dei casi.

Nel caso di video a componenti analogico, l'Y'CbCr è spesso chiamato YPbPr, anche se il termine Y'CbCr viene comunemente usato per entrambi i sistemi, con o senza il primo.

Lo Y'CbCr non è uno spazio colore assoluto, ma è un modo di codificare l'informazione RGB, e i colori realmente visualizzati dipendono dai coloranti usati dal mezzo di visualizzazione. Di conseguenza, un valore espresso come è prevedibile solo se sono usati coloranti RGB standard o se un profilo colore ICC, è allegato o implicito.

Fondamenti[modifica | modifica sorgente]

I monitor video CRT sono pilotati dal voltaggio dei segnali rosso, verde e blu, ma il trattamento dei segnali RGB non è efficiente per la registrazione e la trasmissione, essendo segnali molto ridondanti. Gli spazi colore come Y'CbCr vengono utilizzati per estrarre un segnale di luma (Y') che può essere registrato o trasmesso ad alta risoluzione e due componenti di crominanza (Cb e Cr) che possono essere ridotti in banda, sottocampionati, compressi o trattati in modo da ridurre la loro larghezza di banda, sfruttando il principio della percezioni visiva ridotta.

Dettagli tecnici[modifica | modifica sorgente]

I segnali Y'CbCr, prima di essere processati per ottenere un segnale in forma digitale, sono chiamata YPbPr, e sono creati dai corrispondenti primari RGB corretti in gamma usando due costanti Kb e Kr come segue:

YPbPr (versione analogica dello Y'CbCr) da R'G'B'
====================================================
Y' =  Kr * R'        + (1 - Kr - Kb) * G' + Kb * B'
Pb = 0.5 * (B' - Y') / (1 - Kb)
Pr = 0.5 * (R' - Y') / (1 - Kr)
....................................................
R', G', B' in [0; 1]
Y' in [0; 1]
Pb in [-0.5; 0.5]
Pr in [-0.5; 0.5]


Y' =  Kr * R' + (1 - Kr - Kb) * G' + Kb * B'

Pb =\frac12 * \frac{B' - Y'}{1 - Kb}

Pr =\frac12 * \frac{R' - Y'}{1 - Kr}

dove Kb e Kr sono derivati dalla definizione del corrispondente spazio colore RGB.

Qui, il simbolo primo (') significa una correzione di gamma applicata; di conseguenza, R', G' e B' hanno un'escursione nominale da 0 a 1, dalla minima intensità (nero) alla massima (bianco). Il valore luma (Y) risultante avrà un valore nominale da 0 a 1, e i valori di croma (Cb e Cr) da -0.5 a +0.5. È possibile ottenere il procedimento opposto invertendo le equazioni sopraelencate.

Quando sono rappresentanti in forma digitale, i risultati sono scalati e arrotondati, e di solito viene aggiunto un valore di offset. Per esempio, la scalatura e l'offset del componente Y' secondo le specifiche MPEG-2[1] risulta nel valore di 16 per il nero e 253 per il bianco nel caso di una rappresentazione a 8 bit. Lo standard prevede che i valori Cb e Cr digitalizzati a 8 bit scalino in una gamma da 16 a 240. Di conseguenza, la riscalatura della frazione (235-16)/(240-16) = 219/224 è necessaria all'interno della matrice colore o in qualunque processo sul segnale nello spazio colore YCbCr, che comporta distorsioni della quantizzazione.

La scalatura che risulta dall'uso di una gamma ristretta di valori digitali permette però la ripresa di valori di bianco e nero leggermente al di sopra e al di sotto del limite teorico senza clipping del segnale, comportando in pratica un'estensione del gamut nominale. Le parti estese sono chiamate in gergo headroom e footroom.

Applicazioni televisive[modifica | modifica sorgente]

Definizione standard[modifica | modifica sorgente]

La forma dello Y'CbCr definita nella specifica ITU-R BT.601 (in precedenza CCIR 601) per l'uso nel video a componenti digitale in ambito televisivo deriva dal corrispondente spazio colore RGB in questo modo:

Kb = 0.114
Kr = 0.299

Dalle formule riportate in precedenza, si deriva quanto segue:
Componenti analogici YPbPr:

YPbPr (ITU-R BT.601)
========================================================
Y' =     + 0.299    * R' + 0.587    * G' + 0.114    * B'
Pb =     - 0.168736 * R' - 0.331264 * G' + 0.5      * B'
Pr =     + 0.5      * R' - 0.418688 * G' - 0.081312 * B'
........................................................
R', G', B' in [0; 1]
Y' in [0; 1]
Pb in [-0.5; 0.5]
Pr in [-0.5; 0.5]

Digitalizzati per Y'CbCr:

Y'CbCr (601) da R'G'B'
========================================================
Y' = 16  + ( 65.481  * R' + 128.553  * G' +  24.966  * B')
Cb = 128 + (-37.797  * R' -  74.203  * G' + 112.0    * B')
Cr = 128 + (112.0    * R' -  93.786  * G' -  18.214  * B')
........................................................
R', G', B' in [0; 1]
Y'               in {16, 17, ..., 235}
    con footroom in {1, 2, ..., 15}
        headroom in {236, 237, ..., 254}
        sync.    in {0, 255}
Cb, Cr           in {16, 17, ..., 240}

Se R', G' e B' hanno una precisione di 8 bit, allora

YCbCr (601) da "R'G'B' digitale a 8 bit "
========================================================================
Y' = 16  + 1/256 * (   65.738  * R'd +  129.057  * G'd +  25.064  * B'd)
Cb = 128 + 1/256 * ( - 37.945  * R'd -   74.494  * G'd + 112.439  * B'd)
Cr = 128 + 1/256 * (  112.439  * R'd -   94.154  * G'd -  18.285  * B'd)
........................................................................
R'd, G'd, B'd in {0, 1, 2, ..., 255}
Y'               in {16, 17, ..., 235}
    con footroom in {1, 2, ..., 15}
        headroom in {236, 237, ..., 254}
        sync.    in {0, 255}
Cb, Cr           in {16, 17, ..., 240}

Questa forma di Y'CbCr è usata in primo luogo per i sistemi televisivi a definizione standard, poiché usa un modello RGB adatto all'emissione dei primi CRT. la trasformata equivalente inversa è:

R'G'B' a 8 bit da YCbCr (601)
=====================================================================
R'd = ( 298.082 * Y'                + 408.583 * Cr ) / 256 - 222.921
G'd = ( 298.082 * Y' - 100.291 * Cb - 208.120 * Cr ) / 256 + 135.576
B'd = ( 298.082 * Y' + 516.412 * Cb                ) / 256 - 276.836
.....................................................................

Alta definizione[modifica | modifica sorgente]

Un tipo differente di Y'CbCr è specificato nello standard ITU-R BT.709, per l'uso con sistemi ad alta definizione, basata su un modello RGB più adatto ai nuovi CRT e ai display più moderni. Questo nuovo tipo viene usato anche per display di computer. In questo caso, i valori Kb e Kr sono diversi, ma le formule sono le stesse. Le costanti per lo standard ITU-R BT.709 sono:

Kb = 0.0722
Kr = 0.2126

Si osservi che le definizioni per i primari R', G' e B' sono diverse tra gli standard BT.601 e BT.709, per cui una vera conversione da un tipo all'altro di YCbCr non è solo una questione matematica. In effetti, quando lo spazio colore YCbCr è usato correttamente, il valori Kb e Kr sono derivate dalle specifiche precise dei primari RGB, in modo tale che il segnale di luma (Y') corrisponde il più possibile alla luminanza corretta in gamma.

Altri impieghi[modifica | modifica sorgente]

Anche se quelle sopra elencate sono le forme principali, altri tipi di Y'CbCr esistono, per esempio lo standard SMPTE 240M specifica lo YCbCr con valori di Kb = 0.087 e Kr = 0.212.

Lo standard JPEG permette uno spazio colore Y'CbCr dove i valori Y', Cb e Cr hanno l'intera gamma di 256 valori[2]:

JPEG-Y'CbCr (601) da "R'G'B' digitale a 8 bit"
========================================================================
Y' =       + 0.299    * R'd + 0.587    * G'd + 0.114    * B'd
Cb = 128   - 0.168736 * R'd - 0.331264 * G'd + 0.5      * B'd
Cr = 128   + 0.5      * R'd - 0.418688 * G'd - 0.081312 * B'd
........................................................................
R'd, G'd, B'd   in {0, 1, 2, ..., 255}
Y', Cb, Cr      in {0, 1, 2, ..., 255}

Limiti tecnici[modifica | modifica sorgente]

Dal momento che le equazioni alla base dello spazio colore sono definite in un modo che ruota tutto lo spazio colore RGB nominale e lo scala in uno spazio colore YCbCr (più ampio), ci sono alcuni punti dello spazio colore YCbCr che non possono essere rappresentati nel corrispondente dominio RGB. Questo causa alcuni problemi riguardo a come correttamente interpretare e visualizzare alcuni segnali.

Voci correlate[modifica | modifica sorgente]

Note[modifica | modifica sorgente]

  1. ^ The MPEG-2 specification, ITU H.262 2000 E pg. 44
  2. ^ JPEG File Interchange Format Version 1.02

Collegamenti esterni[modifica | modifica sorgente]