10.09.2013 Views

Videocompressie - MediaNet Vlaanderen

Videocompressie - MediaNet Vlaanderen

Videocompressie - MediaNet Vlaanderen

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>MediaNet</strong> <strong>Vlaanderen</strong><br />

Van studio tot tablet<br />

Van (veel) fotonen tot<br />

This work is protected under copyright. Third party images used with permission and marked as such.<br />

Wednesday 28 November 2012<br />

(weinig) bits<br />

Niels.Laukens@vrt.be<br />

1


Wat is videocompressie?<br />

• Video<br />

Wednesday 28 November 2012<br />

• Wikipedia: Video ("ik zie", afgeleid van het Latijnse<br />

videre, "zien") is een techniek om bewegende<br />

beelden als een elektronisch signaal weer te geven.<br />

2


Wat is videocompressie?<br />

• Compressie<br />

• Wikipedia: samendrukken of kleiner maken<br />

• Datacompressie is het representeren van digitale<br />

gegevens met minder bits dan de oorspronkelijke<br />

•<br />

Wednesday 28 November 2012<br />

representatie<br />

Beeldcompressie is een bewerking waarbij men<br />

afbeeldingen in grootte beperkt om opslagcapaciteit<br />

te besparen en datatransmissie te versnellen<br />

3


Wednesday 28 November 2012<br />

Wat is videocompressie?<br />

• Wat wij zien digitaal voorstellen met zo weinig<br />

mogelijk bits<br />

• MAAR met zo hoog mogelijke kwaliteit<br />

• Zo “realistisch mogelijk”<br />

4


Wednesday 28 November 2012<br />

• Definities<br />

Inhoud<br />

• “Analoge” compressie-technieken<br />

• “Digitale” compressie-technieken<br />

5


Wednesday 28 November 2012<br />

• Oog is gevoelig voor EMstraling<br />

• λ= 750nm – 390nm (400 –<br />

790THz)<br />

• piek rond 555nm (540THz)<br />

• Spectral Power Density geeft<br />

volledige informatie<br />

• Nachtzicht heeft een<br />

verschoven gevoeligheid naar<br />

blauw<br />

Wat is licht?<br />

Spectrale gevoeligheid ifv golflengte [nm] van het oog in scoptisch (staafjes,<br />

groen) en fotoptisch (kegeltjes, wit) zicht.<br />

Source: Wikipedia; Copyright: public domain<br />

6


Wednesday 28 November 2012<br />

• 3 type kegeltjes: korte (blauwe),<br />

medium (groen), lang (rood)<br />

• Reductie van ∞ veel λ naar 3<br />

mogelijk?<br />

• Ja: CIE XYZ curves<br />

SPD → RGB<br />

Relatieve gevoeligheid van de drie type kegeltjes ifv de golflengte<br />

(c) Wikipedia - Pieter Kuiper & Koenb<br />

CIE XYZ curves<br />

(c) Wikipedia - Acdx<br />

7


Wednesday 28 November 2012<br />

• XYZ kleurenruimte is niet bruikbaar<br />

in praktijk:<br />

• Opname: Onmogelijk om optische<br />

filters te maken met XYZ-curves<br />

• Weergave: Scherm zou moeten<br />

negatief licht geven<br />

• Omzetten naar andere kleurruimte<br />

• Rec. 709 (HD), EBU Tech. 3213<br />

(SD), LogC (Alexa)<br />

• Eenvoudige lineaire transformatie<br />

(matrix)<br />

SPD → RGB<br />

xy-chromaticity diagramma met D65 wit, Rec709 driehoek en<br />

EBU Tech. 3213 groen. Kleuren buiten de driehoek kunnen niet<br />

worden weergegeven op een monitor.<br />

Aangepast van (c) Wikipedia - Sakurambo<br />

8


Wednesday 28 November 2012<br />

Bemonsteren &<br />

• Van ∞ veel mogelijkheden naar een<br />

eindig aantal<br />

Discretiseren<br />

• Ruimte:<br />

• Diepte: één mogelijkheid / 2D<br />

