Spazi colore YCbCr

YCbCr, Y’CbCr o Y Pb / Cb Pr / Cr , scritto anche come YC B C R o Y’C B C R , è una famiglia di spazi colore utilizzati come parte della pipeline di immagini a colori in video e fotografia digitale sistemi. Y ‘è il componente luma e CB e CR sono le componenti blu-differenza e rosso-differenza cromia. Y ‘(con primo) si distingue da Y, che è la luminanza, il che significa che l’intensità della luce è codificata non linearmente sulla base di primari RGB con correzione della gamma.

Gli spazi colore Y’CbCr sono definiti da una trasformazione di coordinate matematiche da uno spazio colore RGB associato. Se lo spazio cromatico RGB sottostante è assoluto, lo spazio colore Y’CbCr è anch’esso uno spazio colore assoluto; al contrario, se lo spazio RGB è mal definito, lo è anche Y’CbCr.

Fondamento logico
I display a tubo catodico sono pilotati da segnali di tensione rossi, verdi e blu, ma questi segnali RGB non sono efficienti come rappresentazione per la memorizzazione e la trasmissione, poiché hanno una grande ridondanza.

YCbCr e Y’CbCr sono un’approssimazione pratica all’elaborazione del colore e all’uniformità percettiva, in cui i colori primari corrispondenti approssimativamente al rosso, al verde e al blu vengono elaborati in informazioni percettivamente significative. In questo modo, la successiva elaborazione di immagini / video, trasmissione e archiviazione può eseguire operazioni e introdurre errori in modi percettivamente significativi. Y’CbCr viene utilizzato per separare un segnale luma (Y ‘) che può essere memorizzato con alta risoluzione o trasmesso ad alta larghezza di banda e due componenti chroma (CB e CR) che possono essere ridotti, sottocampionati, compressi o altrimenti ridotti in larghezza di banda trattato separatamente per migliorare l’efficienza del sistema.
Un esempio pratico sarebbe la riduzione della larghezza di banda o della risoluzione assegnata a “colore” rispetto a “bianco e nero”, poiché gli esseri umani sono più sensibili alle informazioni in bianco e nero (vedere l’esempio dell’immagine a destra). Questo è chiamato sottocampionamento di crominanza.

YCbCr
YCbCr è talvolta abbreviato in YCC. Y’CbCr viene spesso chiamato YPbPr quando viene usato per video component analogici, sebbene il termine Y’CbCr sia comunemente usato per entrambi i sistemi, con o senza il primo.

Y’CbCr viene spesso confuso con lo spazio colore YUV, e tipicamente i termini YCbCr e YUV sono usati in modo intercambiabile, portando ad una certa confusione. La differenza principale è che YUV è analogico e YCbCr è digitale.

I segnali Y’CbCr (prima del ridimensionamento e offset per posizionare i segnali in forma digitale) sono chiamati YPbPr e vengono creati dalla corrispondente sorgente RGB (rossa, verde e blu) regolata alla gamma utilizzando tre costanti definite KR, KG e KB come segue:

dove K R , K G e K B sono normalmente derivati ​​dalla definizione dello spazio RGB corrispondente e richiesti per soddisfare  . (La manipolazione della matrice equivalente viene spesso definita “matrice dei colori”.)

Qui, i simboli “primi” significano che viene utilizzata la correzione gamma; pertanto R ‘, G’ e B ‘variano nominalmente da 0 a 1, con 0 che rappresenta l’intensità minima (ad esempio, per la visualizzazione del colore nero) e 1 il massimo (ad esempio, per la visualizzazione del colore bianco). Il valore della luminanza risultante (Y) avrà quindi un intervallo nominale compreso tra 0 e 1 e i valori chroma (PB e PR) avranno un intervallo nominale compreso tra -0,5 e +0,5. Il processo di conversione inversa può essere facilmente ricavato invertendo le equazioni precedenti.
Quando si rappresentano i segnali in forma digitale, i risultati vengono ridimensionati e arrotondati e vengono generalmente aggiunti gli offset. Ad esempio, il ridimensionamento e l’offset applicati al componente Y ‘per specifica (ad es. MPEG-2) determinano il valore di 16 per il nero e il valore di 235 per il bianco quando si utilizza una rappresentazione a 8 bit. Lo standard ha versioni digitalizzate a 8 bit di CB e CR scalate in un intervallo diverso da 16 a 240.
Di conseguenza, la riscalatura della frazione (235-16) / (240-16) = 219/224 è talvolta necessaria quando si esegue la matrice dei colori o l’elaborazione nello spazio YCbCr, con conseguenti distorsioni di quantizzazione quando l’elaborazione successiva non viene eseguita utilizzando profondità di bit più elevate.

Il ridimensionamento che risulta nell’uso di una gamma più piccola di valori digitali rispetto a quanto potrebbe sembrare desiderabile per la rappresentazione della gamma nominale dei dati di ingresso consente alcuni “overshoot” e “undershoot” durante l’elaborazione senza richiedere clipping indesiderato. Questo “head-room” e “toe-room” possono anche essere utilizzati per l’estensione della gamma di colori nominale, come specificato da xvYCC.
Il valore 235 ospita un overshoot massimo nero / bianco di 255 – 235 = 20, o 20 / (235 – 16) = 9,1%, che è leggermente maggiore del superamento teorico massimo (fenomeno di Gibbs) di circa l’8,9% di il passo massimo. La toe-room è più piccola, consentendo solo 16/219 = overshoot del 7,3%, che è inferiore al superamento teorico massimo dell’8,9%.

