Informazioni su YUV Video
Il video digitale viene spesso codificato in un formato YUV . Questo articolo illustra i concetti generali del video YUV, insieme ad alcuni termini, senza approfondire la matematica dell'elaborazione video YUV.
Se hai lavorato con la grafica del computer, probabilmente hai familiarità con il colore RGB. Un colore RGB viene codificato usando tre valori: rosso, verde e blu. Questi valori corrispondono direttamente a parti dello spettro visibile. I tre valori RGB formano un sistema di coordinate matematiche, denominato spazio colore . Il componente rosso definisce un asse di questo sistema di coordinate, il blu definisce il secondo e il terzo definisce il terzo, come illustrato nella figura seguente. Qualsiasi colore RGB valido rientra in questo spazio colori. Ad esempio, il magenta puro è 100% blu, 100% rosso e 0% verde.
Anche se RGB è un modo comune per rappresentare i colori, sono possibili altri sistemi di coordinate. Il termine YUV fa riferimento a una famiglia di spazi di colore, che codificano tutte le informazioni sulla luminosità separatamente dalle informazioni sul colore. Come RGB, YUV usa tre valori per rappresentare qualsiasi colore. Questi valori sono detti Y', U e V. (in effetti, questo uso del termine "YUV" è tecnicamente impreciso. Nel video del computer, il termine YUV quasi sempre si riferisce a uno spazio colore specifico denominato Y'CbCr, discusso più avanti. Tuttavia, YUV viene spesso usato come termine generale per qualsiasi spazio dei colori che funziona lungo gli stessi principi di Y'CbCr.
Il componente Y, detto anche luma, rappresenta il valore di luminosità del colore. Il simbolo primo (') viene utilizzato per distinguere luma da un valore strettamente correlato, luminanza, che è designata Y. La dominanza è derivata da valori RGB lineari, mentre luma è derivato da valori RGB non lineari (con correzion e gamma). La luminanza è una misura più vicina alla vera luminosità, ma la luma è più pratica da utilizzare per motivi tecnici. Il simbolo primo viene spesso omesso, ma gli spazi di colore YUV usano sempre il luma, non la luminanza.
Luma deriva da un colore RGB prendendo una media ponderata dei componenti rosso, verde e blu. Per la televisione a definizione standard, viene usata la formula seguente:
Y' = 0.299R + 0.587G + 0.114B
Questa formula riflette il fatto che l'occhio umano è più sensibile a determinate lunghezze d'onda della luce di altri, che influisce sulla luminosità percepita di un colore. La luce blu appare più fioca, il verde appare più luminoso, e il rosso è intermedio. Questa formula riflette anche le caratteristiche fisiche dei fosfori utilizzati nelle prime televisioni. Una formula più recente, tenendo conto della tecnologia televisiva moderna, viene usata per la televisione ad alta definizione:
Y' = 0.2125R + 0.7154G + 0.0721B
L'equazione luma per la televisione a definizione standard è definita in una specifica denominata ITU-R BT.601. Per la televisione ad alta definizione, la specifica pertinente è ITU-R BT.709.
I componenti U e V, chiamati anche valori cromatici o valori di differenza di colore, sono derivati sottraendo il valore Y dai componenti rosso e blu del colore RGB originale.
U = B - Y'
V = R - Y'
Insieme, questi valori contengono informazioni sufficienti per recuperare il valore RGB originale.
Vantaggi di YUV
La televisione analogica utilizza in parte YUV per motivi storici. I segnali televisivi a colori analogici sono stati progettati per essere compatibili retroattivamente con i televisori in bianco e nero. Il segnale televisivo a colori trasporta le informazioni sulla croma (U e V) sovrapposte al segnale luma. I televisori neri e bianchi ignorano il cromatico e visualizzano il segnale combinato come immagine in scala di grigi. Il segnale è progettato in modo che il cromatico non interferisca significativamente con il segnale luma. I televisori a colori possono estrarre il cromatico e convertire nuovamente il segnale in RGB.
YUV ha un altro vantaggio che è più rilevante oggi. L'occhio umano è meno sensibile ai cambiamenti di tonalità rispetto ai cambiamenti di luminosità. Di conseguenza, un'immagine può avere meno informazioni cromatica rispetto alle informazioni luma senza sacrificare la qualità percepita dell'immagine. Ad esempio, è comune campionare i valori cromatici a metà della risoluzione orizzontale dei campioni luma. In altre parole, per ogni due campioni luma in una riga di pixel, è presente un campione U e un campione V. Supponendo che vengano usati 8 bit per codificare ogni valore, è necessario un totale di 4 byte per ogni due pixel (due Y, uno U e una V), per una media di 16 bit per pixel o 30% minore della codifica RGB a 24 bit equivalente.
YUV non è intrinsecamente più compatto di RGB. A meno che il colore non sia sottocampionato, un pixel YUV è la stessa dimensione di un pixel RGB. Inoltre, la conversione da RGB a YUV non comporta perdita di dati. Se non è presente alcun sottocampionamento, un pixel YUV può essere convertito in RGB senza perdita di informazioni. Il downcampionamento di un'immagine YUV la rende più piccola e comporta anche la perdita di alcune informazioni sul colore. Se eseguita correttamente, tuttavia, la perdita non è significativa in modo percettivo.
YUV nel video per computer
Le formule elencate in precedenza per YUV non sono le conversioni esatte usate nel video digitale. Il video digitale usa in genere una forma di YUV denominata Y'CbCr. Essenzialmente, Y'CbCr funziona ridimensionando i componenti YUV agli intervalli seguenti:
Componente | Gamma |
---|---|
Y' | 16–235 |
Cb/Cr | 16-240, con 128 che rappresenta zero |
Questi intervalli presuppongono 8 bit di precisione per i componenti Y'CbCr. Ecco la derivazione esatta di Y'CbCr, usando la definizione BT.601 di luma:
Iniziare con i valori RGB nell'intervallo [0...1]. In altre parole, il nero puro è 0 e il bianco puro è 1. Importante, si tratta di valori RGB non lineari (con correzione gamma).
Calcola la luma. Per BT.601, Y' = 0,299R + 0,587G + 0,114B, come descritto in precedenza.
Calcolare i valori intermedi di differenza cromatica (B - Y') e (R - Y'). Questi valori hanno un intervallo di +/- 0,886 per (B - Y') e +/- 0,701 per (R - Y').
Scalare i valori di differenza cromatica come indicato di seguito:
Pb = (0,5 / (1 - 0,114)) × (B - Y')
Pr = (0,5 / (1 - 0,299)) × (R - Y')
Questi fattori di ridimensionamento sono progettati per assegnare entrambi i valori allo stesso intervallo numerico, +/- 0,5. Insieme, definiscono uno spazio di colore YUV denominato Y'PbPr. Questo spazio colore viene usato nel video dei componenti analogici.
Ridimensionare i valori Y'PbPr per ottenere i valori Y'CbCr finali:
Y' = 16 + 219 × Y'
Cb = 128 + 224 × Pb
Cr = 128 + 224 × Pr
Questi ultimi fattori di ridimensionamento producono l'intervallo di valori elencati nella tabella precedente. Naturalmente, è possibile convertire RGB direttamente in Y'CbCr senza archiviare i risultati intermedi. I passaggi sono elencati separatamente qui per mostrare come Y'CbCr deriva dalle equazioni YUV originali fornite all'inizio di questo articolo.
La tabella seguente mostra i valori RGB e YCbCr per vari colori, usando di nuovo la definizione BT.601 di luma.
Colore | R | G | B | Y' | Cb | Cr |
---|---|---|---|---|---|---|
Nero | 0 | 0 | 0 | 16 | 128 | 128 |
Rosso | 255 | 0 | 0 | 81 | 90 | 240 |
Verde | 0 | 255 | 0 | 145 | 54 | 34 |
Blu | 0 | 0 | 255 | 41 | 240 | 110 |
Ciano | 0 | 255 | 255 | 170 | 166 | 16 |
Magenta | 255 | 0 | 255 | 106 | 202 | 222 |
Giallo | 255 | 255 | 0 | 210 | 16 | 146 |
Bianco | 255 | 255 | 255 | 235 | 128 | 128 |
Come illustrato in questa tabella, Cb e Cr non corrispondono alle idee intuitive sul colore. Ad esempio, il bianco puro e il nero puro contengono entrambi livelli neutri di Cb e Cr (128). I valori più alti e minimi per Cb sono rispettivamente blu e giallo. Per Cr, i valori più alti e minimi sono rossi e ciano.
Per altre informazioni
- Formati YUV a 8 bit consigliati per il rendering per video
- Keith Jack. Video Demystified, Quinta edizione. Newnes, 2007.
- Charles A. Poynton. Introduzione tecnica al video digitale. Wiley, 1996.
Argomenti correlati