• Breedte x hoogte: 176x144,<br />

720x576, 1280x720, 1920x1080,<br />

7680x4320<br />

• Tijd:<br />

• Beperkte framerate: 12, 25, 50,<br />

60 Hz<br />

• Amplitude:<br />

• Beperkte bit-diepte: 8, 10, 16bit<br />

Een continu signaal (in deze illustratie 1D) kan worden benaderd<br />

door te bemonsteren (informatie van tussenliggende punten gaat<br />

verloren) en te discretiseren (de exacte amplitude gaat verloren)<br />

(c) public domain<br />

9


• Methode om bandbreedte te<br />

halveren<br />

• 1/2 lijnen weglaten<br />

• Even / oneven raster (field)<br />

• Display moet interlaced<br />

materiaal kunnen weergeven<br />

• CRT kan dat<br />

• Andere: de-interlacen<br />

Wednesday 28 November 2012<br />

Interlacing<br />

10


Naamgeving<br />

rasterformaten<br />

• Zootje, vooral fieldrate vs framerate “1080i60”=?<br />

• EBU-notatie<br />

• aantal beeldlijnen<br />

• interlaced of progressief<br />

• /<br />

• Frames per seconde<br />

• 576i/25,1080i/25, 720p/50, 1080p/50<br />

• 480i/29.97<br />

Wednesday 28 November 2012<br />

11


•<br />

Tussenresultaat<br />

Video is<br />

• Een opeenvolging van frames, F frames per seconde<br />

• Van X bij Y pixels<br />

• Elke pixel heeft 3 waarden: rood, groen & blauw, elk<br />

voorgesteld met B bits<br />

• (impliciete) specificatie welk rood, groen, blauw en<br />

wit<br />

• Bitrate: 3·B · X·Y · F bits / seconde<br />

• HD: 3·16 · 1280·720 · 50 = 2.212 Gbps<br />

Wednesday 28 November 2012<br />

12


Wednesday 28 November 2012<br />

Perceptueel uniforme<br />

• Contrastgevoeligheid is ~1%,<br />

onafhankelijk van de lichtintensiteit<br />

• Ons oog is logaritmisch gevoelig<br />

voor licht<br />

• Best de discretisatie ook nietlineair<br />

doen, maar “perceptueel<br />

uniform”<br />

• Aangeduid met * of ’ na het<br />

symbool: L*a*b*, R’G’B’, Y’CbCr<br />

• 1-100 @ 0.01 lineair: 10000 (14<br />

bits)<br />

• 1-100 @ +1% expo: 463 (9 bits)<br />

codering<br />

Twee licht-gradienten. De bovenste is een lineaire gradient van zwart<br />

naar wit; de onderste is een niet-lineaire gradient.<br />

Twee egale vlakken met evenveel ruis: links 10 licht ±5 ruis;<br />

rechts 90 licht ±5 ruis<br />

13


Perceptueel uniforme codering<br />

• Camera doet omzetting van<br />

lineair licht naar perceptueel<br />

uniform waarden<br />

• Monitor doet omzetting van<br />

perceptueel uniforme waarden<br />

naar lineair licht<br />

• Toevallig heeft een CRT een<br />

heel gelijkaardige spanning →<br />

licht curve!<br />

Wednesday 28 November 2012<br />

Gamma curves<br />

(c) Wikipedia – Jurohi<br />

14


Gevoeligheid aan kleur en<br />

Wednesday 28 November 2012<br />

• Het oog is gevoeliger aan lichtdonker<br />

contrasten dan aan<br />

kleur-kleur contrasten<br />

• Zowel spatiaal<br />

• Als temporaal (15Hz)<br />

licht<br />

De rechter helft toont een zwart-wit ladder; de<br />

linker helft een rood-groen ladder. De zwart-wit<br />

ladder is nog duidelijk te zien; de rood-groen<br />

ladder lijkt geel.<br />

15


R’G’B’ → Y’CbCr<br />

• R’G’B’ omvormen naar Luma (bevat geen kleur-informatie)<br />

