Exponentiell Golomb-kod

En exponentiell Golomb-kod av ordningen k  är en universell kod parametriserad av ett heltal k . Designad av Solomon Golomb . För att koda ett icke-negativt tal till en exponentiell Golomb-kod av ordningen k , kan du använda följande metod:

  1. Ta talet N i binär kod, utan de sista k siffrorna. Lägg till 1 till det (aritmetiskt): N \ u003d N + 1. Skriv ner det resulterande N.
  2. Räkna antalet C -bitar i N .
  3. Subtrahera en från C : C \u003d C - 1. Skriv C nollbitar framför det valda talet N.

För ordningen k = 0 ser koden ut så här:

0 => 1 => 1 1 => 10 => 010 2 => 11 => 011 3 => 100 => 00100 4 => 101 => 00101 5 => 110 => 00110 6 => 111 => 00111 7 => 1000 => 0001000 8 => 1001 => 0001001 ...

Den exponentiella Golomb-koden för k = 0 används i H.264 och MPEG-4 AVC -videokomprimeringsstandarderna , där det också finns möjlighet att koda tecken med tecken genom att tilldela värdet 0 till nyckelordet '0' i binär form och sedan tilldela kodord till ingångsvärden med ökande amplituder och variabla tecken.

Exponentiell Golomb-kod används också i Diracs okomprimerade videokodningsalgoritm .

För k = 0 är den exponentiella Golomb-kodningen densamma som Elias gammakod med samma nummer plus ett. Således kan den koda noll, medan Elias gammakod bara kan koda siffror större än noll.

Trots liknande namn är exponentiell Golomb-kodning endast något analog med Golomb-kodning , som är en typ av entropikodning , men inte en universell kod.

Se även

Länkar