> rice | adaptacyjne | kompresja <

// Kodowanie Rice’a – adaptacyjna kompresja liczb całkowitych z regulowanym parametrem

0 znaków
0 znaków

>> funkcje

[ADAPTACYJNE]

Regulowany parametr

Dostosuj k, aby zoptymalizować różne rozkłady danych.

[WYDAJNE]

Dane geometryczne

Optymalne dla danych o rozkładzie geometrycznym lub wykładniczym.

[PROSTE]

Szybkie kodowanie

Proste operacje dzielenia i reszty zapewniają wysoką wydajność.

>> informacje techniczne

Jak działa kodowanie Rice’a

Kodowanie Rice’a dzieli każdą liczbę całkowitą n przez 2^k, aby uzyskać iloraz q i resztę r. Iloraz jest kodowany unarnie (q jedynek zakończonych zerem), a reszta w k bitach binarnych. Tworzy to kod o zmiennej długości, który dopasowuje się do rozkładu danych poprzez parametr k.

Przykład kodowania Rice’a (k=2)

k=2, M=2^2=4

0 → q=0, r=0 → 0|00 → 000
1 → q=0, r=1 → 0|01 → 001
2 → q=0, r=2 → 0|10 → 010
3 → q=0, r=3 → 0|11 → 011
4 → q=1, r=0 → 10|00 → 1000
5 → q=1, r=1 → 10|01 → 1001
6 → q=1, r=2 → 10|10 → 1010
7 → q=1, r=3 → 10|11 → 1011
8 → q=2, r=0 → 110|00 → 11000

Większe k: mniej bitów unarnych, więcej binarnych
Mniejsze k: więcej bitów unarnych, mniej binarnych

Dlaczego warto używać kodowania Rice’a?

  • Dopasowuje się do rozkładu danych
  • Łatwe do zaimplementowania
  • Szybkie kodowanie i dekodowanie
  • Dobre dla danych z czujników
  • Wydajne dla małych liczb całkowitych

>> najczęstsze pytania

Czym jest kodowanie Rice’a?

Kodowanie Rice’a to metoda entropijnego kodowania o zmiennej długości, szczególnie wydajna dla rozkładów geometrycznych. Jest to szczególny przypadek kodowania Golomba, w którym dzielnik M jest ograniczony do potęg liczby 2 (M = 2^k), co umożliwia szybkie implementacje oparte na operacjach bitowych.

Jak wybrać parametr k?

Optymalna wartość k zależy od rozkładu danych. Dla danych o średniej μ przybliżenie wynosi k ≈ log₂(μ × ln(2)). Małe wartości k (0–2) sprawdzają się dla bardzo małych liczb, natomiast większe (4–8) są lepsze dla danych z większymi wartościami. Użyj funkcji analizy, aby znaleźć optymalne k dla swoich danych.

Rice vs kodowanie Golomba?

Kodowanie Rice’a jest podzbiorem kodowania Golomba, w którym M = 2^k. To ograniczenie sprawia, że Rice jest szybsze (przesunięcia bitowe zamiast dzielenia), ale czasem nieco mniej optymalne. Golomb może wybierać dowolne wartości M dla lepszej kompresji, podczas gdy Rice wymienia część efektywności na szybkość.

Gdzie stosuje się kodowanie Rice’a?

Kodowanie Rice’a jest szeroko stosowane w bezstratnej kompresji dźwięku (FLAC, ALAC), kompresji obrazów (JPEG-LS) oraz w danych z czujników o rozkładach geometrycznych. Jest szczególnie skuteczne dla małych, nieujemnych liczb całkowitych o wykładniczo malejącym prawdopodobieństwie.