en Chroma (twee kleur parameters)<br />

• Historisch nodig voor compatibiliteit kleur & ZWtelevisie<br />

• Y’CbCr in de digitale wereld<br />

• Y’PbPr in de analoge wereld<br />

• Y’UV en Y’IQ zijn geschaalde versies gebruikt in PAL en<br />

NTSC<br />

• De parameters voor de omvorming moeten gekend zijn:<br />

• Rec. 601 (SD) of Rec. 709 (HD)<br />

Wednesday 28 November 2012<br />

16


Wednesday 28 November 2012<br />

Chroma subsampling<br />

• Het kleurensignaal een lagere<br />

resolutie geven dan het<br />

lichtsignaal<br />

• Analoge wereld: enkel<br />

horizontaal /2<br />

• Digitale wereld: kan ook<br />

vertikaal en zelf temporeel<br />

• Naamgeving is verwarrend<br />

Y’<br />

Y’<br />

Y’<br />

Y’<br />

Cb<br />

Cb<br />

Cb<br />

Cb<br />

Cr<br />

Cr<br />

Cr<br />

Cr<br />

4:4:4<br />

4:2:2<br />

4:1:1<br />

4:2:0<br />

17


•<br />

Tussenresultaat<br />

Video is<br />

• Een opeenvolging van frames, F frames per seconde<br />

• Van X bij Y pixels luma, X/Sh bij Y/Sv pixels chroma<br />

• Elke pixel heeft 3 waarden (mogelijk gedeeld met naburige<br />

pixels): luma & twee chroma’s, elk voorgesteld met B niet<br />

lineaire bits<br />

• (impliciete) specificatie van de gebruikte RGBW kleuren en de<br />

matrix voor Y’CbCr-omzetting<br />

• Bitrate: (1 + 1/(SvSh) + 1/(SvSh))·B · X·Y · F bits / seconde<br />

• HD-SDI: (1+.5+.5)·10 · 1280·720 · 50 = 0.9126 Gbps<br />

(+HBI+VBI)<br />

Wednesday 28 November 2012<br />

18


Wednesday 28 November 2012<br />

• Definities<br />

Inhoud<br />

• “Analoge” compressie-technieken<br />

• “Digitale” compressie-technieken<br />

19


Contrastgevoeligheid oog<br />

• “Naburige pixels zijn gelijkaardig”<br />

• De contrastgevoeligheid van ons oog is afhankelijk van de spatiale<br />

frequentie<br />

• Piek bij 5 à 10 c/º (0.5%)<br />

• Cut-off rond 50 à 60 c/º<br />

• Lage en vooral hoge spatiale frequenties kunnen minder nauwkeurig<br />

worden opgeslaan<br />

Wednesday 28 November 2012<br />

Sinusoidale contrastgevoeligheid: van 0c/lp tot 1c/lp (horizontaal) aan 0.3% tot 100%<br />

contrast (verticaal)<br />

20


Wednesday 28 November 2012<br />

Achterhalen spatiale<br />

• Fourier transformatie en familie<br />

• Ontbindt een signaal in een<br />

som van (co)sinussen<br />

• Vaak Discrete Cosinus<br />

Transformatie (DCT) gebruikt<br />

frequenties<br />

De ontbinding van een blokgolf in een som van sinussen. Deze<br />

figuur toont de som van 1, 2, 3 en 4 sinussen.<br />

(c) Public domain<br />

21


• Complexe formule<br />

• Vaak beperkt tot kleine<br />

blokken: 4x4 tot 64x64 pixels<br />

• DC coëfficiënt + AC<br />

coëfficiënten<br />

• Interlaced materiaal: op field of<br />

frame doen?<br />

Wednesday 28 November 2012<br />

2D DCT<br />

De DCT-patronen voor een 8x8 pixel blok<br />

(c) Public domain<br />

22


Wednesday 28 November 2012<br />

Quantization Matrix &<br />

• Minder “cijfers na de komma”<br />

voor HF<br />

• Elke coëfficiënt delen door<br />

getal,<br />

