Search this site
Embedded Files
Sfc sinds 2008
  • Home
  • Sfc -INFO
  • CLUBAVOND
  • INSTRUCTIEFILMS
    • Marc Vercauteren - LESFILMJES
  • iPhone - GSM
  • YouTube filmpjes
  • BESTUUR
  • ONDERTITELS
Sfc sinds 2008
  • Home
  • Sfc -INFO
  • CLUBAVOND
  • INSTRUCTIEFILMS
    • Marc Vercauteren - LESFILMJES
  • iPhone - GSM
  • YouTube filmpjes
  • BESTUUR
  • ONDERTITELS
  • More
    • Home
    • Sfc -INFO
    • CLUBAVOND
    • INSTRUCTIEFILMS
      • Marc Vercauteren - LESFILMJES
    • iPhone - GSM
    • YouTube filmpjes
    • BESTUUR
    • ONDERTITELS
Terug naar INSTRUCTIEFILMS CLUBLEDEN

DATA COMPRESSIE/CODERING

MPEG videocompressie

Zonder de MPEG video compressiefactor van 140 zouden er geen

YouTube en Netflix video's en DVD's bestaan. In dit artikel beschrijven wij

de wonderbaarlijke technieken die men heeft bedacht om die grote

datacompressie bij het digitaliseren van een film te realiseren: van 160

Mbit/s naar 1,14 Mbit/s.


Auteur: Jos Verstraten, Landgraaf, Nederland

Email: josverstraten@live.nl

Publicatiedatum: 12-10-2019


Een historische inleiding


Digitaal verzenden van data heeft beperkingen

Toen de elektronica industrie in het begin van de jaren tachtig begon te filosoferen over

digitale communicatie werd al snel duidelijk dat het nooit zou lukken foto's, video en audio

ongecomprimeerd te versturen. Immers, een gedigitaliseerde foto met een resolutie van

1.024 bij 1.024 pixels en met een kleurendiepte van 24 bit, een minimale vereiste voor

professioneel kleurendrukwerk, neemt ongeveer 3 MB aan opslagruimte in beslag. Nu waren

er wel een heleboel compressietechnieken ontwikkeld, maar de internationale industrie was

er gelukkig van overtuigd dat er één wereldstandaard voor de compressie van digitale audio

en video moest worden afgesproken. Die standaard zou flexibel moeten zijn, zodat een en

dezelfde hardware door software geprogrammeerd kon worden voor verschillende soorten

compressie algoritmen. Op deze manier zou de internationale standaard zonder grote

problemen aangepast kunnen worden aan verschillende toepassingen, die ieder hun eigen

eisen stelden.

JPEG

Op initiatief van twee internationale normeringsinstituten, de ISO (International

Standardisation Organisation) en de IEC (International Electrotechnical Committee) werd in

1988 een internationale werkgroep opgericht met als naam 'Joint Photographic Expert

Group'. Deze werkgroep ging door het leven onder de naam 'JPEG' en was samengesteld uit

internationaal toonaangevende experts op het gebied van compressie technieken en digitale

beeldverwerking. De werkgroep ontwikkelde op korte termijn een beeldcompressie techniek,

die geschikt was voor een breed scala van toepassingen met verschillende kwaliteiten,

resoluties, compressieniveaus en kleurmodellen. Deze techniek kreeg ook de naam 'JPEG'

en werd beschreven in de ISO/IEC-norm 10.918.

JPEG werd ontwikkeld voor de compressie van statische beelden zoals krantenfoto's.

Daarvoor wordt het algoritme nu nog steeds gebruikt. Vrijwel alle foto's en illustraties op

Internet staan in .JPG-formaat, een rechtstreekse afgeleide van de JPEG-standaard.

Natuurlijk dacht men er wel aan deze techniek ook toe te passen voor het comprimeren van

dynamische beelden, dus video. In de begintijd van deze techniek waren de noodzakelijke

processoren echter niet snel genoeg om beelden in real time te comprimeren en nadien weer

te decomprimeren.

Lossy en lossless JPEG

Alvorens de MPEG compressietechniek te bespreken moet er nog een opmerking over de

JPEG-standaard worden gemaakt. De standaard beschrijft twee compressieschema's:

- Lossy.


- Lossless.

Bij de lossy techniek zal het beeld dat wordt teruggewonnen uit de compressiegegevens niet

identiek zijn aan het originele beeld. Er worden dus bij de compressie gegevens verwijderd.

Nu valt dat nauwelijks op, omdat het menselijk oog een vrij ongevoelig instrument is. Zo is het

