Videosignalen består av en sekvens av bilder, typiskt 24, 25 eller 30 bilder i sekunden.

Relevanta dokument
Föreläsning 7: Bild- och videokodning

4/27/12. Fönstring i MDCT. Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen

Linjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare

Föreläsning 10: Ljudkodning ( Audio Coding )

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

BILDKODNING TEORI. Källkodning. Analogt - och samplat

Ordbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning)

Exempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts.

Föreläsning 1: Bild- och ljudkodning

Transformkodning Idé: 1. Tag datasekvensen och dela in den i block av storlek N (eller N N om signalen är tvνadimensionell). Transformera dessa block

Psykoakustik. Ljudtrycksnivå. Hörselns omfång. Hörnivå(loudness) Människans hörsel är ganska väl studerad och det finns bra modeller för den.

SMS047 Mediakodning. Introduktion. Frank Sjöberg. Introduktion. Introduktion

HELA KEDJAN. Videoteknik. från kamera till bildskärm. Nils Wennerstrand P. KTH NADA Medieteknik. Gunnar Kihlander, Anders Nyberg

Analys/syntes-kodning

Psykoakustik. Ljudtrycksnivå. Hörselns omfång. Hörnivå (loudness) Människans hörsel är ganska väl studerad och det finns bra modeller för den.

HELA KEDJAN. Videoteknik. från kamera till bildskärm. Nils Wennerstrand P. KTH NADA Medieteknik. Gunnar Kihlander, Anders Nyberg

MPEG-4-kompatibel settop-box för IP-nät baserad på öppna standarder

Redaktion. Innehåll. Combitech Systems AB. Ledare...3. Utveckling mot effektivare bildöverföring...4. Bild- och videokodning...6

Adaptiv aritmetisk kodning

Människans hörsel är ganska väl studerad och det finns bra modeller för den.

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Alla presentationstekniker har olika behov; bandbredd, lagring samt bildkvalitet

FLAC (Free Lossless Audio Coding)

Shannon-Fano-Elias-kodning

QosmioEngine För avancerad video

Synsinnet. Komprimeringsexempel. Förlustkomprimering - Bakgrund. Common Image Formats. Image Coding GIF. GIF (Graphis Interchange Format)

I. Talkodning. Kodning av tal Kodning av musik MPEG-4 Audio toolbox. Talkodning Historik. Talgenerering. Talsignalen - vokaler

Kodning av tal Kodning av musik MPEG-4 Audio toolbox

Kodning av ansiktstextur med oberoende komponenter

Paper or screen. Systemlagret. Vision technology. Audio technology. Current loudspeakers and sound equipment is good enough?

Torstens Digitalbildguide

Synsinnet. Komprimeringsexempel. Förlustkomprimering - Bakgrund. Image Coding. Common Image Formats GIF

DT1130 Spektrala transformer Tentamen

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer. Khalid Sayood, Introduction to Data Compression

TSBK35 Kompression av ljud och bild

Vinjetter TDDC91 Datastrukturer och algoritmer

Kvalitetsaspekter på videostreaming till mobiltelefoner E R I K O T T E R B E R G

Videosignalen. Blockdiagram över AD omvandling (analogt till digitalt)

Distansutbildning. av Anders Andersson. Västanvik Resurs- och Utvecklingscenter

Varför måste man kunna detta? Videoformat. Komprimering. Komprimeringsprinciper. Samplingsprinciper. Begrepp

Källkodning. Egenskaper hos koder. Några exempel

Laboration 4: Digitala bilder

Föreläsning 12. Modellbaserad ljudkodning. Modellbaserad bildkodning. Utblickar Mediakommunikation över Internet Multi-view video

Fysikalisk mätning av vägmarkeringars area

Bildförbättring i spatial domänen (kap. 3) Bildförbättring (enhancement) Spatial domän. Operatorer. Tröskling (threshold) Gråskale-transformationer

Vad är "media. Vad brukar vi mena med media?

Institutionen för systemteknik Department of Electrical Engineering

Spektrala Transformer

Bilder... Dagens föreläsning. Objektgrafik. Objektgrafik. TNMK30, 2010 Föreläsning

QosmioEngine: För avancerad video

Videokomprimering och distribution

3.0. Tips och Trix Sida 1 av 18

TBSK 03 Teknik för Advancerade Datorspel