• dan afronden, dit bepaalt de<br />

compressie<br />

• Enkel hier gaat kwaliteit<br />

verloren!<br />

Parameter<br />

6 10 13 16 18 23 25 27<br />

10 11 16 18 23 25 27 29<br />

13 16 18 23 25 27 29 31<br />

16 18 23 25 27 29 31 33<br />

18 23 25 27 29 31 33 36<br />

23 25 27 29 31 33 36 38<br />

25 27 29 31 33 36 38 40<br />

27 29 31 33 36 38 40 42<br />

De quantisatie-matrix zoals gebruikt in h.264<br />

23


Wednesday 28 November 2012<br />

Voorbeeld h.264 Intra<br />

frame<br />

1 20 30 40 50<br />

24


Tussenresultaat<br />

• (M)JPEG<br />

• DCT 8x8 blokken (na chroma subsampling, meestal 4:2:0)<br />

• D10 / IMX / SMPTE 356M<br />

• DCT 8x8 blokken (na subsampling)<br />

• 4:2:2 chroma subsampling<br />

• DV25<br />

• DCT 8x8 blokken (na subsampling)<br />

• 4:2:0 subsampling; 4:1:1 voor 480i/29.97<br />

Wednesday 28 November 2012<br />

25


Inter frame codering<br />

• “Opeenvolgende frames zijn gelijkaardig”<br />

• Stukken van vorige frame(s) herbruiken, enkel verschillen<br />

doorsturen<br />

• Interlaced materiaal: Frame of field?<br />

• Frames zijn niet meer onafhankelijk<br />

• Group Of Pictures (GOP):<br />

• Eerste frame is intra-coded (onafhankelijk)<br />

• Volgende frames zijn inter-coded<br />

• Meestal eindige lengte: inzappen, error-containment<br />

Wednesday 28 November 2012<br />

26


Motion Vectors<br />

• SKIP blok: Behoud de pixels uit het vorige beeld<br />

• MV: Neem blok uit vorige beeld dat 2 pixels hoger<br />

en 4 pixels meer naar links stond<br />

• MPEG1 & 2: enkel vorige frame<br />

• h.264: tot 16 frames terug, ¼ pixel nauwkeurigheid<br />

• Residu: En doe er nog deze aanpassingen aan<br />

• Standaard intra-frame compressie<br />

Wednesday 28 November 2012<br />

27


Wednesday 28 November 2012<br />

Demo MVs<br />

• Decodeer-fouten blijven de hele GOP zichtbaar<br />

• Wat als de I-frame vervangen wordt door een<br />

andere I-frame?<br />

28


B-frames<br />

• Combinatie maken van twee frames<br />

• Vaak een “vorig” en een “volgend” frame<br />

• Twee Motion vectoren<br />

• Met gewichten (in h.264)<br />

• Decoding volgorde vs Display volgorde<br />

Wednesday 28 November 2012<br />

29


Wednesday 28 November 2012<br />

Entropie-coding<br />

• “ZIP-en” van het resultaat<br />

• Huffman coding<br />

• Vaak voorkomende symbolen korte codes geven<br />

• Context Adaptive Variable Length Coding (CAVLC)<br />

• symbool-code mapping wordt dynamisch aangepast<br />

• Context Adaptive Binary Arithmetic Coding<br />

(CABAC)<br />

30


•<br />

•<br />

•<br />

Levels & profiles<br />

Hele hoop mogelijkheden om video te comprimeren<br />

•<br />

•<br />

Wednesday 28 November 2012<br />

Profiles geven aan welke tools een decoder kan<br />

gebruiken<br />

e.g. h.264 baseline profile: geen CABAC, geen B-<br />

frames, …<br />

Levels geven aan in welke mate een decoder die tools<br />

kan gebruiken<br />

e.g. h264 Level 1: frame size


Wednesday 28 November 2012<br />

• Charles Poynton<br />

Digital Video and HDTV<br />

• Ian Richardson<br />

H.264 and MPEG-4 video<br />

compression<br />

Referenties<br />

32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!