oog zeer ongevoelig voor kleine nuances in kleur. Van deze wetenschap wordt bij de lossy

techniek gebruik gemaakt om zeer hoge datareducties te verkrijgen.


Een foto als lossy JPG met diverse compressiefactoren. (© 2004 BenTheWikiMan)

MPEG

De ontwikkeling van beeldopslag op compact disks noopte de ontwikkelaars om ook voor

video een compressie algoritme te ontwikkelen. De uitdaging was groot. De originele CD had

immers een maximale datasnelheid van slechts 1,411 Mbit/s. Voor het aangaan van deze

uitdaging werd een nieuwe internationale werkgroep opgericht, die deze keer de naam

'Moving Picture Expert Group' kreeg, afgekort tot MPEG.

Natuurlijk is het duidelijk dat deze werkgroep voort borduurde op de JPEG-technologie. Het

grote verschil tussen JPEG en MPEG is dat JPEG beeldje voor beeldje comprimeert, zonder

rekening te houden met de samenstelling van een vorig en/of volgend beeldje. MPEG doet

dat wél en bereikt een zeer grote datareductie door alle gegevens die hetzelfde zijn in

opeenvolgende beeldjes simpelweg te negeren, of beter uitgedrukt, maar één keer te

comprimeren en te verzenden in een zogenoemd referentiebeeld. Nadien worden alleen de

verschillen tussen opeenvolgende beeldjes opgezocht en verzonden in verschilbeeldjes.

Deze techniek noemt men 'motion compensation' en het zal wel duidelijk zijn dat hierdoor een

immense datareductie wordt verkregen. Nadat de originele videobeeldjes op deze manier zijn

omgezet in weinig (omvangrijke) referentiebeeldjes en veel (minder omvangrijke)

verschilbeeldjes worden op sommige beeldjes de JPEG-algoritmen losgelaten.

Hierbij heeft men gekozen voor de lossy techniek, omdat het kwaliteitsverlies bij bewegende

beelden nog veel minder opvalt dan bij statische beelden. Door een combinatie van de lossy

JPEG-techniek en de motion compensation MPEG-techniek en enige compromissen wat

betreft resolutie en kleursamenstelling van het beeld is men in staat video die bestaat uit 25

beeldjes per seconde te verzenden met een datastroom van maximaal 1,2 Mbit/s.

Diverse MPEG compressie algoritmen

MPEG is een universele compressiestandaard voor video en audio, waarvan in de loop der

technische evolutie diverse versies zijn verschenen, met steeds meer mogelijkheden.

MPEG-1

Versie 1 uit 1991 is de initiële compressiestandaard voor video en audio, opgesteld door


de 'Moving Picture Experts Group'. Later werd deze gebruikt als standaard voor video-

CD. Het formaat beschrijft ook het populaire Layer 3 (MP3) audiocompressie formaat


dat nu nog steeds overal wordt gebruikt voor het gecomprimeerd verzenden van

audiostreams.

MPEG-2

Het MPEG-2 formaat is voornamelijk ontwikkeld voor het transporteren van digitale

kwalitatief hoogwaardige video en audio voor TV. Het wordt gebruikt voor digitale


televisie via conventionele aardse antennes (DVB-T), uitzending via de satelliet (DVB-

S) en voor digitale kabeltelevisie (DVB-C). Als u een abonnement hebt op kabel-TV van


Ziggo, dan komen de videostreams via MPEG-2 in uw meterkast. Het formaat

ondersteunt ook diverse surround sound systemen en is neerwaarts compatibel met

MPEG-1.

MPEG-4

Werd geïntroduceerd eind 1998, de standaard werd vastgelegd door de 'Moving Picture


Experts Group' als ISO/IEC JTC1/SC29/WG11 onder de formele standaard ISO/IEC

14496. MPEG-4 wordt gebruikt voor compressie van video voor streaming

toepassingen. Het op dit moment zeer bekende MP4-formaat, waarmee u digitale video

op al uw beeldschermen kunt bekijken is een afgeleide van deze MPEG-standaard.


Het MPEG-logo dat gereserveerd is voor apparatuur dat MPEG-streams


kan verwerken. (© worldvectorlogo)


De compressie technologieën bij MPEG-1


De algemene structuur van MPEG-1

In dit artikel gaan wij de video compressie technieken bespreken die bij MPEG-1 worden

toegepast. Deze technieken zult u ook onder de een of andere aangepaste vorm terugvinden

bij alle overige MPEG-formaten.

Bij het comprimeren van filmmateriaal moet de compressietechniek rekening houden met drie

