// Exponential-Golomb – Standard-Code mit variabler Länge in der Videokompression
Wird in den Codecs H.264/AVC und H.265/HEVC verwendet.
Verschiedene k-Werte für unterschiedliche Verteilungen.
Eingebaute Abbildung für vorzeichenbehaftete Ganzzahlen.
Exp-Golomb-Codes der Ordnung k codieren eine nichtnegative Ganzzahl n wie folgt: 1) Addiere 1 zu n, um codeNum zu erhalten, 2) Teile durch 2^k, um Quotient q und Rest r zu bekommen, 3) Schreibe q Nullen, dann 1 und anschließend r in k Bits. Für k=0 entspricht dies Elias-Gamma. Für vorzeichenbehaftete Zahlen gilt das Mapping: n>0 → 2n-1, n≤0 → -2n.
Ordnung k=0 (Standard): 0 → 1 1 → 010 2 → 011 3 → 00100 Ordnung k=1: 0 → 10 1 → 11 2 → 010 3 → 011 Vorzeichenmodus (k=0): 0 → 1 (abbildet auf 0) 1 → 010 (abbildet auf 1) -1 → 011 (abbildet auf 2) 2 → 00100 (abbildet auf 3)
Exponential-Golomb-Codierung ist ein universeller Code mit variabler Länge, der in Videokompressionsstandards wie H.264 und H.265 intensiv eingesetzt wird. Er verallgemeinert die Elias-Gamma-Codierung mit einem Parameter k, der die Anpassung an verschiedene Datenverteilungen erlaubt.
k=0 (Standard-Exp-Golomb) eignet sich gut für kleine Ganzzahlen mit annähernd exponentieller Verteilung. Größere k-Werte sind besser für größere Zahlen oder gleichmäßigere Verteilungen. Videocodecs verwenden oft k=0 für Syntaxelemente und adaptives k für Residuen.
Exp-Golomb ist ideal für Video, weil: 1) die Implementierung in Hardware sehr einfach ist, 2) keine Nachschlagetabellen benötigt werden, 3) es gut zur statistischen Verteilung von Videodaten passt und 4) eine gute Kompression für Bewegungsvektoren und Transformationskoeffizienten liefert.
Im Vergleich zu Huffman: einfacher und tabellenlos, aber weniger optimal. Im Vergleich zur arithmetischen Codierung: deutlich einfacher, jedoch mit geringerer Kompression. Exp-Golomb bietet einen guten Kompromiss aus Einfachheit und Effizienz und eignet sich hervorragend für Echtzeit-Videocodierung.