YUV

Da Wikipedia, l'enciclopedia libera.
Esempio del piano colore U-V, il valore Y è 0.5, rappresentato all'interno del gamut RGB.
L'immagine completa, in alto, è poi scomposta in Y, U e V.

Lo YUV è uno spazio colore utilizzato per la codifica di immagini o video. Concepito per rispecchiare il comportamento della visione umana, permette una larghezza di banda della crominanza ridotta: questa tecnica permette una mascheratura più efficiente di eventuali errori di trasmissione o artefatti di compressione, rispetto a una rappresentazione RGB diretta.

Terminologia[modifica | modifica wikitesto]

I termini Y'UV, YUV, YCbCr e YPbPr non sempre sono chiari e il loro utilizzo dà luogo a sovrapposizioni. Da un punto di vista storico, i termini YUV e Y'UV si riferiscono alla codifica utilizzata per trasmissione a colori analogica secondo standard ben specifici, mentre”YCbCr” si riferisce alla codifica digitale di video e immagini, come per esempio negli schemi di compressione MPEG e JPEG. In epoca moderna, il termine YUV è di uso comune in informatica per descrivere file che contengono video codificato secondo il modello YcbCr.

Il modello Y'UV definisce uno spazio colore in termini di un componente di luma (Y') e due componenti di crominanza (UV). Questo modello è utilizzato negli standard di televisione analogica PAL e SECAM, mentre la televisione in bianco e nero utilizzava solo il componente Y'. Le informazioni di colore U e V sono aggiunte separatamente tramite una sottoportante, in modo da conservare la compatibilità con ricevitori in bianco e nero. La notazione Y' (luma) differisce da Y (luminanza) in quanto la prima è corretta in gamma (da cui il simbolo “'”),[1] e rappresenta quindi un valore di voltaggio elettrico, mentre la seconda si riferisce a un intento percettivo.

Il modello YPbPr, utilizzato nel video analogico a componenti, e la sua versione digitale YCbCr sono derivate dal modello Y'UV, e talvolta chiamate allo stesso modo. (CB/PB e CR/PR sono deviazioni dal grigio sugli assi blu-giallo e rosso-cyan, mentre U e V sono differenze di colore tra blu e rosso e il segnale di luminanza. Lo spazio colore Y'IQ utilizzato nella televisione analogica NTSC è correlato allo Y'UV, seppure in una maniera più complessa.

Cenni storici[modifica | modifica wikitesto]

Lo Y'UV fu progettato allo scopo di permettere la trasmissione televisiva a colori, pur conservando la compatibilità con le infrastrutture esistenti, in bianco e nero.[2] Questa esigenza comportava la necessità di conservare il segnale di luma Y' già esistente, per cui venne sviluppata una tecnica per aggiungervi i due segnali di crominanza UV.

Come già accennato, U e V sono due segnali di differenza cromatica e, a differenza dei segnali R e B completi, richiedono molta meno banda per essere trasmessi. Se si considera il caso limite di una trasmissione in bianco e nero, i segnali U e V non comportano alcuna modulazione aggiuntiva, mentre i segnali R e B richiederebbero comunque la banda piena. Per quanto ormai obsoleta, questa caratteristica del modello fu particolarmente importante all'epoca dello sviluppo del sistema, poiché garantiva la possibilità ai nuovi televisori a colori di ricevere i tradizionali segnali in bianco e nero già esistenti, senza dover implementare alcuna circuiteria aggiuntiva. Allo stesso tempo, i televisori in bianco e nero già esistenti avrebbero potuto semplicemente ignorare i segnali di crominanza ed utilizzare il segnale Y' comunque trasmesso.

Da ricordare anche il fatto che i segnali già trasmessi in bianco e nero occupavano già tutta la banda disponibile sul canale: la mancanza di spazio aggiuntivo rese necessario assegnare una banda minore alla sottoportante di crominanza. L'uso dei segnali UV rispondeva anche a questa esigenza, senza sacrificare la risoluzione disponibile per il segnale Y'.[3]

Sistemi luminanza/crominanza, cenni generali[modifica | modifica wikitesto]

Il vantaggio principale dei sistemi luma/chroma come lo Y'UV e i suoi derivati Y'IQ e YDbDr, è la compatibilità con i sistemi in bianco e nero (in buona parte dovuta al lavoro di Georges Valensi). Il canale Y' conserva quasi tutti i dati ripresi dalle telecamere in bianco e nero, e produce un segnale adatto alla ricezione su vecchi sistemi, semplicemente scartando i canali U e V. Su un televisore a colori, sono utilizzati tutti e tre i canali, ripristinando le informazioni originali RGB.

Un altro vantaggio dello Y'UV è la compressione, e il conseguente notevole risparmio di banda passante, che si ottiene scartando alcune informazioni di colore cui l'occhio umano non è molto sensibile. Buona parte del dettaglio percepito, infatti, è data dalle informazioni sui livelli luminosi presenti nel segnale di luminanza. Di conseguenza, i segnali U e V possono essere compressi in maniera sostanziale. Nei sistemi PAL e NTSC(YIQ) la crominanza occupa una banda notevolmente inferiore a quella della luminanza. Questa caratteristica è stata mantenuta in tutti i sistemi analogici e anche nella maggior parte di quelli digitali, dove si usa il sottocampionamento della crominanza, dimezzando la risoluzione delle informazioni di colore. Questo schema, noto come 4:2:2, è il più comune. Dal punto di vista storico, è interessante notare la notazione 4:x:x che deriva dai primi sistemi NTSC che campionavano le informazioni di colore a una risoluzione pari a un quarto di quelle luminanza (4:1:1). Solo i sistemi di alta gamma, a tutt'oggi, sono in grado di campionare le informazioni di luminanza e crominanza con la stessa risoluzione (4:4:4).

Gli assi I e Q furono scelti, di nuovo, in base alle caratteristiche della visione umana, con un asse richiedente la maggiore larghezza di banda e l'altro, per una fortunata coincidenza a 90°, la minore. Tuttavia, la demodulazione di questi assi è abbastanza complessa e richiede due linee di ritardo analogiche: una tecnologia costosa per l'epoca, che i televisori NTSC raramente utilizzavano.

La compressione effettuata sui canali U e V è del tipo a perdita di informazioni e questo comporta un peggioramento della qualità del segnale, particolarmente evidente nei fenomeni di battimento che si possono verificare, ulteriormente peggiorata dalla miscelazione nel segnale video composito. Per quanto all'epoca della progettazione degli standard di trasmissione analogica questo non aspetto non fosse particolarmente importante, con il tempo la qualità dei televisori è migliorata molto e il calo qualitativo rispetto a un segnale diretto RGB è facilmente osservabile. Lo Y'UV non è uno spazio colore di tipo assoluto. È un modo per codificare le informazioni RGB, e il colore che viene visualizzato al termine della catena dipende in realtà dal sistema utilizzato per visualizzarlo. Di conseguenza, un valore espresso come Y'UV può essere stabilito a priori solo se vengono usato coloranti standard RGB (per esempio, un insieme specifico di rosso, verde e blu).

Confusione con Y'CbCr[modifica | modifica wikitesto]

Lo YUV è usato molto spesso come sinonimo di YCbCr. Si tratta tuttavia di formati differenti, uno analogico e l'altro digitale, con fattori di scalatura diversi tra loro.[4]

Nei sistemi digitali, il modello Y'CbCr è il più comunemente utilizzato sia per la compressione che per la trasmissione, in particolare per le applicazioni video ma anche più in generale ogni volta che si trattino immagini. È piuttosto frequente nei sistemi informatici usare il termine YUV al posto del corretto Y'CbCr, e questa pratica è probabilmente all'origine della confusione. Per esempio, il diffuso sistema di compressione MPEG, utilizzato nei DVD e nella trasmissione digitale, utilizza di solito un modello Y'CrCb, ma viene spesso indicato come YUV.

Conversione da/a RGB[modifica | modifica wikitesto]

i segnali sono tipicamente creati da una sorgente RGB, i cui valori pesati sono sommati per produrre Y', che rappresenta i livelli luminosi complessivi. I segnali U e V sono calcolati come differenze tra il segnale Y e gli originali R e B.

Date le seguenti costanti:

\begin{align}
W_R &= 0.299 \\
W_B &= 0.114 \\
W_G &= 1 - W_R - W_B = 0.587 \\
U_{Max} &= 0.436 \\
V_{Max} &= 0.615
\end{align}

lo Y'UV è calcolato da RGB come segue:

\begin{align}
Y' &= W_R R + W_G G + W_B B \\
U &= U_{Max} \frac{B - Y'}{1 - W_B} \\
V &= V_{Max} \frac{R - Y'}{1 - W_R}
\end{align}

Da cui risultano ampiezze di segnali rispettivamente per Y', U e V di [0, 1], [-UMax, UMax], e [-VMax, VMax].

Il processo inverso converte da RGB a Y'UV:

\begin{align}
R &= Y' + V \frac{1 - W_R}{V_{Max}} \\
G &= Y' - U \frac{W_B (1 - W_B)}{U_{Max} W_G} - V \frac{W_R (1 - W_R)}{V_{Max} W_G} \\
B &= Y' + U \frac{1 - W_B}{U_{Max}}
\end{align}

Sostituendo i valori alle costanti ed esprimendoli come matrice, si ha:


\begin{bmatrix} Y' \\ U \\ V \end{bmatrix}
=
\begin{bmatrix}
  0.299   &  0.587   &  0.114 \\
 -0.14713 & -0.28886 &  0.436 \\
  0.615   & -0.51499 & -0.10001
\end{bmatrix}
\begin{bmatrix} R \\ G \\ B \end{bmatrix}

\begin{bmatrix} R \\ G \\ B \end{bmatrix}
=
\begin{bmatrix}
 1 &  0       &  1.13983 \\
 1 & -0.39465 & -0.58060 \\
 1 &  2.03211 &  0
\end{bmatrix}
\begin{bmatrix} Y' \\ U \\ V \end{bmatrix}

Note[modifica | modifica wikitesto]

I pesi usati per calcolare Y' (riga superiore della matrice) sono identici a quelli usati per lo spazio colore Y'IQ.

Valori uguali di rosso, verde e blu (cioè, livelli di grigio) risultano in U e V pari a 0. Il nero, RGB=(0, 0, 0), risulta in YUV=(0, 0, 0). Il bianco, RGB=(1, 1, 1), risulta in YUV=(1, 0, 0).

Queste sono le formule tradizionali utilizzate nelle televisioni e in generale nelle attrezzature analogiche. I sistemi digitali, come quelli utilizzati per l'alta definizione e le telecamere digitali usano il modello Y'CbCr.

Tipi di campionamento[modifica | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi sottocampionamento della crominanza.

Per ottenere un segnale digitale, le immagini Y'UV possono essere campionate in parecchi modi diversi. Come già detto, il più comune è il 4:2:2, ma anche il 4:2:0 o il 4:1:1 sono abbastanza diffusi.

BT.709 e BT.601[modifica | modifica wikitesto]

Durante la standardizzazione dei formati video ad alta definizione, l'ATSC scelse una formula differente per il modello YCbCr rispetto a quella usata per il video a definizione standard. Di conseguenza, quando si effettua una conversione di segnali tra i due formati, lo spazio colore va convertito.

Le formule sopra fanno riferimento alla raccomandazione BT.601. Per l'alta definizione, viene utilizzata una matrice lievemente diversa, dove WR e WB sono sostituiti dalla raccomandazione BT.709:


\begin{array}{rl}
W_R &= 0.2126 \\
W_B &= 0.0722 \\
\end{array}

Che da le matrici :


\begin{bmatrix} Y' \\ U \\ V \end{bmatrix}
=
\begin{bmatrix}
  0.2126  &  0.7152  &  0.0722 \\
 -0.09991 & -0.33609 &  0.436 \\
  0.615   & -0.55861 & -0.05639
\end{bmatrix}
\begin{bmatrix} R \\ G \\ B \end{bmatrix}

\begin{bmatrix} R \\ G \\ B \end{bmatrix}
=
\begin{bmatrix}
 1 &  0       &  1.28033 \\
 1 & -0.21482 & -0.38059 \\
 1 &  2.12798 &  0
\end{bmatrix}
\begin{bmatrix} Y' \\ U \\ V \end{bmatrix}

Approssimazioni numeriche[modifica | modifica wikitesto]

Prima dello sviluppo di processori SIMD a virgola mobile, la maggior parte delle conversioni digitali RGB->Y'UV utilizzava operazioni matematiche su interi, in particolare approssimazioni a numero a virgola fissa. Negli esempi che seguono, l'operatore "a \gg b" indica uno spostamento a destra di “a” di un numero di bit pari a “b”.

La rappresentazione tradizionale a 8 bit di un modello Y'UV con interi senza segno procede come segue:

1. Trasformazione base

\begin{bmatrix}Y' \\ U \\ V \end{bmatrix} =
\begin{bmatrix}
  66 & 129 & 25  \\
 -38 & -74 & 112 \\
 112 & -94 & -18
\end{bmatrix}
\begin{bmatrix} R \\ G \\ B \end{bmatrix}

2. Scalatura a 8 bit con arrotondamento


\begin{array}{rcl}
Y' &=& (Y' + 128) \gg 8\\
U  &=& (U  + 128) \gg 8\\
V  &=& (V  + 128) \gg 8
\end{array}

3. Scorrimento


\begin{array}{rcl}
Y' &=& Y' + 16\\
U  &=& U + 128\\
V  &=& V + 128
\end{array}

I valori Y' sono convenzionalmente spostati e scalati nella gamma [16, 235] (chiamati “valori di studio”) piuttosto che nella gamma completa [0, 255]. Si tratta di una pratica che deriva dagli standard MPEG, che spiega come mai 16 sia sommato al valore di Y' e perché il coefficiente Y' nella trasformazione di base venga sommato a 220 e non a 255. I valori U e V, che possono essere positivi o negativi, vengono sommati a 128 allo scopo di renderli sempre numeri positivi.[5]

Note[modifica | modifica wikitesto]

  1. ^ Engineering Guideline EG 28, "Annotated Glossary of Essential Terms for Electronic Production," SMPTE, 1993.
  2. ^ Maller, Joe. RGB e YUV Color, FXScript Reference
  3. ^ W. Wharton & D. Howorth, Principles of Television Reception, Pitman Publishing, 1971, pp 161-163
  4. ^ Charles Poynton, YUV e luminance considered harmful, 19 giugno 1999. URL consultato il 22 agosto 2008.
  5. ^ Keith Jack, Video Demystified, ISBN 1-878707-09-4.

Collegamenti esterni[modifica | modifica wikitesto]