zaken:

- De compressie van de video-informatie.

- De compressie van de audio-informatie.

- De synchronisatie tussen video en audio.

Dit laatste is een belangrijk punt, omdat de gegevens naar een seriële code worden omgezet

is die synchronisatie niet vanzelf sprekend. Toch is het de bedoeling dat de herwonnen

gegevens een lipsynchrone film opleveren!

Het algemene schema van een codering volgens MPEG-1 is samengevat in de onderstaande

figuur. Er zijn twee coders, een voor de video en een voor de audio, een systeemklok en een

multiplexer die zorgt dat de gecomprimeerde video- en audiogegegevens op de juiste manier

tot een seriële datastroom worden gecombineerd.


Het algemene schema van een MPEG-1 codering. (© 2019 Jos Verstraten)


MPEG pack's

De gegevens worden verpakt in blokken die 'pack's' worden genoemd. In één pack kunnen

video- en audio-gegevens worden gemengd. Ieder pack wordt voorafgegaan door een

zogenaamde 'header', waarin de voor het decodeersysteem noodzakelijke gegevens over het

soort gegevens in het pack en de toegepaste compressie algoritmen worden verwerkt. Een

pack bestaat uit verschillende zogenaamde 'packet's', die weer voorafgegaan worden door

een subheader en die alleen video- of audiogegevens bevatten. Dat algemene

verzendschema is samengevat in de onderstaande figuur en wordt in detail besproken in het

vervolg van dit artikel.

In de packet headers worden 'Presentation Time Stamps' opgenomen als tijdreferentie. Deze

geven de waarde van de systeemclock weer op het moment dat de gegevens aan de

coderingsschakeling worden aangeboden. In de pack header wordt bovendien een 'System

Clock Reference' opgenomen. Aan de hand van deze gegevens kan de decodeerelektronica

de clock herwinnen en kan ervoor worden gezorgd dat de video- en audiogegevens weer

volledig worden gesynchroniseerd.


De structuur van de gemultiplexte video- en audiogegevens in de seriële datastroom.


(© 2019 Jos Verstraten)


Open standaard

Zoals reeds geschreven heeft MPEG-1 een open structuur. De coderings- en

decoderingshardware is in staat verschillende soorten compressie schema's en algoritmen

door te voeren. De gebruikte algoritmen worden gecodeerd en in de 'headers' verzonden. Op

deze manier is het mogelijk dat een met MPEG-1 gecomprimeerde film van leverancier X na

decodering een betere kwaliteit levert dan dezelfde film, gecodeerd door leverancier Y. De

kwaliteit van de herwonnen gegevens wordt immers in hoge mate bepaald door de

compressie algoritmen die worden gebruikt. Die open architectuur maakt het bovendien ook

mogelijk dat bepaalde leveranciers over gaan tot het versleutelen van de gegevens. Aan de

decoderzijde kan men dan alleen via een gehuurde of gekochte softwaresleutel de gegevens

tot een te bekijken beeld herleiden.


De MPEG-1 codering van video


Datacompressie met een factor 140

De zware taak waar de bedenkers van het systeem voor gesteld stonden was het reduceren

van de datastroom met een factor van meer dan 140. De MPEG-1 norm schrijft immers een

maximale gegevensstroom van 1,411 Mbit/s voor, zodat de gegevens op een CD passen.

Zoals bekend bestaat een traditionele film uit een filmstrook die tienduizenden beeldjes bevat.

Die beeldjes worden met een snelheid van 24 beeldjes per seconde op het scherm

geprojecteerd.

Deze analoge filmbeeldjes worden een na een gescand met een resolutie van 480 lijnen die

ieder 720 pixels bevatten. Dit is in ieder geval de Amerikaanse norm. Per pixel worden geen

3 x 8, maar slechts 16 bit gebruikt (zie later). Per beeld levert dat ongeveer 5,5 Mbit aan

gegevens op. Als men 25 beelden per seconde wil versturen, de Europese TV-standaard,

heeft men daarvoor ongeveer 138 Mbit nodig! Natuurlijk moet men nog allerlei coderings en


compressie gegevens meesturen, zodat één seconde video een datastroom van ongeveer

160 Mbit oplevert. Een CD kan echter (afgerond naar een veilige ondermarge en rekening

houdende met ruimte voor de audio) slechts ongeveer 1,15 Mbit/s verwerken. De gegevens

moeten dus met een factor 140 worden gecomprimeerd! Het zal duidelijk zijn dat een

dergelijke zware compressie niet in één stap is te realiseren.

