Niet echt, het begrip van het menselijk zicht is al vrij lang begrepen en is nu niet heel veel beter dan in de tijd van JPEG en MPEG2: in die tijd werd YUV (en YCbCr) en 4:2:2 subsampling al geïntroduceerd, wat de voornaamste tactieken zijn om de eigenschappen van het menselijk oog uit te buiten om lossy compressie er zo goed mogelijk te doen uitzien.
De vooruitgang in videocompressie komt er voor 95% door de vooruitgang in hardware: hardware wordt krachtiger en goedkoper, dus het wordt doenbaar om ongeveer dezelfde technieken uitgebreider toe te passen.
Voorbeelden:
1. In HEVC/H.265 wordt het gebruik van B-frames aangeraden, in AVC/H.264 was dat niet het geval. B-frames zijn frames die informatie uit zowel het vorige als het volgende frame gebruiken: enkel het residu tegenover de twee omliggende beelden wordt opgeslagen. In MPEG2 en H.264 werden er voornamelijk P-frames gebruikt: frames die informatie uit het vorige frame gebruiken (maar niet het volgende). B-frames waren toen al deel van de spec, maar in MPEG2 zijn er amper gebruikte profielen die B-frames gebruiken, bij AVC was dat al meer het geval, bij HEVC bevatten de meest gangbare profielen B-frames.
---> edit: geen nieuw inzicht dus, gewoon een bredere toepassing die nu mogelijk is door krachtigere hardware.
2. HEVC verdeelt het beeld in coding units (in een boomstructuur genaamd Coding Tree Units), blokken van variabele grootte (8x8/16x16/32x32/64x64 pixels). Grote blokken zijn erg efficiënt voor stukken beeld waar weinig detail in zit, zoals blauwe lucht of een kale muur. Door slechts een klein deel van het gehele beeld -de delen met veel detail (zoals een vliegtuig dat door die blauwe lucht vliegt, of een poster op die kale muur)- met kleinere blokgroottes te encoderen, en de andere delen met grotere blokken, wordt er echt enorm veel bandbreedte bespaard. De prediction units (een onderdeel van de blokstructuur) kunnen zelfs vierkant of rechthoekig zijn.
Deze techniek werd al zeer beperkt gebruikt in AVC/H.264: daar hebben de prediction blocks een variabele grootte van 4x4 tem 16x16 pixels. Maar de macroblock grootte was vast (16x16).
---> Toen wist men echt al dat variabele blokgroottes erg efficiënt waren, maar men kon ze nog niet toepassen omdat dit simpelweg te duur was in termen van complexiteit: de variabele blokgrootte maakt het werk van de decoder ingewikkelder, en de encoder heeft het al helemaal moeilijk want die moet uitzoeken voor elk deel van eht beeld of het nu met een klein of een groot blok moet worden gecodeerd.
Verdere verbeteringen komen van in-loop fikters: filters die de beeldkwaliteit subjectief verbeteren maken nu deel uit van het encoding process: de encoder kijkt welke parameters voor een bepaalde filter subjectief het best zijn en geeft die parameters mee in de stream. Enkele van deze filters zijn nieuw en dus wel gebaseerd op recent onderzoek naar subejctieve/onbjectieve beeldkwaliteit, maar de meeste (zoals de belangrijkste: de deblocking filter die randen van macroblokken vervaagt) bestonden al. Wederom: ze worden nu in de spec gebruikt omdat de hardware tegenwoordig krachtig genoeg is, niet omdat we erg veel nieuwe dingen ontdekt hebben.
Kortom: de vooruitgang is echt niet een resultaat van een beter begrip van het menselijk zicht, maar van de grotere hoeveelheid beschikbare rekenkracht en lagere kost van hardware (de lagere kost maakt het betaalbaar een complexere encoder/decoder chip te maken).
De volgende standaard, H.266, zal denk ik dezelfde trend volgen: dezelfde principes, breder toegepast. Zo is de kans reeel, met de komst van 8K en 16K beelden, dat de variabele blokgrootte wordt uitgebreid tot 128x128 en zelfs 256x256 pixels. En nog een veelbelovende optie is het gebruik van niet-rechthoekige blokstructuren, waarbij blokken in bepaalde gevallen driehoekig kunnen zijn.
Meer over I/P/B frames
Meer over de blokstructuur van HEVC.
[Reactie gewijzigd door kiang op 12 december 2014 15:54]