YUV: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Redirect a Y'UV
 
Nessun oggetto della modifica
Riga 1:
[[Image:YUV UV plane.svg|thumb|300px|Esempio del piano colore U-V, il valore Y' è 0.5, rappresentato all'interno del gamut RGB.]]
#REDIRECT[[Y'UV]]
[[Image:Barn-yuv.png|right|thumb|150px|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==
 
I termini Y'UV, YUV, [[YCbCr]] e [[YPbPr]] non sempre sono chiari e il loro utilizzo da 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 (video)|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 [[correzione di gamma|gamma]] (da cui il simbolo “'”),<ref>Engineering Guideline EG 28, "Annotated Glossary of Essential Terms for Electronic Production," SMPTE, 1993.</ref> 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 [[video a componenti|componenti]], e la sua versione digitale [[YCbCr]] sono derivate dal modello Y'UV, e talvolta chiamate allo stesso modo. (C<sub>B</sub>/P<sub>B</sub> e C<sub>R</sub>/P<sub>R</sub> 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 [[YIQ_(video)|Y'IQ]] utilizzato nella televisione analogica [[NTSC]] è correlato allo Y'UV, seppure in una maniera più complessa.
 
==Cenni storici==
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.<ref>Maller, Joe. [http://joemaller.com/fcp/fxscript_yuv_color.shtml RGB e YUV Color], ''FXScript Reference''</ref> 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'.<ref>W. Wharton & D. Howorth, ''Principles of Television Reception'', Pitman Publishing, 1971, pp 161-163</ref>
 
==Sistemi luminanza/crominanza, cenni generali==
Il vantaggio principale dei sistemi luma/chroma come lo Y'UV e i suoi derivati [[YIQ_(video)|Y'IQ]] e [[YDbDr]], è la compatibilità con i sistemi in bianco e nero (in buona aprte 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 [[compressione lossy|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==
 
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.<ref>{{cite journal|url=http://www.poynton.com/papers/YUV_and_luminance_harmful.html
|accessdate=2008-08-22
|title=YUV e luminance considered harmful
|date=1999-06-19
|first=Charles
|last=Poynton
}}</ref>
 
Nei sistemi digitali, il modello Y'CbCr è il più comunemente utilizzato sia per al 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 [[DVB|trasmissione digitale]], utilizza di solito un modello Y'CrCb, ma viene spesso indicato come YUV.
 
==Conversione da/a RGB==
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:
 
:<math>\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}</math>
 
lo Y'UV è calcolato da RGB come segue:
 
:<math>\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}</math>
 
Da cui risultano ampiezze di segnali rispettivamente per Y', U e V di [0, 1], [-''U''<sub>Max</sub>, ''U''<sub>Max</sub>], e [-''V''<sub>Max</sub>, ''V''<sub>Max</sub>].
 
Il processo inverso converte da RGB a Y'UV:
 
:<math>\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}</math>
 
Sostituendo i valori alle costanti ed esprimendoli come matrice, si ha:
 
:<math>
\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}
</math>
 
:<math>
\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}
</math>
 
===Note===
I pesi usati per calcolare Y' (riga superiore della matrice) sono identici a quelli usati per lo spazio colore [[YIQ_(video)|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 generali nelle attrezzature analogiche. I sistemi digitali, come quelli utilizzati per l'[[HDTV|alta definizione]] e le telecamere digitali usano il modello Y'CbCr.
 
<gallery caption="Piani UV nella gamma [-1,1]">
File:YUV UV plane Y0 100 percent.png|valore Y' a 0
File:YUV UV plane Y0.5 100 percent.png|valore Y' a 0.5
File:YUV UV plane Y1 100 percent.png|valore Y' a 1
</gallery>
 
==Tipi di campionamento==
{{main|sottocampionamento della crominanza}}
 
Per ottenere un segnale digitale, le immagini Y'UV possono essere [[campionamento|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===
Durante la standardizzazione dei formati video ad alta definizione, l'[[ATSC]] scelse una formula differnte 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 [[BT.601|raccomandazione BT.601]]. Per l'[[alta definizione]], viene utilizzata una matrice lievemente diversa, dove W<sub>R</sub> e W<sub>B</sub> sono sostituiti dalla [[BT.709|raccomandazione BT.709]]:
 
:<math>
\begin{array}{rl}
W_R &= 0.2126 \\
W_B &= 0.0722 \\
\end{array}
</math>
 
Che da le matrici :
 
:<math>
\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}
</math>
 
:<math>
\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}
</math>
 
==Approssimazioni numeriche==
Prima dello sviluppo di processori [[SIMD]] a [[numero in virgola mobile|virgola mobile]], la maggior parte delle conversioni digitali RGB->Y'UV utilizzava operazioni matematiche su [[Numero_intero|interi]], in particolare approssimazioni a [[virgola fissa|numero a virgola fissa]]. Negli esempi che seguono, l'operatore "<math>a \gg b</math>" indica uno [[shift|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_(matematica)|segno]] procede come segue:
 
1. Trasformazione base
:<math>\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}
</math>
2. Scalatura a 8 bit con [[arrotondamento]]
:<math>
\begin{array}{rcl}
Y' &=& (Y' + 128) \gg 8\\
U &=& (U + 128) \gg 8\\
V &=& (V + 128) \gg 8
\end{array}
</math>
3. [[Shift|Scorrimento]]
:<math>
\begin{array}{rcl}
Y' &=& Y' + 16\\
U &=& U + 128\\
V &=& V + 128
\end{array}
</math>
 
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 coefficente 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.<ref>{{cite book
| title = Video Demystified
| author = Keith Jack
| isbn = 1-878707-09-4
}}</ref>
 
==Bibliografia==
{{Reflist}}
 
==Riferimenti esterni==
* [http://www.fourcc.org/yuv.php Explanation of many different formats in the Y'UV family]
* Poynton, Charles. [http://www.poynton.com/Poynton-video-eng.html Video engineering]
* Poynton, Charles, Digital Video and HD: Algorithms and Interfaces, Morgan Kaufmann 2012
* Kohn, Mike. [http://www.mikekohn.net/stuff/image_processing.php Y'UV422 to RGB using SSE/Assembly]
* [http://discoverybiz.net/enu0/faq/faq_YUV_YCbCr_YPbPr.html YUV, YCbCr, YPbPr colour spaces.]
* [http://www.equasys.de/colorformat.html Color formats] for image e video processing - [http://www.equasys.de/colorconversion.html Color conversion] between RGB, YUV, YCbCr e YPbPr.
* [http://www.erazer.org/how-to-convert-rgb-to-yuv420p How to convert RGB to YUV420P]
* [http://pixfc-sse.googlecode.com C library] of SSE-optimised color format conversions.
 
[[Category:Spazi di colore]]
 
[[ar:واي يو في]]
[[cs:YUV]]
[[de:YUV-Farbmodell]]
[[en:YUV]]
[[es:YUV]]
[[fr:YUV]]
[[nl:YUV]]
[[pl:YUV]]
[[ru:YUV]]
[[tr:YUV]]
[[vi:YUV]]
[[zh:YUV]]