Datareductie in dertien bewerkingen

De codering van de videogegevens is erg ingewikkeld en doorloopt een heleboel stapjes. In

de meeste bewerkingen wordt iets bijgedragen aan de totale compressie, zodat uiteindelijk

toch de noodzakelijke totale compressiefactor wordt verkregen. In het kort komt de MPEG

verwerking van een analoog filmsignaal naar de uiteindelijke gecomprimeerde datastroom

neer op de volgende procedure:

Stap 1

Scannen van de filmbeelden met 3 x 8 bit volgens het RGB-kleurenschema en met een

resolutie van 720 bij 480 pixels.

Stap 2

Intelligent reduceren van de horizontale en verticale resolutie met een factor twee

(compressieslag 1).

Stap 3

Omzetten van de RGB-gegevens naar een YUV-schema en intelligente reductie van de

chrominantie gegevens (compressieslag 2).

Stap 4

Indelen van het beeld in 'macroblokken' van 8 bij 8 pixels.

Stap 5

Opslaan van een groot aantal macroblokken van opeenvolgende beeldjes in een

geheugen

Stap 6

Toepassen van 'motion compensation' door middel van 'motion vector' en 'prediction

error'.

Stap 7

Verdelen van de videostroom in zogenoemde I-, P- en B-frames en toepassen van

'forward prediction' en 'bidirectional prediction'.

Stap 8

Berekenen van 'motion vectors' (compressieslag 3).

Stap 9

Toepassen op de macroblokken van de I-beelden van 'DCT', afkorting van 'discrete

cosinus transformatie'.

Stap 10

De zuiver wiskundige gegevens die hieruit voortkomen onderwerpen aan een

'psychovisuele quantiseringsmatrix', waardoor de lossy compressie van JPEG ontstaat

(compressieslag 4).

Stap 11

De JPEG gecomprimeerde gegevens van de I-frames weer combineren met de

gegevens van de P- en B-frames en deze in een bepaalde volgorde samenvoegen tot

één datastroom.

Stap 12

De seriële gegevens onderwerpen aan een 'run length codering' (compressieslag 5).

Stap 13

De omgezette gegevens comprimeren door middel van een 'entropie codering' op basis

van het Huffmann algoritme (compressieslag 6).


Stap 1: het scannen

Het bronmateriaal zal in de meeste gevallen bestaan uit een ouderwetse analoge film. Er

bestaan al decennia lang filmscanners die beeldje na beeldje omzetten in een digitaal beeld.

Deze scanners werken met een resolutie van 720 bij 576 bij PAL-televisie en met 720 bij 480

bij het Amerikaanse NTSC-systeem. Dat wil zeggen dat ieder filmbeeld, zie de onderstaande


figuur, in 576 lijnen wordt afgetast en dat er in iedere lijn 720 beeldmonstertjes worden

genomen. Uit de aard van hun werking leveren scanners een 'RGB-schema' af. Ieder

monster wordt ontleed in de drie basiskleuren rood, groen en blauw. Afhankelijk van de

kleurverzadiging en de intensiteit wordt aan iedere basiskleur een code tussen '000' en '255'

toegekend. Dat levert in totaal een kleurenspectrum van meer dan 16 miljoen kleuren op (true

color). Op deze manier wordt het beeld omgezet in drie 'planes', een voor rood, een voor

groen en een voor blauw.


Het omzetten van één frame van de analoge film in drie RGB-planes.


(© 2019 Jos Verstraten)


Stap 2: het reduceren van de resolutie

Het zou erg fraai zijn als de beelden verder verwerkt konden worden in die hoge resolutie van

720 bij 576. Dat kan helaas niet, de resulterende datastroom zou te groot zijn. Vandaar dat de

resolutie wordt gereduceerd tot 352 bij 288. Dat gebeurt niet door eenvoudigweg ieder

tweede pixel te laten wegvallen. In horizontale richting wordt een intelligent reductieschema

toegepast, waarbij de elektronica gemiddelde kleurwaarden berekent van de pixels die

behouden blijven en de pixels die worden verwijderd. In verticale richting kan een identiek

proces worden toegepast, maar het is ook toelaatbaar dat simpelweg lijnen worden

geschrapt.

Stap 3: RGB naar YUV vertaling

Een kleurenbeeld kan niet alleen volledig worden beschreven door de R-, G- en B- waarden.

Het is ook mogelijk een beeld te definiëren door de luminantie Y en de chrominantie C. De

eerste grootheid geeft informatie over de helderheid van het beeld, de tweede bepaalt de