Poiché le equazioni che definiscono YCbCr sono formate in modo da ruotare l’intero cubo di colore RGB nominale e adattarlo in scala ad un cubo di colore YCbCr (più grande), ci sono alcuni punti all’interno del cubo di colore YCbCr che non possono essere rappresentati nel dominio RGB corrispondente (almeno non all’interno della gamma nominale RGB). Ciò causa alcune difficoltà nel determinare come interpretare e visualizzare correttamente alcuni segnali YCbCr. Questi valori YCbCr fuori dall’intervallo vengono utilizzati da xvYCC per codificare i colori al di fuori della gamma BT.709.

Conversione da RGB a YCbCr
Conversione ITU-R BT.601

La forma di Y’CbCr che è stata definita per l’uso televisivo a definizione standard nello standard ITU-R BT.601 (precedentemente CCIR 601) per l’uso con video componente digitale deriva dallo spazio RGB corrispondente come segue:

Dalle costanti e dalle formule precedenti, per ITU-R BT.601 è possibile ricavare quanto segue.

Analog YPbPr da analogico R’G’B ‘deriva come segue:

L’Y’CbCr digitale (8 bit per campione) è derivato dall’R’G’B ‘analogico come segue:

o semplicemente componentwise


I segnali risultanti vanno da 16 a 235 per Y ‘(gamma Cb e Cr da 16 a 240); i valori da 0 a 15 sono chiamati footroom, mentre i valori da 236 a 255 sono chiamati headroom.

In alternativa, Y’CbCr digitale può derivare dall’R’dG’dB’d digitale (8 bit per campione, ciascuno che utilizza l’intera gamma con zero che rappresenta il nero e 255 che rappresenta il bianco) in base alle seguenti equazioni:

Nella formula sopra, i fattori di scala vengono moltiplicati per  . Ciò consente il valore 256 nel denominatore, che può essere calcolato da un singolo bithift.
Se la sorgente digitale R’d”B’d B include footroom e headroom, l’offset del footroom 16 deve essere sottratto prima da ciascun segnale e un fattore di scala di  deve essere incluso nelle equazioni.

La trasformazione inversa è:

La trasformazione inversa senza arrotondamenti (utilizzando valori provenienti direttamente dalla raccomandazione ITU-R BT.601) è:

Questa forma di Y’CbCr viene utilizzata principalmente per i vecchi sistemi televisivi a definizione standard, poiché utilizza un modello RGB che si adatta alle caratteristiche di emissione dei fosfori dei CRT più vecchi.
Conversione ITU-R BT.709

Una diversa forma di Y’CbCr è specificata nello standard ITU-R BT.709, principalmente per l’utilizzo HDTV. Il modulo più recente viene anche utilizzato in alcune applicazioni orientate al computer. In questo caso, i valori di Kb e Kr differiscono, ma le formule per il loro utilizzo sono uguali. Per ITU-R BT.709, le costanti sono:

Questa forma di Y’CbCr si basa su un modello RGB che si adatta più strettamente alle caratteristiche di emissione del fosforo dei nuovi CRT e di altre moderne apparecchiature di visualizzazione.
Anche le definizioni dei segnali R ‘, G’ e B ‘differiscono tra BT.709 e BT.601 e differiscono all’interno di BT.601 a seconda del tipo di sistema TV in uso (625 linee come in PAL e SECAM o 525 linee come in NTSC) e differiscono ulteriormente in altre specifiche. In diversi modelli ci sono differenze nelle definizioni delle coordinate cromatiche R, G e B, il punto di bianco di riferimento, l’intervallo di gamme supportato, le esatte funzioni di pre-compensazione gamma per derivare R ‘, G’ e B ‘da R, G, e B, e nel ridimensionamento e offset da applicare durante la conversione da R’G’B ‘a Y’CbCr.Quindi la corretta conversione di Y’CbCr da una forma all’altra non è solo una questione di invertire una matrice e applicare l’altra. Infatti, quando Y’CbCr è progettato idealmente, i valori di KB e KR sono derivati ​​dalla specifica precisa dei segnali primari di colore RGB, in modo che il segnale luma (Y ‘) corrisponda il più fedelmente possibile a una misurazione gamma-adjusted di luminanza (tipicamente basata sulle misurazioni CIE 1931 della risposta del sistema visivo umano agli stimoli di colore).

Conversione ITU-R BT.2020
Lo standard ITU-R BT.2020 definisce sia Y’CbCr corretto alla gamma sia una versione con codifica lineare di YCbCr chiamata YcCbcCrc. YcCbcCrc può essere utilizzato quando la massima priorità è la conservazione più accurata delle informazioni sulla luminanza. Per YcCbcCrc, i coefficienti sono:

Conversione JPEG
L’uso JFIF di JPEG supporta Y’CbCr dove Y ‘, CB e CR hanno l’intervallo completo di 8 bit di [0 … 255]. Di seguito sono riportate le equazioni di conversione espresse a sei cifre decimali di precisione.(Per le equazioni ideali, vedere ITU-T T.871.) Si noti che per le seguenti formule, l’intervallo di ciascun ingresso (R, G, B) è anche l’intervallo completo di 8 bit di [0 … 255].

E ritorno:

CbCr Plane at Y = 0.5

Y = 0.5

Nota: quando Y = 0, R, G e B devono essere tutti zero, quindi Cb e Cr possono essere solo zero.Allo stesso modo, quando Y = 1, R, G e B devono essere tutti 1, quindi Cb e Cr possono essere solo zero.
A differenza di R, G e B, i valori di Y, Cb e Cr non sono indipendenti; la scelta arbitraria dei valori YCbCr può portare a uno o più valori RGB fuori gamma, vale a dire superiore a 1.0 o inferiore a 0.0.