// Exponential-Golomb – standaard variabele-lengtecode voor videocompressie
Gebruikt in de codecs H.264/AVC en H.265/HEVC.
Verschillende k-waarden voor verschillende verdelingen.
Ingebouwde mapping voor gehele getallen met teken.
Exp-Golomb-codes van orde k coderen een niet-negatief geheel getal n als volgt: 1) Tel 1 bij n op om codeNum te krijgen, 2) Deel door 2^k om quotient q en rest r te krijgen, 3) Schrijf q nullen, dan 1 en vervolgens r in k bits. Voor k=0 is dit gelijk aan Elias-Gamma. Voor gehele getallen met teken geldt de mapping: n>0 → 2n-1, n≤0 → -2n.
Orde k=0 (standaard): 0 → 1 1 → 010 2 → 011 3 → 00100 Orde k=1: 0 → 10 1 → 11 2 → 010 3 → 011 Modus met teken (k=0): 0 → 1 (mapt naar 0) 1 → 010 (mapt naar 1) -1 → 011 (mapt naar 2) 2 → 00100 (mapt naar 3)
Exponential-Golomb-codering is een universele code met variabele lengte die uitgebreid wordt gebruikt in videocompressiestandaarden zoals H.264 en H.265. Hij generaliseert Elias-Gamma-codering met een parameter k waarmee kan worden aangepast aan verschillende gegevensverdelingen.
k=0 (standaard Exp-Golomb) werkt goed voor kleine gehele getallen met een ongeveer exponentiële verdeling. Hogere k-waarden zijn beter voor grote getallen of meer uniforme verdelingen. Videocodecs gebruiken vaak k=0 voor syntactische elementen en adaptief k voor residuen.
Exp-Golomb is ideaal voor video omdat: 1) het eenvoudig in hardware te implementeren is, 2) er geen look-up-tabel nodig is, 3) het goed past bij de statistische verdeling van videogegevens, 4) het een goede compressie biedt voor bewegingsvectoren en transformatiecoëfficiënten.
Vergeleken met Huffman: eenvoudiger, zonder tabellen, maar minder optimaal. Vergeleken met arithmetische codering: veel eenvoudiger, maar met lagere compressie. Exp-Golomb biedt een goed compromis tussen eenvoud en efficiëntie, perfect voor real-time videocodering.