Obsah
CTU (Coding Tree Unit)
CTU (Coding Tree Unit), česky jednotka kódovacího stromu, je základní procesní a výpočetní blok používaný v moderních standardech pro kompresi videa, primárně ve formátu HEVC (H.265) a jeho nástupci VVC (H.266).
Tento koncept byl vyvinut jako přímá a mnohem efektivnější náhrada za tradiční „makrobloky“, které se po desetiletí používaly ve starších video kodecích jako MPEG-2 nebo populárním H.264/AVC. Zavedení CTU představuje jeden z nejdůležitějších technologických kroků, který umožnil plynulé streamování videa ve 4K a 8K rozlišení.
Proč CTU nahradilo makrobloky?
Historické kodeky (např. H.264) dělily obraz do pevné a rigidní sítě makrobloků o fixní maximální velikosti 16 × 16 pixelů. Pro starší rozlišení (jako SD nebo DVD) byla tato velikost dostačující.
S příchodem rozlišení 4K (Ultra HD) a větších obrazovek se však objevily obrovské jednolité plochy (například modrá obloha, černá tma nebo statická stěna), pro které je 16 × 16 pixelů neefektivně malý rozměr. Starý kodek musel takovou plochu zbytečně rozsekat na stovky malých bloků a každý zvlášť matematicky popsat, což plýtvalo obrovským množstvím datového toku.
CTU tento problém řeší tím, že umožňuje maximální velikost bloku zvětšit až na 64 × 64 pixelů (u HEVC) nebo dokonce 128 × 128 pixelů (u VVC). Obrovskou jednolitou plochu tak kodek popíše jako jeden velký celek.
Princip fungování (Kódovací strom)
Klíčovým slovem v názvu CTU je „strom“ (Tree). CTU není jeden fixní blok, ale flexibilní struktura zvaná „Quadtree“ (čtyřkový strom).
Pokud algoritmus narazí na složitou část obrazu plnou jemných detailů (např. textura tváře nebo tráva), dokáže velký blok 64 × 64 rozdělit na čtyři menší bloky o velikosti 32 × 32.
Pokud i v nich najde složité detaily, může každý z nich nezávisle rozdělit na další čtyři bloky (16 × 16) a ty případně znovu až na úroveň 8 × 8 pixelů. Tímto způsobem kodek dynamicky přiděluje výpočetní výkon a datový tok tam, kde je to skutečně potřeba – oblohu vyřeší jedním velkým blokem, zatímco detail obličeje popíše drobnou a velmi detailní mozaikou.
Vnitřní architektura CTU
Samotné CTU se během zpracování obrazu dále dělí na logické a matematické podjednotky, které mají specifické úkoly:
CU (Coding Unit - Kódovací jednotka): Jde o koncový „list“ kódovacího stromu. Je to základní jednotka, na které se kodek rozhoduje, zda obraz zakóduje pomocí predikce z předchozího snímku (Inter), nebo z okolních pixelů ve stejném snímku (Intra).
PU (Prediction Unit - Predikční jednotka): Každá CU může obsahovat jednu nebo více PU. Tato jednotka se stará o samotný odhad pohybu (Motion Estimation). Definuje, jak se pixely posunuly oproti předchozímu snímku a jaký je jejich vektor pohybu.
TU (Transform Unit - Transformační jednotka): Zde dochází k matematické kompresi. TU aplikuje na zbytková data (rozdíl mezi predikovaným a skutečným obrazem) prostorovou transformaci (typicky DCT - diskrétní kosinovou transformaci) a kvantování. Velikost TU je opět flexibilní, aby přesně kopírovala detaily obrazu.
Porovnání: Makroblok vs. CTU
| Parametr | Makroblok (H.264/AVC) | CTU (H.265/HEVC) |
|---|---|---|
| Maximální velikost bloku | 16 × 16 pixelů | 64 × 64 pixelů |
| Základní struktura dělení | Fixní (omezené sub-bloky) | Dynamická (Quadtree struktura) |
| Oddělení predikce a transformace | Svázané (přímo v makrobloku) | Zcela flexibilní (nezávislé PU a TU vrstvy) |
| Náročnost na hardware (kódování) | Střední | Extrémně vysoká |
| Efektivita úspory dat (Bitrate) | Standardní | Výrazně vyšší (úspora až 50 % dat) |
Vliv na hardwarové nároky
Ačkoliv CTU přináší obrovskou úsporu velikosti výsledného video souboru, platí se za to masivní výpočetní náročností. Analyzovat obraz, zkoušet všechny možné velikosti bloků (od 64×64 po 8×8) a hledat matematicky nejideálnější cestu „stromem“ pro každý jednotlivý snímek videa je proces, který vyžaduje specializované čipy (hardwarové enkodéry a dekodéry). Starší procesory bez nativní hardwarové akcelerace nezvládají video kódované přes CTU plynule zpracovávat.
Související pojmy: HEVC, H.264, Komprese videa, VVC, Kodek, Makroblok, Kvantování, Bitrate, DCT.