INT 3 F4. Bildkomprimering. Run Length Encoding. Medieteknik Del2. Komprimering, ljud och rörliga bilder. Olika algoritmer för bildkomprimering:

Kodning med distorsion

'LJLWDODELOGHUR KGLJLWDOELOGPDQLSXOHULQJ

Spektrala Transformer

TSBK04 Datakompression. Övningsuppgifter

3D så långt ögat ögonen når

EXEMPEL 1: ARTVARIATION FÖRELÄSNING 1. EEG frekvensanalys EXEMPEL 2: EEG

4 Paket- och kretskopplade nät

Alla presentationstekniker har olika behov; bandbredd, lagring samt bildkvalitet

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

-med fokus på robusthet

Konvertering. (Conversion chapter 3, Watkinson) Sebastian Olsson Anders Stenberg Mattias Stridsman Antonios Vakaloudis Henrik Wrangel

MPEG-4 innehåller bl.a:

Spektrala Transformer för Media

Spektrala Transformer för Media

SNABBGUIDE för Windows Media Encoder (media kodaren) - Sänd live med din webbkamera

Kompression av ljud och bild

After Effects Lathund

TSBK04 Datakompression Övningsuppgifter

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer

NEX-3/NEX-5/NEX-5C A-DRH (1) 2010 Sony Corporation

PÅ SPANING I FORMATDJUNGELN

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

RÄTTMALL/Omtenta i TV-teknik 5p

P L A Y. Adobe Produktguide. Adobe Photoshop Elements 4.0 Adobe Premiere Elements 2.0

INT 3 F3. En texts läsbarhet. Teckensnitt. Medieteknik Del1. Färger, teckensnitt och bildformat

DT1130 Spektrala transformer Tentamen

10/13/08. TV-standarder. Lennart Ståhlberg/STV Video Data Vad gör kameran? Vad gör kameran? Parallell till serieomvandlare

Institutionen för systemteknik Department of Electrical Engineering

2 Vad händer när man ringer? 2 Vad händer när man ringer?

Perfekt skärpa i Photoshop

Spektrala transformer Laboration: JPEG-kodning

Multimedia? Produktion för Webb och Multimedia

Digital signalbehandling Digitalt Ljud

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Kapitel 3 o 4 Att skicka signaler på en länk Tillförlitlig dataöverföring. Att göra. Att sända information mellan datorer

TSBK 10 Teknik för avancerade datorspel Fö 9: Nätverk, Peter Johansson, ISY

Kapitel 3 o 4. Tillförlitlig dataöverföring. (Maria Kihl)

Europeiska unionens officiella tidning

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Att sända information mellan datorer. Information och binärdata

Sensorer i digitalkameror

BILDBEHANDLINGSMETOD INNEFATTANDE BRUSREDUCERING I BILD MED LOKALT ADAPTIV FILTERKÄRNA

Photo Story 3. Manual till Photo Story 3 1

Transkript:

Videokodning Begrepp och beteckningar Videosignalen består av en sekvens av bilder, typiskt 24, 25 eller 30 bilder i sekunden. Bilderna skickas antingen progressivt (hela bilden på en gång) eller med interlace (en halv bild i taget med dubbla bildfrekvensen, först alla jämna linjer, sen alla udda linjer). På engelska kallas en helbild för frame och en halvbild för field.

Färgformat Färginformationen lagras med en luminans- och två krominanssignaler (YCbCr) Krominanssignalerna samplas oftast grövre än luminanssignalen. 4:4:4 Ingen nersampling av krominanssignalerna. 4:2:2 Krominanssignalerna nersamplade en faktor 2 i horisontal ledd. 4:1:1 Krominanssignalerna nersamplade en faktor 4 i horisontal ledd. 4:2:0 Krominanssignalerna nersamplade en faktor 2 både i horisontal och vertikal ledd.

Nersampling 4:4:4 4:1:1 Y Cb Cr Y Cb Cr 4:2:2 4:2:0 Y Cb Cr Y Cb Cr 4:2:0 är det vanligaste formatet.

Motion JPEG (2000) Koda varje bild i sekvensen med JPEG eller JPEG 2000. Utnyttjar inte beroendet mellan närliggande bilder. En tillämpning för Motion JPEG 2000 är digitalbio, där man lagrar bilderna med hög upplösning (upp till 4096 2160) och använder ganska måttlig kompression.

DCI - Digital Cinema Initiatives Tre levels på upplösning 1. Max upplösning 4096 2160, 24 bilder i sekunden. 2. Max upplösning 2048 1080, 48 bilder i sekunden. 3. Max upplösning 2048 1080, 24 bilder i sekunden. Pixlarna är kvadratiska. 12 bitars upplösning per färgkomponent. Ingen nersampling av krominanssignalerna. Level 1 har alltså en rådatatakt på ca 7.6 Gbit/s. Bilddatat kodas med Motion JPEG 2000. Maximal datatakt är 250 Mbit/s efter kompression.

Hybridkodning Närliggande bilder i en sekvens är oftast väldigt lika varandra, alltså är det en bra idé försöka utnyttja detta vid kodningen. De flesta videokodningsmetoder använder sig av hybridkodning, där man gör prediktiv kodning i tidsled och transformkodning i bildplanet. För att kompensera för kamerarörelser, zoomningar och objekt i bilden som rör på sig, använder man rörelsekompensering. Detta görs oftast blockvis.

Rörelsekompensering Bild X t 1 Bild X t Sökområde b i Vi ska koda bilden X t med hjälp av prediktion från föregående bild X t 1. För varje block b i i bilden X t letar vi efter ett block b i i föregående bild X t 1 som är så likt b i som möjligt. Sökningen görs i ett begränsat område runt b i :s position. Resultatet är en rörelsevektor som måste skickas till mottagaren. Skillnadsblocket b i b i kodas med en transformkodare och skickas till mottagaren.

Hybridkodare med rörelsekompensering - T Q VLC rek. T 1 + ME: rörelseestimering P: rörelsekompenserad prediktion T: blockbaserad transform Q: kvantisering VLC: variabellängdskodning P ME VLC

Rörelsekompensering Mottagaren kan med hjälp av föregående avkodade bild ˆX t 1, de mottagna rörelsevektorerna och de avkodade skillnadsblocken skapa en ny avkodad bild ˆX t. För att undvika felfortplantning bör kodaren göra rörelsekompenseringen från en avkodad version ˆX t 1 av föregående bild, istället för från X t 1. Med jämna mellanrum bör man överföra en bild som kodas oberoende av andra bilder.

Val av blockstorlek Hur ska man välja blockstorlek för rörelsekompenseringen? Ju mindre block man använder, desto bättre blir prediktionen. Tyvärr måste man ju skicka över sidoinformation i form av rörelsevektorer till mottagaren, så ju mindre block man väljer desto mer sidoinformation måste skickas. De flesta kodningsstandarder gör rörelseestimering på block av storlek 16 16 bildpunkter.

Rörelseestimering Rörelseestimeringen är ofta en stor flaskhals i en hybridkodare, eftersom man måste göra stora sökningar för att hitta de bästa rörelsevektorerna. För att få realtidsprestanda kan man behöva använda specialhårdvara för rörelseestimering. Man kan även använda snabbare sökmetoder, t.ex. logaritmisk sökning, för att snabba upp rörelseestimeringen. Det är då inte säkert att man hittar den bästa rörelsevektorn, eftersom man inte prövar alla möjligheter, men oftast blir det tillräckligt bra.

Exempel Två på varandra följande bilder ur en videosekvens. Kameran panorerar åt höger, vilket gör att stillastående delar i bilden verkar röra sig åt vänster. Spelaren med bollen rör sig åt höger i bilden.

Ett av blocken Block som ska predikteras: Sökområde i tidigare bild centrerat kring samma position (±20 bildpunkter) och position för den bästa matchningen. Rörelsevektorn är skillnaden i position mellan centrum och bästa match: (-7,1).

Exempel, rörelsevektorer

Exempel Rörelsekompenserad prediktion av bild 2, respektive bild 2 i original.

Exempel Prediktionsfel utan respektive med rörelsekompensering. Rörelsekompenseringen ger en felbild som är lättare att koda, dvs lägre datatakt vid samma distorsion, alternativt lägre distorsion vid samma datatakt.

Standarder De två stora organisationerna som tar fram videkodningsstandarder är ITU (International Telecommunication Union) och MPEG (Moving Picture Experts Group). MPEG är ett samarbete mellan ISO (International Organization for Standardization) och IEC (International Electrotechnical Commission). ITU och MPEG har samarbetat om vissa standarder. 1990: H.261 1991: MPEG-1 1994: MPEG-2/H.262 1995: H.263 1998: MPEG-4 2003: MPEG-4 AVC/H.264 2013: HEVC/MPEG-H/H.265 Förutom de öppna standarderna finns det flera proprietära format, t.ex. RealVideo och Windows Media.

Bildtyper I Intra. Bilden kodas oberoende av närliggande bilder. P Predicted. Bilden kodas med rörelsekompensering från föregående I- eller P-bild. B Bidirectional. Bilden kodas med rörelsekompensering från tidigare och/eller senare I- eller P-bilder i sekvensen. Man kan oftast även välja kodningsmetod för varje makroblock. I en I-bild måste alla makroblock kodas som I-block, i en P-bild kan makroblocken kodas som I- eller P-block och i en B-bild kan makroblocken kodas som I-, P- eller B-block.

H.261 Lågtaktskodare avsedd framför allt för videokonferenser och videotelefoni. Typisk datatakt 64-128 kbit/s (ISDN). Standarden klarar datatakter upp till 2 Mbit/s. Baserad på rörelsekompensering på makroblock om 16 16 bildpunkter och DCT på block om 8 8 bildpunkter. Bildstorlek 352 288 (CIF), eller 176 144 (QCIF). Färgformat 4:2:0. Varje makroblock innehåller då 4 luminansblock och 2 krominansblock. Låg framerate, typiskt 10-15 bilder/s Bara I- och P-bilder (kallas INTRA mode resp INTER mode i H.261).

H.261, forts. Rörelsevektorerna kan vara maximalt ±15. Skillnaden till föregående rörelsevektor variabellängdkodas,med korta kodord för små skillnader. 32 olika kvantiserare att välja på för varje makroblock, likformiga med olika steglängd. Möjlighet finns också att välja kvantiserare för en hel grupp om 11 3 makroblock, för att spara bitar. För varje makroblock skickar man också information om vilka av de 6 blocken som innehåller nollskilda komponenter överhuvudtaget. De kvantiserade blocken zigzag-scannas och skurlängdskodas. De vanligast förekommande paren (skurlängd, nollskild komponent) kodas med en tabellerad variabellängdskod, övriga par kodas med en 20-bitars fixlängdskod. Ger acceptabel bildkvalitet vid 128 kbit/s vid små rörelser.

H.263 Utvecklad variant av H.261, med samma användningsområden. Möjlighet till längre rörelsevektorer Fler bildformat möjliga, t.ex. 4CIF (704 576). Aritmetisk kodning kan användas Rörelsekompensering med halvpixelprecision (interpolering) PB-bilder (enklare variant av B-bilder) Jämfört med H.261 får man ungefär samma kvalitet vid halva datatakten.

MPEG-1 Likt H.261 använder MPEG-1 rörelsekompensering på makroblock om 16 16 bildpunkter och DCT på block om 8 8 bildpunkter. Önskvärt med random access, dvs att man kan hoppa in någonstans mitt i sekvensen och ändå kunna avkoda, därför ser man till att det finns I-bilder med jämna mellanrum. I MPEG-1 introducerades B-bilder, där man kan prediktera både från föregående och följande I- eller P-bilder. Prediktion får inte göras från andra B-bilder. B-bilder gör att man kanske måste skicka bilderna i en annan ordning än de visas, eftersom mottagaren måste ha tillgång till efterföljande bilder för att kunna avkoda. B-bilderna ger möjlighet till hög kompression.

Omordning Antag att man kodar var 12:e bild som en I-bild och har två B-bilder mellan varje par av I/P-bilder, så att sekvensen av kodade bilder ser ut som I 0 B 1 B 2 P 3 B 4 B 5 P 6 B 7 B 8 P 9 B 10 B 11 I 12 B 13 B 14 P 15... P 3 predikteras från I 0, P 6 predikteras från P 3 et c. B 1 och B 2 predikteras från I 0 och P 3, B 4 och B 5 predikteras från P 3 och P 6 et c. Kodaren måste då koda och skicka bilderna i ordningen I 0 P 3 B 1 B 2 P 6 B 4 B 5 P 9 B 7 B 8 I 12 B 10 B 11 P 15 B 13 B 14... för att avkodaren ska kunna avkoda korrekt.

MPEG-1, forts. Rörelsekompenseringen tillåter godtyckligt stora rörelsevektorer, och halvpixelprecision. Kvantiseringen liknar den som görs i JPEG, med kvantiseringsmatriser. Standardmatrisen för I-block ser ut som 8 16 19 22 26 27 29 34 16 16 22 24 27 29 34 37 19 22 26 27 29 34 34 38 22 22 26 27 29 34 37 40 22 26 27 29 32 35 40 48 26 27 29 32 35 40 48 58 26 27 29 34 38 46 56 69 27 29 35 38 46 56 69 83

MPEG-1, forts. Standardkvantiseringsmatris för P- och B-block: 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16

MPEG-1, forts. Kvantiseringsmatriserna skalas sedan med en faktor som kan ändra värde från makroblock till makroblock, vilket används för att styra datatakten. Luminans- och krominansblock har separata kvantiseringsmatriser. Det är möjligt att skicka med egna kvantiseringsmatriser i bitströmmen. De kvantiserade koefficenterna zigzagscannas och nollor skurlängdskodas. Paren (skurlängd, nollskild komponent) kodas med fixa variabellängdskoder. MPEG-1 används till exempel i VideoCD. Upplösning 352 288 (25 frames/s) eller 352 240 (30 frames/s). Videodatatakt 1-1.5 Mbit/s.

MPEG-2 (H.262) Nästan identisk med MPEG-1. En MPEG-2-avkodare ska även klara av att avkoda MPEG-1-strömmar. Tillåter större upplösningar och högre datatakter än vad MPEG-1 gör. Tillåter att man kodar fields separat (MPEG-1 kodar bara en hel frame i taget) Typiska format för MPEG-2 kodad video är 720 576, 25 bilder/s eller 720 480, 30 bilder/s (DVD, digitaltv) 1280 720, 1920 1080 (HDTV, Blu-ray)

Profiles/levels I MPEG-sammanhang talar man om profiler (profiles) och nivåer (levels). En profile definerar en delmängd av de möjliga algoritmerna som får användas. En level sätter begränsningar på parametrarna i bitströmmen (t.ex. upplösning, längd på rörelsevektorer, datatakt). I MPEG-2 finns det 5 profiler (Simple, Main, SNR Scalable, Spatially Scalabe, High) och 4 levels (Low, Main, High 1440, High).

Profiles/levels Några exempel: Main profile, low level: Max upplösning 352 288, 30 bilder/s. Maximal datatakt 3 Mbit/s. Färgformat 4:2:0. Main profile, main level: Max upplösning 720 576, 30 bilder/s. Maximal datatakt 10 Mbit/s. Färgformat 4:2:0. High profile, high level: Max upplösning 1920 1152, 60 bilder/s. Maximal datatakt 100 Mbit/s. Färgformat 4:2:2.

MPEG-4 Multimediakodning. Man beskriver en scen som kan innehålla ett flertal bild- och ljudkällor. Varje källa kodas med en lämplig kodningsmetod. I avkodaren sätts alla källorna samman till en scen. Videokodaren är i grunden en DCT-kodare med rörelseestimering, av liknande typ som i övriga MPEG-standarder och H.263. Dock kan videon ha godtycklig form, inte bara rektangulär. Man måste alltså skicka över forminformation till avkodaren också.

MPEG-4, forts. Stillbilder Stillbilder kodas i MPEG-4 med en delbandskodare (waveletkodare) som använder nollträd (zero-trees). Sprites En sprite i MPEG-4 är en stillbild som finns som bakgrund i en hel videosekvens, ofta mycket större än själva videon så att man kan låta kameran panorera över den. Genom att använda sprites kan man skicka över bakgrunden en gång för alla, så att man slipper skicka den i varje frame. Syntetiska objekt Mänskliga ansikten kan beskrivas med en tredimensionell trådmodell, med tillhörande textur. Trådmodellen kan sedan animeras, med väldigt låg datatakt (man skickar bara över information om hur trådmodellen rör sig). Texturen behöver bara skickas över en gång.

MPEG-4, ljudkodning Ett flertal olika ljudkodningsmetoder stöds. Generell vågformskodning av ljud (AAC). Talkodning. Text-to-speech. Stöd för att syntetisera tal från text finns. Kan synkroniseras med animeringen av ansiktsmodeller. Musikbeskrivningsspråk. Beskriv instrument och vilka toner de spelar (jämför med MIDI).

Exempel: Scen i MPEG-4

H.264/MPEG-4 AVC Den senaste videokodningsstandarden är H.264 (även kallad MPEG-4 Advanced Video Coding och MPEG-4 part 10) och togs fram i samarbete mellan ITU-T och MPEG. H.264 är en av de kodningsmetoder som används på Blu-rayskivor (även MPEG-2 och VC-1 stöds) och för sändning av HDTV-material enligt DVB-standarderna (även MPEG-2 stöds). Den första varianten av H.264 kom 2003. Flera utvidgningar har tillkommit senare (t.ex. 3D/multiview coding).

H.264 I likhet med tidigare MPEG-standarder är H.264 en hybridkodare, där man gör rörelsekompenserad prediktion från tidigare (och senare) bilder och där prediktionsfelet kodas med en transformkodare. Kodaren använder en makroblockstorlek på 16 16 bildpunkter. Makroblocken kan kodas som I-, P- eller B-block (dvs utan prediktion, med prediktion från en tidigare bild eller med prediktion från både tidigare och senare bilder). Man behöver inte koda hela bilden på samma sätt. Varje bild kan delas i flera delar (s.k. slices) och man väljer för varje slice om den är av typ I, P eller B. Även på makroblocknivå kan man ha olika sorters makroblock i en slice. För en I-slice måste alla makroblock vara av typ I, för en P-slice kan makroblocken vara av typ I eller P och för en B-slice kan makroblocken vara av typ I, P eller B.

H.264 Rörelsekompenseringen kan förutom att göras på makroblock (16 16 bildpunkter) även göras på mindre block (16 8, 8 16, 8 8, 4 8, 8 4 och 4 4). Kodaren har alltså möjligheten att dela upp makroblocket i mindre delar om den inte lyckas göra en bra rörelsekompensering för hela makroblocket. Till skillnad från andra MPEG-standarder som använder en DCT på block av storlek 8 8, så använder H.264 en heltalstransform av storlek 4 4 enligt 1 1 1 1 2 1 1 2 1 1 1 1 1 2 2 1 Heltalstransformen är inte normerad, men detta kan man kompensera för i kvantiseringen.

H.264 Varje makroblock om 16 16 bildpunkter delas alltså upp i 16 stycken transformblock för luminansen och 4 stycken transformblock för vardera krominansdel (förutsatt att man använder 4:2:0-format). DC-nivåerna för transformblocken kan sedan transformeras ytterligare ett steg med en DWHT (4 4 för luminansen, 2 2 för krominanserna). Transformkomponenterna kvantiseras likformigt och källkodas. Det finns flera olika källkodningsmetoder att välja mellan.

H.264 I utökningarna av H.264 har man infört stöd för större transformblock (8 8, 8 4 och 4 8). 8-punkterstransformen ser ut som 13 13 13 13 13 13 13 13 19 15 9 3 3 9 15 19 17 7 7 17 17 7 7 17 9 3 19 15 15 19 3 9 13 13 13 13 13 13 13 13 15 19 3 9 9 3 19 15 7 17 17 7 7 17 17 7 3 9 15 19 19 15 9 3 Som synes är inte heller denna transform normerad, men detta kompenseras för i kvantiseringen.

H.264 H.264 tillåter att man gör prediktion även från B-bilder, vilket t.ex. inte är tilllåtet i MPEG-2. För att undvika problem med kausalitet måste kodaren se till att två B-bilder inte predikteras från varandra. Antalet referensbilder för rörelsekompenseringen kan vara ända upp till 16 (till skillnad från andra MPEG-standarder där man max kan ha två referensbilder, en tidigare I/P-bild och en senare). Detta ger en större möjlighet för kodaren att hitta en bra prediktion för varje block. I H.264 finns det också stöd för att använda viktad prediktion, dvs att man använder prediktionskoefficienter och inte bara tar skillnader mellan pixelvärden.

H.264 Även för I-block görs en prediktion. Denna prediktion använder bildpunkter i omgivande, redan kodade block. Prediktionen görs som en linjär interpolation från de omgivande bildpunkterna. Antingen kan man göra en enda prediktion för hela makroblocket, vilket går att göra på 4 olika sätt, eller så delas luminansmakroblocket i 16 stycken små block om 4 4 bildpunkter. Prediktionen för vart och ett av de små blocken kan göras på 9 olika sätt. För krominansblocken kan man bara göra den enkla prediktionen på hela blocket (4 olika sätt, samma prediktion på både Cb och Cr).

H.264 Det finns två olika källkodningsmetoder att använda i H.264. VLC Kvantiserade och skurlängdskodade transformkomponenter kodas med tabellerade koder (CAVLC). Övriga data (rörelsevektorer, headerdata, et c.) kodas med Exp-Golomb-koder. CABAC Context Adaptive Binary Arithmetic Coding. Aritmetisk kodning. All data kodas med betingning (kontexter) och alla sannolikhetsmodeller uppdateras kontinuerligt.

Profiles och levels H.264 har ett antal profiles och levels. Som för alla MPEG-standarder bestämmer profile vilka typer av algoritmer som får användas och level sätter gränser på numeriska parametrar (t.ex. upplösning, framerate och datatakt). Några exempel på profiler: BP Basic Profile. Bara I- och P-slices, inga B-slices. Bara 4 4-transformer. Bara VLC som källkodningsmetod. Bara progressiv kodning (frames). MP Main Profile. Tillåter även B-slices, interlace (fields) och CABAC. HiP High Profile. Tillåter även 8 8-transformer. (Det ingår även andra mindre skillnader mellan, profilerna, men de listade skillnaderna är de viktigaste). High Profile är det som används i DVB och på Blu-rayskivor.

Komplexitet Eftersom det finns så många olika sätt att koda varje makroblock blir en H.264-kodare typiskt mycket långsammare än kodare för enklare MPEG-standarder. Till exempel kan ett I-block predikteras på 592 olika sätt (16 9 + 4 olika sätt att prediktera luminansen, 4 olika sätt att prediktera krominanserna, (16 9 + 4) 4 = 592). På samma sätt kan man för varje P- eller B-makroblock välja mellan många olika blockstorlekar för rörelseestimeringen och mellan flera olika referensbilder att göra prediktion från. För att få en snabb kodning kan man inte göra uttömmande sökning, utan man får använda algoritmer som snabbt sorterar bort de prediktionsmoder som förmodligen inte kommer att ge bra resultat. Förmodligen tappar man lite i kodningsprestanda, men får en snabbare kodare.

Deblocking Framför allt när man kodar med låga datatakter får man många blockartefakter från transformkodningen. Dessa artefakter gör, förutom att ge störande visuella fel, att rörelsekompenseringen inte fungerar så bra. För att råda bot på detta gör man i H.264 lågpassfiltrering på blockgränserna. Resultat med och utan filtrering nedan.

Multiview, 3D Det har den senaste tiden blivit populärt att ha flera kameror som filmar samma scen från olika vinklar (eller, om det är fråga om datorgenererat material, renderar videon från flera olika vinklar). Detta kan t.ex. används för 3D-bio, eller för multiviewvideo, där tittaren kan välja betraktningsvinkel. På samma sätt som bilder efter varandra i en videosekvens är väldigt lika varandra, kommer bilder från kameror nära varandra att vara väldigt lika varandra. En kodningsmetod för 3D/multiview kan alltså göra prediktiv kodning mellan olika kameror och inte bara i tidsled. Den senaste versionen av H.264 har stöd för 3D och multiview.

3D/multiview coding Prediktion både i tidsled och mellan kameror.

High Efficiency Video Coding HEVC är den senaste videokodningsstandarden under utveckling i samarbete mellan ISO/IEC och ITU-T. Fokus i arbetet med HEVC har legat på att ta fram en kodare för högupplöst video. Det börjar redan finnas displayer med upplösningen 4K UHD (3840 2160) och 8K UHD (7680 4320). Ett annat mål är att se till att avkodaren kan utnyttja parallellarkitekturer. Arbetet med HEVC började i januari 2010 och den första versionen av standarden antogs i januari 2013.

HEVC blockschema

Blockstruktur Basenheten för kodning kallas Coding Tree Unit (CTU), bestående av ett kvadratiskt block av pixlar av storlek 64 64, 32 32 eller 16 16. Detta motsvarar makroblocken som används i tidigare standarder. Färgformatet är 4:2:0. En CTU delas upp i ett antal Coding Units (CU) i en quadtree-struktur. Den minsta tillåtna storleken på en CU är 8 8.

Prediktion Beslutet att använda intra- (I) eller interprediktion (P eller B) görs på CU-nivå. Varje CU delas upp i ett antal Prediction Units (PU). Standarden tillåter storlekar på en PU från 64 64 ner till 4 4. Vid intraprediktion har måste storleken på en PU vara samma som motsvarande CU för alla storlekar förutom den minsta. I detta fall är det tillåtet att dela en CU i fyra stycken PU. Vid interprediktion kan man dela upp en CU i en, två eller fyra stycken PU. Det är bara tillåtet att dela till fyra PU när CU har den minsta storleken.

PU-storlekar Möjliga sätt att dela en CU i flera PU. För intraprediktion är bara M M och M/2 M/2 tillåtna. För interprediktion kan de fyra undre alternativen bara användas när M 16.

Transform Prediktionsfelet (från intra- eller interprediktion) för varje CU delas med hjälp av ett quadtree upp i ett antal Transform Units (TU). Storleken på en TU kan vara 32 32, 16 16, 8 8 eller 4 4. Vid intraprediktion måste TU ha samma storlek som PU. Vid interprediktion är uppdelningen i TU oberoende av uppdelningen i PU. Transformerna som används är heltalsapproximationer av skalade DCT. För intrakodning av TU av storlek 4 4 används även en heltalsapproximation av en DST (Discrete Sine Transform).

Framestrukturer Varje bild (frame) som kodas kan delas upp i slices och tiles. En slice består av ett antal CTU:s i raster-scan-ordning som kan avkodas korrekt utan att använda data från andra slices. Detta betyder att ingen intraprediktion görs över slicegränser. En tile är en rektangulär area av bilden som kan avkodas korrekt utan att korrekt utan att använda data från andra tiles. En slice kan bestå av flera tiles. En tile kan bestå av flera slices. Slices och tiles kan därmed avkodas parallellt.

Slices och tiles

Slice-typer Varje slice kodas som en I-slice, en P-slice eller en B-slice. I Alla CU:s kodas med intraprediktion. P CU:s kodas antingen med intraprediktion eller interprediktion från en tidigare bild (en rörelsevektor). B CU:s kodas antingen med intraprediktion eller interprediktion från en tidigare bild och/eller en senare bild (en eller två rörelsevektorer).

Intraprediktion Intraprediktionen använder tidigare avkodade pixelvärden från närliggande block för att skapa prediktionssignalen, genom att interpolera i en av 33 olika riktningar. Dessutom kan man även välja att göra en planprediktion eller DC-prediktion. Det finns alltså 35 olika sätt att göra prediktionen för varje block.

Interprediktion Varje inter-pu kan ha en eller två rörelsevektorer och referensbildsindex. Rörelsevektorerna använder kvartspixelnoggrannhet. Subpixelvärden interpoleras från tillgängliga pixelvärden med linjära filter.

Kvantisering och källkodning Kvantiseringen som används är likformig kvantisering. Skalningsmatriser som ger olika steglängder för olika transformkomponenter kan användas. Källkodningsmetoden kallas CABAC (Context Adaptive Binary Arithmetic Coding). Detta är samma metod som används i H.264.

Efterbehandling När en bild är avkodad filtreras den för att reducera blockartefakter och andra fel inuti blocken. Deblocking: Linjär filtrering på blockgränserna för att reducera blockartefakterna. Detta fanns redan i H.264. Sample Adaptive Offset (SAO): Icke-linjär filtrering inuti blocken för att reducera ringningsartefakter nära skarpa kanter och falska konturer (eng. banding) i platta områden. Kräver att lite extra information måste överföras i den kodade strömmen.

Deblocking Avkodad bild utan (a) och med (b) deblocking.

SAO Uppifrån och ned: Med SAO, utan SAO, originalbild.

Kodarja mfo relse

Kodarja mfo relse

Framtida utökningar Det kommer att komma flera utökningar till HEVC-standarden, till exempel: Skalbar kodning 3D/stereo/multi-view Utökade bildformat (ökat bitdjup i indata, 4:2:2, 4:4:4)