> exp | golomb | h264 <
// Exponential-Golomb – standardowy kod o zmiennej długości w kompresji wideo
Standard wideo
Używany w kodekach H.264/AVC i H.265/HEVC.
Wiele rzędów
Różne wartości k dla różnych rozkładów.
Obsługa liczb ze znakiem
Wbudowane odwzorowanie liczb całkowitych ze znakiem.
>> informacje techniczne
Jak działa kodowanie Exp-Golomb:
Kody Exp-Golomb rzędu k kodują nieujemną liczbę całkowitą n w następujący sposób: 1) Dodaj 1 do n, aby otrzymać codeNum, 2) Podziel przez 2^k, aby otrzymać iloraz q i resztę r, 3) Zapisz q zer, następnie 1, a potem r w k bitach. Dla k=0 jest to równoważne z kodem Eliasa Gamma. Dla liczb ze znakiem mapowanie jest następujące: n>0 → 2n-1, n≤0 → -2n.
Przykłady Exp-Golomb:
Rząd k=0 (standard): 0 → 1 1 → 010 2 → 011 3 → 00100 Rząd k=1: 0 → 10 1 → 11 2 → 010 3 → 011 Tryb ze znakiem (k=0): 0 → 1 (mapuje na 0) 1 → 010 (mapuje na 1) -1 → 011 (mapuje na 2) 2 → 00100 (mapuje na 3)
Dlaczego warto używać Exp-Golomb:
- ▸Elementy składni H.264/H.265
- ▸Kodowanie wektorów ruchu
- ▸Poziomy współczynników
- ▸Prosta implementacja sprzętowa
- ▸Dopasowanie do rozkładu danych
>> najczęstsze pytania
Czym jest kodowanie Exp-Golomb?
Exponential-Golomb to uniwersalny kod o zmiennej długości szeroko stosowany w standardach kompresji wideo, takich jak H.264 i H.265. Uogólnia kod Eliasa Gamma z parametrem k, który pozwala dostosować się do różnych rozkładów danych.
Jak wybrać rząd k?
k=0 (standardowy Exp-Golomb) sprawdza się dla małych liczb całkowitych o rozkładzie zbliżonym do wykładniczego. Większe wartości k są lepsze dla większych liczb lub bardziej równomiernych rozkładów. Kodeki wideo często używają k=0 dla elementów składni i adaptacyjnego k dla reszt.
Dlaczego używa się go w wideo?
Exp-Golomb jest idealny do wideo, ponieważ: 1) jest prosty do implementacji w sprzęcie, 2) nie wymaga tablic wyszukiwania, 3) dobrze odpowiada statystycznemu rozkładowi danych wideo, 4) zapewnia dobrą kompresję dla wektorów ruchu i współczynników transformaty.
Exp-Golomb vs inne kody?
W porównaniu z Huffmanem: prostszy, bez tablic, ale mniej optymalny. W porównaniu z kodowaniem arytmetycznym: znacznie prostszy, lecz o mniejszym stopniu kompresji. Exp-Golomb stanowi kompromis między prostotą a efektywnością, idealny do kodowania wideo w czasie rzeczywistym.