kleursamenstelling. Op een monochrome monitor wordt alleen de Y-waarde gebruikt. Om de

kleur te omschrijven moet men wel twee grootheden voor de chrominantie definiëren. Deze

worden Cu en Cv genoemd. Het grote voordeel van een definiëring volgens het YUV-schema

is dat luminantie en chrominantie elkaar niet beïnvloeden en volledig afzonderlijk verwerkt

kunnen worden. Het menselijke oog blijkt heel gevoelig voor variaties in de luminantie, maar

veel minder gevoelig voor variaties in de chrominantie. Vandaar dat men kan volstaan met


een kleinere resolutie bij het definiëren van de chrominantie. De verbanden tussen de R-, G-

en B- waarden en de Y-, Cu- en Cv-waarden volgt uit de onderstaande transformatieformules:


Y = [0,299 ● R] + [0,587 ● G] + [0,114 ● B]

Cu = -[0,169 ● R] - [0,3316 ● G] + [0,5 ● B]

Cv = [0,5 ● R] - [0,4186 ● G] - [0,08l3 ● B]

Voor het omrekenen moet de processor van de coder dus slechts eenvoudige rekenkundige

bewerkingen op de R-, G- en B-waarden uitvoeren, een fluitje van een cent. Er ontstaan nu

drie nieuwe 'planes', waarbij de plane van Y nog steeds een resolutie van 352 bij 288 heeft.

Omdat de informatie in de chrominantie niet zo belangrijk is, wordt de resolutie daarvan


dramatisch verminderd. Er wordt een gemiddelde waarde berekent per vier pixels, volgens

het schema van de onderstaande figuur. De kruisjes stellen de pixels van het gedigitaliseerde

beeld voor. Van ieder pixel wordt eerst de luminantiewaarde berekend. Nadien worden de

twee chrominatiewaarden van vier naast elkaar gelegen pixels berekend en wordt er de

gemiddelde waarde van bepaald. Deze gemiddelde waarde wordt voorgesteld door de

cirkeltjes. De planes van de twee C-waarden zijn door de reductie nu nog slechts 176 bij 144

pixels groot, alweer een aanzienlijke reductie waar de kwaliteit van het beeld nauwelijks door

wordt beïnvloed!


Het reduceren van de chrominantie gegevens. (© 2019 Jos Verstraten)


Stap 4: het maken van macroblokken

Voor de daaropvolgende ingewikkelde wiskundige bewerkingen zijn de volledige planes veel

te groot. Deze worden ingedeeld in zogenaamde 'macroblokken' die slechts 8 bij 8 pixels

groot zijn. De volledige definitie van een stukje beeld van 16 bij 16 pixels, op een standaard

monitor goed voor ongeveer 120 vierkante millimeter beeldoppervlak, bestaat uit vier

macroblokken voor de luminantie en twee macroblokken voor de chrominantie.

Stap 5: macroblokken opslaan in een geheugen

Vervolgens worden een heleboel van dergelijke macroblokken in een geheugen opgeslagen.

Niet alleen alle macroblokken van het beeld dat verwerkt wordt, maar ook deze van enige

voorgaande en volgende beelden.

Stap 6: motion compensation

Deze compressieslag vormt het hart van de MPEG technologie. Het filmbeeld bestaat uit 25

beeldjes per seconde. Nu zal het duidelijk zijn dat er in opeenvolgende filmbeeldjes veel

identieke informatie zit. Stel als voorbeeld het filmfragment dat in de onderstaande figuur is

voorgesteld. Een vrachtwagen rijdt van links onder naar rechts boven door het beeld. De


achtergrond, bomen langs de weg, blijft hetzelfde. Het is dan overbodig om deze video-

informatie in ieder beeld te gaan coderen door middel van de YUV-waarden. Dat kan in één


beeld, in de volgende beelden wordt op de een of andere manier duidelijk gemaakt dat de

informatie in de betreffende macroblokken ongewijzigd is gebleven. Ook de macroblokken die

de vrachtwagen voorstellen veranderen inhoudelijk niet. Het enige verschil is dat de

macroblokken in het beeld een andere positie innemen.

Het rechter beeld kan dus voor een groot deel samengesteld worden uit de macroblokken

van het linker beeld. Natuurlijk zijn er ook elementen in het beeld die nieuw zijn. Daar waar in

het linker beeld de vrachtwagen stond in nu een stuk weg plus omgeving te zien. Deze

macroblokken bevatten dus beeldspecifieke informatie en moeten wél gecodeerd worden.

Sfc - Schaffense filmclub sinds 2008

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse