6. Videon pakkausmenetelmiä Kuvanpakkauksesta Liikekompensaatio Videonpakkausstandardit Audion pakkaus DVP-6 J. Teuhola 2007
Datamääristä Video on kaikkein vaativin mediamuoto Talletus ja siirto pakkaamattomana ei mahdollista nykyisillä laitteilla ja siirto-nopeuksilla. 1 kuva karkeasti 8 Mbittiä 25 kuvaa/sek noin 200 Mbittiä Tunnin video noin 720 Gbittiä Lisäksi audiodata DVP-6 J. Teuhola 2007
Pakkauksen edellytykset Pakkaus perustuu datan sisältämään redundanssiin. Spatiaalinen redundanssi: Kuvan sisällä vahva korrelaatio naapuripikselien välillä. Temporaalinen redundanssi: Peräkkäisten kuvien välillä vahva riippuvuus, paitsi leikkauskohdissa. DVP-6 J. Teuhola 2007
Informaatioteorian alkeita Jos koodataan pikseli kerrallaan, niin pikselin sävy voidaan ennustaa suurella todennäköisyydellä (p) naapureista tai edeltäjäkuvien vastinpikseleistä. Informaation määrä (bittimäärä) = log2(1/p) Jos sävyn i todennäköisyys on pi, niin bittimäärän odotusarvo/pikseli (ns. entropia) on DVP-6 J. Teuhola 2007
Pakkauksen päävaiheet 1. Mallintaminen: Kuvataan sävyjen jakautuma ja riippuvuus naapureista ja muista kuvista jollakin tavalla Muodostetaan koodattavia elementtejä 2. Koodaus: Annetaan elementeille binäärikoodit Perustuu elementtien todennäköisyyksiin Tunnettuja algoritmeja: Huffman-koodaus, aritmeettinen koodaus DVP-6 J. Teuhola 2007
Menetelmien ominaispiirteitä Häviöttömyys: alkuperäinen kuvasarja voidaan palauttaa tarkasti; ei käytetä videolle. Häviöllisyys: voidaan palauttaa alkuperäisen kuvansarjan approksimaatio; riittää videolle. Pakkausteho (pakattu/alkuperäinen) Nopeus: Käytännön kannalta tärkeä Koodausnopeus ( live-lähetykset) Dekoodausnopeus ( katselu) Herkkyys tiedonsiirtovirheille (’robustness’) DVP-6 J. Teuhola 2007
Kuvan pakkaushäviön mittaus Keskineliövirhe: Keskimääräinen absoluuttinen virhe: Peak Signal-to-Noise Ratio (n=bittiä/pikseli): DVP-6 J. Teuhola 2007
Kiintokuvien pakkauksesta Jos videon kuvat pakataan toisistaan riip-pumatta, voidaan käyttää normaaleja kuvanpakkausmenetelmiä: JPEGMJPEG Helpottaa videon editointia pakatussa muodossa: voidaan leikata mistä kohdasta tahansa. Jättää peräkkäisten kuvien välisen (’tempo-raalisen’) riippuvuuden huomioimatta (ei tehokasta). DVP-6 J. Teuhola 2007
JPEG Yksi yleisimpiä kuvanpakkausformaatteja Häviöllinen, mutta hukka säädettävissä Tyypillinen pakkaussuhde 10:1 antaa riittävän laadukkaan dekoodaustuloksen. Perustuu kuvan ’frekvenssiesitykseen’: korkeat ’taajuudet’ voidaan esittää karkeammin – ihmissilmä ei herkkä virheille epätasaisilla alueilla. Vastaava idea myös videonpakkauksessa DVP-6 J. Teuhola 2007
JPEG harmaasävykuville Diskreetti kosinimuunnos (sukua Fourier-muunnokselle), tavoitteena dekorrelaatio. DVP-6 J. Teuhola 2007
JPEG harmaasävykuville (jatk.) Muunnos tehdään jokaiselle 8x8 –lohkolle Tulos 8x8 –matriisi; matalien taajuuksien kertoimet vas.ylhäällä, korkeiden taajuuksien kertoimet oik. alhaalla. Kertoimet kvantisoidaan (matalat taajuudet tarkemmin, koska tärkeämpiä) Suurin osa kertoimista on yleensä nollia. Lopuksi entropiakoodaus (Huffman tai aritmeettinen koodaus). DVP-6 J. Teuhola 2007
DCT-pohjaisen pakkauksen laadusta DCT-muunnos on itsessään häviötön Häviö tulee kvantisoinnista Suurta kvantisointiaskelta käyttäen saadaan hyvä pakkaussuhde, mutta informaatiohukka ilmenee lohkomaisuutena (’blocking artifacts’): Vain pienimpiä taajuuksia edustavat DCT-kertoimet nollasta poikkeavia. DVP-6 J. Teuhola 2007
Värikuvien pakkauksesta Suoraviivainen yleistys harmaasävykuvien pakkaukselle Ensimmäinen idea: Kullekin värikanavalle erikseen Ei tehokas, koska värit korreloivat Parempi idea: Erotetaan luminanssi väri-infosta JPEG: muunnos YUV-järjestelmään; krominanssikomponentit (U, V) voidaan koodata epätarkemmin kuin kirkkaus (Y). DVP-6 J. Teuhola 2007
Videonpakkaus vs. kuvanpakkaus Peräkkäisten kuvien korrelaatioita pitäisi käyttää hyväksi. Häiritsevät pakkaushäviöt voivat olla erityyppisiä kuin kiintokuvissa. Nopeissa liikkeissä häviöt eivät ole yhtä helposti havaittavissa. Eri käyttötilanteisiin omat menetelmänsä. Useimmissa pohjana DCT-muunnos Pakkaussuhde 50:1 kohtuullisen laadukas DVP-6 J. Teuhola 2007
Liikekompensaatio Peräkkäisissä videokuvissa tausta on usein staattinen (pl. satunnaisvaihtelut); vain jotkin edustalla olevat kohteet liikkuvat (jos kamera paikallaan). Seuraava kuva voidaan ennustaa melko tarkasti, jos kohteiden liikevektorit tunnetaan. Liikekompensaatio = liikevektorien etsintä, koodaus ja käyttö ennustuksessa. DVP-6 J. Teuhola 2007
Liikekompensaation tyypillinen toteutus Kuvan jokainen lohko (yleensä 16x16 -makrolohko) ennustetaan naapurikuvasta (jo käsitelty ja dekoodaajankin tiedossa). Ennustaja = viereisen kuvan vastinlohkon naapuruston lohko, joka parhaiten täsmää tarkasteltavan lohkon kanssa. Liikevektori = ennustajan ja ennustetun lohkon välinen sijaintiero. DVP-6 J. Teuhola 2007
Liikekompensaatio (jatk.) Esim. erotus ilman liikekompensaatiota: Koodattavat asiat: Liikevektorit Erotuskuvat (’error image’), kuten JPEG - = DVP-6 J. Teuhola 2007
Yleinen videonpakkausjärjestelmä Erotus- kuva Muunnos- operaatio Kvanti- soija Arvojen koodaus Käänteis- kvantis. Käänteis- muunnos Kuva- muisti Liikekom- pensaatio Liikkeen arviointi Liikevekt. koodaus Kuva DVP-6 J. Teuhola 2007
ITU-T H.261 -standardi International Telecommunication Union, 1990 Tarkoitettu symmetrisiin käyttötilanteisiin, (koodaus ja dekoodaus yhtä nopeita) Sovelluksina videokonferenssi, kuvapuhelin, yms. Määrittelee bittivirran ja dekooderin; enkooderi jätetty avoimeksi. Max 150 ms viive (reaaliaikasovellukset) DVP-6 J. Teuhola 2007
ITU-T H.261 (jatk.) Ennustajalohkoa etsitään max 15 pikselin päästä vaaka-/pystysuunnassa. Yksikkönä 16x16 –makrolohko Vertaillaan vain luminanssikomponentteja Ennustuslohkon pehmennys suodattimella. 31 mahdollista askelpituutta kvantisoinnissa (DCT-kertoimien jakaja). DVP-6 J. Teuhola 2007
ITU-T H.261 (jatk.) Standardi sisältää paljon optioita; esim. pelkkä liikekompensaatio tai DCT-muunnos 8x8-erotuslohkoille Kvantisoitujen kertoimien läpikäynti ’siksak’-järjes- tyksessä, jotta 0-jonojen pituudet maksimoituvat. Kertoimien (0) koodaus (Huffman) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DVP-6 J. Teuhola 2007
ITU-T H.261 (jatk.) Datahierarkia: 1 CIF-kuva (Common Interchange Format) = 12 GOBs (Groups Of Blocks) = 12 x 33 makrolohkoa) = 12 x 33 x 4 peruslohkoa = 12 x 33 x 4 x 8 x 8 = 101376 pikseliä Värit: makrolohkon ’subsampling’ (joka toinen arvo värierokanavista) DVP-6 J. Teuhola 2007
ITU-T H.261 (jatk.) Myös lähettäjän pitää dekoodata kuva ja tallettaa se liikekompensaatiota varten. Silloin tällöin (esim. joka 15:s) kuva ilman liikekompensaatiota (virheiden kasaantuminen) Paljon toimintaa paljon dataa, vähän toimintaa vähän dataa Puskuri ei saisi täyttyä eikä tyhjentyä. Tasainen siirto saadaan käyttämällä useita kvantisointitasoja (valinta per lohko, ilmoitetaan myös dekoodaajalle). DVP-6 J. Teuhola 2007
MPEG-standardiperhe ISO / Moving Pictures Experts Group, Aloitti työnsä 1988 MPEG-1: 1.5 Mbps CD-ROM (1992) MPEG-2: 10 Mbps digi-tv (1994) MPEG-3: 40 Mbps HDTV; Hylättiin MPEG-4: Oliopohjainen multimedia (1998/99) MPEG-7: AV-sisällönkuvaus (2001) MPEG-21: Integraatio (2001) DVP-6 J. Teuhola 2007
MPEG-1 Muistuttaa paljon H.261-standardia Tarkoitettu 1.5 Mbps –siirtonopeuksille Enintään VHS-tasoa, elokuva mahtuu suunnilleen CD-ROMille Geneerinen standardi (ei rajoitu mihinkään tiettyyn sovellukseen). Sekä videon että audion koodaus (tarkastellaan myöh.) DVP-6 J. Teuhola 2007
MPEG-1: liikekompensaatio Kaksisuuntainen, perustuen joko edeltäjä- tai seuraajakuvaan tai molempiin. Liikevektori puolen pikselin tarkkuudella. Välipisteet lasketaan bilineaarisella interpolaatiolla. Liikevektorien koodaus: ero viereisen makrolohkon liikevektorista. Liikevektorin arvoalue –512 .. 511.5 DVP-6 J. Teuhola 2007
MPEG-1: syöttöformaatti PAL tai NTSC Pikselimäärän pienennys: otanta (subsampling) ja suodatus (filtering) Luminanssidimensiot: 352 x 288 (PAL), tai 352 x 240 (NTSC) Krominanssidimensiot: 176 x 144 (PAL), tai 176 x 120 (NTSC). DVP-6 J. Teuhola 2007
MPEG-1: kuvatyypit I-frame (intra-coded): itsenäisesti koodattu kuva, ilman liikekompensaatiota; mahdollinen dekoodauksen aloituskohta P-frame (predictive-coded): liikekompensoitu edellisestä I/P-kuvasta. B-frame (bidirectionally coded): liikekompensoitu sekä edeltävästä että seuraavasta I/P-kuvasta DVP-6 J. Teuhola 2007
MPEG-1: Kuvaryhmä GOB = Group-Of-Pictures Pienin suorasaantiyksikkö, voidaan koodata riippumattomasti, esim. I B P Kaksisuuntainen ennustus Eteenpäin ennustus DVP-6 J. Teuhola 2007
MPEG-1: Kuvajärjestys Kaksi järjestystä: näyttöjärjestys ja bittivirtajärjestys. Ennustajaroolissa olevat kuvat dekoodattava ennen ennustettavia. Tarvitaan puskuri Syntyy pieni viive DVP-6 J. Teuhola 2007
MPEG-1: Bittivirran sisäinen hierarkia Videosekvenssi Kuvaryhmä (GOP) Kuva Viipale (slice) Makrolohko Lohko DCT-kerroin DVP-6 J. Teuhola 2007
MPEG-2 = ITU-T H.262 Bittinopeuden suositusväli 4-15 Mbps Periaatteessa sovellusriippumaton; alueita: Video-On-Demand (VOD), broadcast-TV (kaapeli/satelliitti/terrestiaali-digi-tv), DVD, HDTV Progressiivisen & lomitetun videon koodaus Kiinnitetään bittivirta ja dekooderi, mutta ei enkooderia (samoin kuin MPEG-1) DVP-6 J. Teuhola 2007
MPEG-2: Yhteensopivuus Dekooderi pystyy dekoodaamaan myös MPEG-1-bittivirtaa Skaalautuvassa koodauksessa MPEG-2:n perustason koodia voi dekoodata myös MPEG-1-dekooderilla Profiileja tarvitaan eri sovellusalueita varten Jokaisen dekooderin ei ole järkevää implementoida koko standardia DVP-6 J. Teuhola 2007
MPEG-2: Profiilit Useita optioita, joilla voidaan säätää datamäärää ja kuvan laatua: Simple (ei B-frameja) Main SNR-skaalautuva Spatiaalisesti skaalautuva High DVP-6 J. Teuhola 2007
MPEG-2: Tasot Profiilien sisällä tasoja, jotka vastaavat eri laatutasoja; ilmenevät parametriarvojen rajoitteina (otantataajuus, kuvataajuus, bittimäärä/sek) Vaihtoehdot (PAL-järjestelmässä): High (1920 x 1152) High-1440 (1440 x 1152) Main (720 x 576) Low (352 x 288) DVP-6 J. Teuhola 2007
MPEG-2: Rajoitteita Kaikki profiili-taso-yhdistelmät eivät mahdollisia Matalampi profiili & taso -yhdelmä sisältyy aina korkeampaan. Periaatteellinen maksimikuvakoko 16K x 16K pikseliä. Kuvataajuudet: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60 (kuten MPEG-1). Väriotanta: 4:2:0, 4:2:2, 4:4:4 DVP-6 J. Teuhola 2007
MPEG-2: Lomitettu video Kentät (2 kpl/kuva) koodataan erikseen Jos 1. kenttä I-kuva, niin toinen voi olla I- tai P-kuva; P-kuva ennustetaan I-kuvasta Jos 1. kenttä on P-/B-kuva, niin toisen oltava samaa tyyppiä. Liikekompensaatiovaihtoehdot: Frame-based Field-based Dual-prime (2 referenssikenttää) Näistä erilaisia variaatioita DVP-6 J. Teuhola 2007
MPEG-2: Lomitettu video (jatk) DCT-koodaus Frame-based (jos vähän liikettä; makrolohkosta 4 erillistä 8 x 8 -lohkoa) Field-based (jos paljon liikettä; makrolohkosta 4 lomitettua 8 x 8 -lohkoa) Kaksi erilaista 'sik-sak-järjestystä' DCT-kertoimille; toinen suosii lomitettua videota, jossa vertikaalisuunnassa korkeita taajuuksia. DVP-6 J. Teuhola 2007
MPEG-2: skaalautuva koodaus (kerrostus) Voidaan käyttää useaa bittivirtaa (ei simple ja main –profiileissa) Peruskerros (layer): Peruslaatu Melko pieni datamäärä Korkea prioriteetti Tarkennuskerrokset Peruskerrokseen yhdistettynä parempi laatu Alempi prioriteetti DVP-6 J. Teuhola 2007
MPEG-2: kerrostus (jatk.) Tarvitaan häiriöisille siirtoteille; perustaso turvataan paremmin (virheenkorjaus) Joustava verkoissa, joissa siirtonopeus vaihtelee: Jos kaista kapenee, tarkennus-kerrokset jätetään pois. Sopii myös progressiiviseen siirtoon (nopeasti karkea versio videosta) Toteutus: alikaistajako (matalat & korkeat taajuudet) tai DCT-kertoimien jako ryhmiin DVP-6 J. Teuhola 2007
MPEG-2: SNR-skaalautuvuus SNR = Signal-to-Noise-Ratio (signaali-kohina-suhde) Kaksi laatutasoa: Karkea taso sisältää karkeasti kvantisoidut DCT-kertoimet Tarkennustaso esittää syntyneet kvantisointivirheet tarkemmin kvantisoituina. DVP-6 J. Teuhola 2007
MPEG-2: Spatiaalinen skaalautuvuus Karkea taso otannalla (downsampling) hienommasta resoluutiosta Esim. SDTV (Standard Definition TV) saadaan otannalla HDTV:stä (High Definition TV) Karkeata tasoa käytetään koodattaessa tarkempi taso: resoluution laajennus (up-sampling) interpolaatiolla ja yhdistäminen liikekompensaatioon sopivasti painotettuna DVP-6 J. Teuhola 2007
MPEG-2: Muita skaalautuvuuksia Temporaalinen skaalautuvuus: Perustaso pienemmällä kuvataajuudella Perustason kuvat toimivat 'ennustuskuvina' väliin lisättäville korkeamman kuvataajuuden kuville (esim. 25 kuvaa/ sek 50 kuvaa/sek) Hybridi-skaalautuvuus: Skaalautuvuuksia yhdistellään pareiksi 1 peruskerros ja 2 tarkennuskerrosta DVP-6 J. Teuhola 2007
ITU-T H.263 -videonpakkausstandardi Määritelty 1995 Monentyyppisiin verkkosovelluksiin (”Very low bitrate Internet telephony”) 64 Kbps Laajennus H.261:stä (tehokkaampi) Kaksisuuntainen liikekompensaatio Koodausmenetelmät: DPCM (Differential Pulse Code Modulation) DCT (Discrete Cosine Transform) Pohjana MPEG-4 Visualin Simple-profiilille DVP-6 J. Teuhola 2007
MPEG-4 Pohjana ITU-T H.263 –standardi Työ alkoi 1993, pääosin valmis 1999 Alkuperäinen tavoite: videon tehokas koodaus hitaita siirtoteitä varten Laajeni sitten yleiseksi multimedian koodausstandardiksi Tukee interaktiivisuutta ja sisältöpohjaista saantia; tässä tarkoituksessa sitä täydentää MPEG-7-standardi. Lähes 20 erilaista profiilia! DVP-6 J. Teuhola 2007
MPEG-4: Sovellusaloja Interaktiivinen videon siirtoyhteys, esim. videopuhelin, videoneuvottelu Ei-interaktiivisen videon siirto, esim. broadcast, video-email Digitaalinen tallennus (optiset levyt) Videotietokannat, sisältöpohjainen käsittely Videovalvonta Interaktiiviset videopelit DVP-6 J. Teuhola 2007
MPEG-4: Piirteitä Virhesietoisuus siirrossa Luonnollisen ja synteettisen av-datan geneerinen koodaus ja yhdistäminen Oliopohjaisuus: videokuvat voidaan koota osista (esim. kohde + tausta), jotka ovat itsenäisiä ja koodataan omalla tavallaan Tuki erimuotoisille video-objekteille (muodot, 2D- ja 3D-polygoniverkot, kasvot, vartalo) Tehokas pakkaus eri oliotyypeille ja kuvamateriaaleille DVP-6 J. Teuhola 2007
MPEG-4: Piirteitä (jatk.) Oliokohtainen interaktiivisuus: käyttäjä voi vaikuttaa olioihin erikseen. Oliopohjainen hajasaanti Temporaalinen hajasaanti (katselun aloituskohdan valinta) Temporaalinen, spatiaalinen, laadullinen ja oliotason skaalautuvuus erinopeuksisia siirtoteitä ja eritasoisia katselu-/kuuntelu- laitteita varten. Progressiivisen ja lomitetun videon pakkaus DVP-6 J. Teuhola 2007
MPEG-4: AV-oliot AV-olio on visuaalinen komponentti, audiokomponentti tai näiden yhdelmä. Video: Luonnollinen (kamerasta) tai synteettinen Audio: Luonnollinen/synteettinen Mono/stereo/monikanava Audiovisuaalinen näkymä (scene): AV-olioiden kompositio DVP-6 J. Teuhola 2007
MPEG-4: AV-olioiden siirto ja näyttö Interaktiivisuuden mahdollistamiseksi pitää käyttäjille välittää kunkin av-olion koordinaatit eli näkymän rakenneinfo siirretään omana virtanaan, multipleksoituna av-olioiden perusbittivirtojen kanssa Näkymä kootaan käyttäjän päätelaitteessa Kompositiota voidaan muuttaa muuttamatta av-olioiden sisältöä DVP-6 J. Teuhola 2007
MPEG-4: AV-olioiden siirto ja näyttö (jatk.) Olioiden ominaisuuksia voidaan muuttaa vastaanottopäässä, esim. zoomaus, resoluution muutos, ym. Jotkin toiminnot vaativat kontrollitiedon siirtoa palvelimeen (ns. upstream data), joka muuttaa bittivirtaa sen perusteella. DVP-6 J. Teuhola 2007
MPEG-4: Olioiden koodaus Video-olioiden vaihtoehdot: Luonnollinen tai synteettinen Suorakulmainen tai mielivaltaisen muotoinen Verkkomaisten (mesh) olioiden koodaus, esim. kolmioverkoista rakennetut oliot Mallipohjainen koodaus: ihmiskasvojen ja vartalon synteettinen esitys ja animointi Kiintokuvien tekstuurien koodaus: Wavelet-menetelmä DVP-6 J. Teuhola 2007
MPEG-4: Video-olion (VO) koodaus Mielivaltaisen muotoinen olio 2D-kuva tietyllä hetkellä = VO-taso (VO-plane = VOP) VOPin määrittely: Muoto (maski)+ tekstuuri (luminanssi & krominanssi) Koodauksessa määriteltävä lisäksi liike Suorakulmainen VOP: koodaus MPEG-2 Muut muodot löydetään segmentointi- tai chroma key –tekniikoilla. DVP-6 J. Teuhola 2007
MPEG-4: Video-olion (VO) koodaus (jatk.) Koodaustehtäviä: Muodon koodaus Liikekompensaatio (= ennustus) Ennustusvirheiden DCT-koodaus Koodaus makroblokkitasolla, sijoitettuna objektia rajaavan suorakaiteen (MBR = Minimum Bounding Rectangle) sisälle Kolme VOP-tyyppiä (vrt. MPEG-1 ja -2): I-VOP, P-VOP ja B-VOP DVP-6 J. Teuhola 2007
MPEG-4: Liikekompensaatio Globaali liikevektori koko VOPille Kullekin makrolohkolle lokaali liikevektori: Vain P- ja B-VOPeille Perustuu kolmen naapurilohkon perusteella tehtävään ennustukseen Ennustamisvirheen vaiht.mittainen koodaus Pikseliarvoja ekstrapoloidaan tarvittaessa ennustusolion reunoilta ulospäin Tarkkuus 1/4 pikseliä Forward, backward, interpolaatio tai 'direct' DVP-6 J. Teuhola 2007
MPEG-4: Tekstuurin koodaus I-VOPit ja P-/B-VOPien ennustusvirheet DCT-koodaus: Makrolohkossa 4 kpl 8 x 8 luminanssimatriisia 2 kpl 8 x 8 krominanssimatriiseja (U, V) Jos makrolohko osittain VOPin ulkopuolella, niin I-VOPeille ekstrapolointi P/B-VOPeille ennustusvirhe = 0 DVP-6 J. Teuhola 2007
MPEG-4: Tekstuurin koodaus (jatk.) Vaihtoehto: muotoon mukautuva (shape-adaptive) SA-DCT: Tehokkaampi koodaus, mutkikkaampi toteutus Sisälohkot kuten MPEG-2 VOPin ulkopuolella olevia lohkoja ei koodata Lisäksi variaatioita. DVP-6 J. Teuhola 2007
MPEG-4: Muodon koodaus Bittikartta: 0 = sisällä, 1 = ulkona Koodaus 16 x 16 –lohkoina Kokonaan muodon sisällä/ulkona olevat lohkot on helppo koodata. Osittain sisällä olevat lohkot koodataan kontekstipohjaisella aritmeettisella kooderilla (I-VOPille konteksti = 10 jo käsiteltyä pikseliä ylävasemmalla); reunoilla kontekstiin mukaan naapurilohkojen pikseleitä DVP-6 J. Teuhola 2007
MPEG-4: Muodon koodaus (jatk.) P- ja B-VOPeille kontekstin muodostavat ennustava muotomatriisi ja nykyisen tunnetut naapurit; koodaus kontekstipohjaisella aritmeettisella kooderilla. Voidaan käyttää myös häviöllistä muodonkoodausta Osittainen läpinäkyvyys (alfa-kanava) koodataan samalla tavalla kuin tekstuuri. DVP-6 J. Teuhola 2007
MPEG-4: Sprite-koodaus Sprite = vakiosisältöinen video-olio, joka koodataan ja lähetetään kerran, esim. taustakuva Sprite-oliota on mahdollista panoroida ja zoomata dekoodauspäässä, jos sen kuva-ala on riittävän laaja. DVP-6 J. Teuhola 2007
MPEG-4: Verkkorakenteisten olioiden koodaus Mesh-rakenne Olio jaetaan monikulmioihin (yl. kolmioihin) 2D (grafiikassa yleisemmin 3D). Solmupisteet toimivat referenssipisteinä esitettäessä olion liikettä kuvasta toiseen. Liikevektori = ero edellisen solmupisteen liikevektoriin nähden. Ns. warping-tekniikka monikulmioiden tekstuureille DVP-6 J. Teuhola 2007
MPEG-4: Verkkorakenteisten olioiden koodaus (jatk.) Alkutilanne: tasainen tai mielivaltainen (Delanay) kolmiointi Olioesiintymä = MOP (Mesh Object Plane) Solmupisteiden valinta ja pisteiden seuranta eivät kuulu standardin piiriin. Keyframe-tekniikka: solmupisteiden paikat interpoloidaan välikuvissa. Vähentää lohkomaisuutta alhaisilla siirtonopeuksilla. DVP-6 J. Teuhola 2007
MPEG-4: Mallipohjainen koodaus Tukee erittäin alhaista siirtonopeutta Kasvojen mallinnus: Pään geometria + tekstuuri FDP/FAP = Face Definition/Animation Param. Kiintopisteiden (82 kpl) liikuttelu luo ilmeitä 68 perusanimaatiota Korkean tason ilmauksia: ilo, suru, pelko, ... Suun liikkeet, puheanimaatio Vastaavasti vartalon (body) mallinnus DVP-6 J. Teuhola 2007
MPEG-4: Kiinteän tekstuurin koodaus Menetelmä: 2D-wavelet-muunnos Myös muotoon sopeutuva (shape-adaptive) variaatio mahdollinen Jako taajuuskaistoihin; alhaisimman taajuuden koodaus naapuriarvojen eroina (DPCM-menetelmä), muut kaistat zerotree-tekniikalla (nollasta poikkeavat arvot) Lopuksi aritmeettinen koodaus Spatiaalinen tai SNR-skaalautuva DVP-6 J. Teuhola 2007
MPEG-4: Skaalautuvuus Bittivirta koostuu perus- ja tarkennusker-roksista, joista jälkimmäiset optionaalisia Sopeutuu Eri siirtonopeuksiin Verkon ruuhkaisuuteen Eri näyttöresoluutioihin Dekooderin tasoon. DVP-6 J. Teuhola 2007
MPEG-4: Skaalautuvuus (jatk) Skaalautuvuustyyppejä: Kehyspohjaiset: Temporaalinen (kuvia/sek) Spatiaalinen (pikselimäärä) Laatu (kvantisointitarkkuus) Oliopohjainen Tärkeät oliot muita tarkemmin DVP-6 J. Teuhola 2007
MPEG-4: Virhesietoisuus Sopeutuminen epäluotettaviin siirtoteihin Pääkategoriat: Uudelleensynkronointi: makrolohkopake-teissa tunnistusbittijono Tiedon partitiointi: Liikevektorit ja tekstuurit erikseen; tukee virheiden ’kätkemistä’ (ei standardoitu) Käänteinen vaihtelevanmittainen koodaus: dekoodaus kumpaan suuntaan tahansa. DVP-6 J. Teuhola 2007
MPEG-4: Profiilit Koko välineistön toteutus kaikissa dekoodereissa ei mielekästä Standardi määrittelee osajoukkoja eli profiileja, mm. seuraavia ryhmiä: Luonnollinen video (simple, core, main, ... ; 15 kpl) Synteettinen video (basic animated texture, simple face animation, simple face and body animation) Hybridi DVP-6 J. Teuhola 2007
Muita videostandardeja: ITU-T H.264 Maaliskuu 2003 Väite: puolet tehokkaampi kuin MPEG-2 Monipuolisempi liikekompensaatio kuin aiemmissa standardeissa Approksimatiivinen DCT-muunnos 4 x 4-lohkoille Erilaisia vaihtelevanmittaisia loppukoodaus-tekniikoita, mm. kontekstipohjainen aritmeettinen koodaus. DVP-6 J. Teuhola 2007
H.264: Profiilit Baseline: Videoneuvottelut, langattomat verkot Main: TV-broadcast, videotallennus Extended: Streaming media Myöhemmin lisätty useita high-profiileja, mm. HD-tasoista videota varten, sekä tiheämpää väriotantaa (4:2:2, 4:4:4) ja isompaa bittimäärää/pikseli varten. DVP-6 J. Teuhola 2007
H.264: Piirteitä Tarjoaa monipuoliset ennustusmahdollisuudet sekä kuvien kesken (liikekompensaatio) että niiden sisällä (spatiaalinen redundanssi). Koodauksessa pyritty sekä pakkaus-tehokkuuteen että nopeuteen. Lohkomaisuuden poistosuodatin mukana standardissa. Yleinen havainto: Niin paljon vaihtoehtoja, että tehokkaan kooderin toteutus on suuri haaste. DVP-6 J. Teuhola 2007
H.264: Piirteitä Kuva koostuu makrolohkoista (16 x 16), joita ryhmitellään vaihtelevan kokoisiksi siivuiksi eli viipaleiksi (slice): I-siivu vain I/P-makrolohkoja P-siivu: I/P/skipped-makrolohkoja B-siivu: I/B-makrolohkoja SI-siivu: Tuki streamin vaihdolle (extended profile) SP-siivu: Tuki streamin vaihdolle (extended profile) Siivuille erilaisia ryhmittelytapoja ja koodaus-järjestyksiä (virheiden spatiaalinen rajoitt.). DVP-6 J. Teuhola 2007
H.264: Makrolohkotyypit I-lohko: Ei liikekompensaatiota; framen sisäinen (intra-) ennustus ja koodaus joko koko 16x16- tai 4x4-osalohkoille. P-lohko: Liikekompensaatio yhden referenssikuvan perusteella; mahdolliset osalohkokoot (kullekin liikevektori): 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 (chroma-komponenteille puolet näistä). B-lohko: 1 tai 2 referenssilohkoa. DVP-6 J. Teuhola 2007
H.264: Liikekompensaatio Puskurissa pidetään useita aiemmin koodattuja referenssikuvia, joita on kahta tyyppiä: Lyhytaikaisia (short-term); liukuva ikkuna Pitkäaikaisia (long-term); poisto eksplisiittisesti Baseline-profiilissa vain yksi referenssikuvalista, main-profiilissa kaksi. Makrolohkon koodaus sisältää referenssikuvan indeksin. DVP-6 J. Teuhola 2007
H.264: Liikevektoreista Tarkkuus ¼ pikseliä (luma; chromalle 1/8 piks.) Kokonaisindeksien kohdalla käytetään todellisia referenssipikseleitä Puolikaspikselien kohdalla interpolaatio 3+3 naapurin suhteen (ensin toisen, sitten toisen dimension suhteen). Neljännespikseleille interpolaatio kahden naapurin (todellisen tai interpol.) keskiarvona Chroma: Lineaarinen interpolaatio 4:stä todellisesta naapuripikselistä. DVP-6 J. Teuhola 2007
H.264: Liikevektorien koodaus Läheisten lohkojen liikevektorit korreloivat. Lasketaan ennustevektori jo koodattujen naapurivektorien perusteella. Lasketaan ennusteen ja todellisen vektorin erotus ja koodataan se (paitsi skipped-lohkolle kopioidaan suoraan referenssilohkosta). B C B C A mediaani(A,B,C) A A DVP-6 J. Teuhola 2007
H.264: Kuvan sisäinen ennustus Tehdään intra-moodissa 4 x 4 –lohkot: 9 vaihtoehtoista ennustusmoodia 16 x 16 –lohkot: 4 vaihtoehtoista enn.moodia chroma-lohkot: 4 vaihtoehtoista enn.moodia Tai: pikselien koodaus suoraan ilman ennustusta Ennustustapa pitää signaloida dekooderille. Koska naapurien ennustustavat korreloivat, niin ennustustapa ennustetaan naapureista! DVP-6 J. Teuhola 2007
H.264: Taajuusmuunnos 4 x 4 –lohkoille (koodataan erotus ennusteesta) Intra-koodatut 16 x 16 –lohkot ja 8 x 8 chroma-lohkot: Hadamard-muunnos 4 x 4 -osille Muut: DCT-pohjainen muunnos 4 x 4 -osille: Kokonaislukuaritmetiikka (16-bittinen) Käänteismuunnoksen tulos yksikäsitteinen Voidaan pääosin suorittaa yhteenlaskuin ja shiftein Skaalauskerroin integroitu kvantisoijaan DVP-6 J. Teuhola 2007
4 x 4 –DCT-muunnos missä DVP-6 J. Teuhola 2007
H.264: 4 x 4 -DCT-approksimaatio missä ja on tulo alkioittain eli kertoimien skaalaus Huomaa: kakkosella kertominen = shift left DVP-6 J. Teuhola 2007
H.264: Kvantisointi Korkeat taajuudet eivät niin ’tärkeitä’ karkeampi kvantisointi H.264 tarjoaa 52 kvantisointitasoa, arvot taulukoitu, indeksi määräytyy tilanteen mukaan (kooderi voi valita). Kvantisointiarvot yhdistetään DCT-muunnoksen skaalausmatriisiin; laskenta järjestetty siten, että tarvitaan yksi kertolasku & shift per kerroin DVP-6 J. Teuhola 2007
H.264: Entropiakoodaus Eri tilanteissa käytössä kaksi vaihtoehtoa: Kontekstiriippuva aritmeettinen koodaus Eksponentiaalinen Golomb-koodaus: 0 0 1 010 2 011 3 00100 4 00101 5 00110 6 00111 ... DVP-6 J. Teuhola 2007
H.264: Lohkomaisuuden poistosuodatin Suoritetaan kooderissa ja dekooderissa ennen lohkon käyttöä ennustuksessa (intra-koodauksessa ennustajat suodattamattomia) Suodatusteho riippuu lohkorajan tyypistä (makro-/pienempi), sävyjen gradientin suuruudesta, kvantisointiparametrista Vaikutus max 3 pikselin päähän lohkorajasta Suodatin ’kytketään pois’ selkeiden sävyrajojen kohdalla. DVP-6 J. Teuhola 2007
H.264: Main-profiili Lähes superjoukko baseline-profiilista, mutta: Ei siivuryhmiä, ei mielivaltaista siivujärjestystä, ei redundantteja siivuja Tarkoitettu TV:hen ja videon tallennukseen. B-tyyppisen siivun makrolohko sallii kaksi ennustelohkoa: 2 ed., 2 tul. tai 1 ed. ja 1 tuleva. Short-term- ja long-term-referenssikuvat eri listoissa; molemmissa voi olla edeltäviä ja tulevia kuvia (jo koodattu). B-prediction = keskiarvo kahdesta ennustajalohkosta. DVP-6 J. Teuhola 2007
H.264: Extended-profiili Tarkoitettu streaming-sovelluksiin Baselinen laajennus B-siivut käytössä Painotettu ennustus SP- ja SI-siivut mahdollistavat vaihtamisen koodatusta streamista toiseen, sekä VCR-tyyppisiä toimintoja (random access). SP tukee tehokasta siirtymistä toiseen samankaltaiseen streamiin. DVP-6 J. Teuhola 2007
Muita videonpakkausstandardeja: VC-1 Virallisesti SMPTE 421M (SMPTE =Society of Motion Picture and Television Engineers) Virallinen julkistus huhtikuussa 2006 Vaihtoehto H.264:lle; samantasoinen laatu. Taustalla Microsoft Windows Media 9 codec; dekooderi sisältyy Windows Vistaan HD DVD ja Blue-ray –soittimien pystyttävä toistamaan VC-1:tä DCT-pohjainen, hyvä tuki lomitetulle videolle, useita profiileja. DVP-6 J. Teuhola 2007
MPEG-audio Layer I, II ja III (= MP1, MP2, MP3) Asteittain tehokkaampia koodauksia Geneerisiä: eivät oleta äänen tyypiltä mitään Hyödyntävät ihmisen kuuloaistin vajavaisuutta Näytteenottotaajuudet 32, 44.1 ja 48 KHz Jako kehyksiin (384 tai 1152 näytettä) DVP-6 J. Teuhola 2007
MPEG-audio (jatk.) Kanavamoodit Datanopeudet 32 ... 448 Kbps Yksikanavamoodi Kaksikanavamoodit (koodataan erikseen) Stereomoodi (osa koodista yhteistä) Yhteisstereomoodi (korrelaatioiden hyväksikäyttö) Datanopeudet 32 ... 448 Kbps Pakkaussuhde käytännössä 1:4 ... 1:12 Virheenkorjaus (CRC = Cyclic Redundancy Code); virheen kätkentä jotenkin DVP-6 J. Teuhola 2007
MPEG-audio: Alikaistat Alikaistajako taajuusalueisiin, toteutus ali-, yli- tai kaistanpäästösuodattimilla Desimointi: Pudotetaan alikaistan näytemäärää siten, että ne yhdessä vastaavat alkuperäistä näytemäärää Vaarana aliasointi (’laskostuminen’). DVP-6 J. Teuhola 2007
MPEG-audio: Psykoakustinen mallinnus Käyttää hyväkseen ihmiskuulon peitto-ominaisuuksia Taajuuspeitto: Voimakas ääni tietyllä taajuudella rajoittaa läheisten taajuuksien kuuluvuutta Aikapeitto: Hieman ennen voimakasta ääntä ja pidempään sen jälkeen heikommat äänet eivät kuulu. Peittovaikutukset myös summautuvat. DVP-6 J. Teuhola 2007
MP3 = MPEG Layer III Yleinen musiikin jakeluformaatti Pakkausvaiheet: Alikaistajako 32 tasalevyiseen kaistaan Modifioitu DCT-muunnos (1-ulott.) Nopea Fourier-muunnos ja psykoakustinen mallinnus Kvantisointi (epätasavälinen) Huffman-koodaus CRC-koodaus (cyclic redundancy check); virheiden havaitseminen DVP-6 J. Teuhola 2007
Muita audionkoodausmenetelmiä Olemassa lukuisa joukko, esim. AAC (Advanced Audio Coding; MPEG-2 ja -4) WMA = Windows Media Audio, osa Windows Media Playeria Real Audio (RA), yksi vanhimmista QuickTime audio Synteettisen audion koodaus Musiikki: MIDI, SA (Structured Audio/MPEG-4) Puhe: TTS (Text-TO-Speech / MPEG-4) DVP-6 J. Teuhola 2007