// Exponential-Golomb – standardkod med variabel längd för videokomprimering
Används i H.264/AVC- och H.265/HEVC-codecs.
Olika k-värden för olika fördelningar.
Inbyggd avbildning för heltal med tecken.
Exp-Golomb-koder av ordning k kodar ett icke-negativt heltal n så här: 1) Lägg till 1 till n för att få codeNum, 2) Dela med 2^k för att få kvot q och rest r, 3) Skriv q nollor, sedan 1 och sedan r på k bitar. För k=0 är detta likvärdigt med Elias Gamma. För heltal med tecken används avbildningen: n>0 → 2n-1, n≤0 → -2n.
Ordning k=0 (standard): 0 → 1 1 → 010 2 → 011 3 → 00100 Ordning k=1: 0 → 10 1 → 11 2 → 010 3 → 011 Teckenläge (k=0): 0 → 1 (avbildas till 0) 1 → 010 (avbildas till 1) -1 → 011 (avbildas till 2) 2 → 00100 (avbildas till 3)
Exponential-Golomb är en universell kod med variabel längd som används i stor utsträckning i videokomprimeringsstandarder som H.264 och H.265. Den generaliserar Elias Gamma-kodning med en parameter k som gör det möjligt att anpassa sig till olika datafördelningar.
k=0 (standard Exp-Golomb) fungerar bra för små heltal med ungefär exponentiell fördelning. Högre k-värden är bättre för större tal eller mer jämna fördelningar. Videocodecs använder ofta k=0 för syntaxelement och adaptivt k för residualer.
Exp-Golomb är idealisk för video eftersom: 1) den är enkel att implementera i hårdvara, 2) inga uppslagstabeller krävs, 3) den passar bra till den statistiska fördelningen av videodata, 4) den ger bra kompression för rörelsevektorer och transformkoefficienter.
Jämfört med Huffman: enklare, utan tabeller, men mindre optimal. Jämfört med aritmetisk kodning: mycket enklare, men med lägre kompression. Exp-Golomb ger en bra balans mellan enkelhet och effektivitet och är perfekt för videokodning i realtid.