> rice | adaptiv | komprimer <

// Rice-kodning – Adaptiv heltalskomprimering med justerbar parameter

0 tegn
0 tegn

>> funktioner

[ADAPTIV]

Justerbar parameter

Justér k for at optimere forskellige datadistributioner.

[EFFEKTIV]

Geometriske data

Optimal til data med geometrisk eller eksponentiel fordeling.

[ENKEL]

Hurtig kodning

Enkle divisions- og restoperationer for høj ydeevne.

>> teknisk info

Hvordan Rice-kodning virker

Rice-kodning deler hvert heltal n med 2^k for at få kvotient q og rest r. Kvotienten kodes unært (q ettaller efterfulgt af et nul), og resten kodes i k binære bits. Dette giver en variabel længdekode, der tilpasser sig datadistributionen via k-parameteren.

Rice-kodningseksempel (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

Større k: færre unære bits, flere binære bits
Mindre k: flere unære bits, færre binære bits

Hvorfor bruge Rice-kodning?

  • Tilpasser sig datadistributionen
  • Let at implementere
  • Hurtig kodning og dekodning
  • God til sensordata
  • Effektiv til små heltal

>> ofte stillede spørgsmål

Hvad er Rice-kodning?

Rice-kodning er en entropikodningsmetode med variabel længde, der er særligt effektiv til geometriske fordelinger. Det er et specialtilfælde af Golomb-kodning, hvor divisoren M er begrænset til potenser af 2 (M = 2^k), hvilket muliggør hurtige implementationer med bitoperationer.

Hvordan vælger jeg k-parameteren?

Den optimale k-værdi afhænger af datadistributionen. For data med middelværdi μ gælder omtrent k ≈ log₂(μ × ln(2)). Små k (0–2) fungerer godt til meget små tal, mens større k (4–8) er bedre til data med større værdier. Brug analysefunktionen til at finde det optimale k for dine data.

Rice vs Golomb-kodning?

Rice-kodning er en undergruppe af Golomb-kodning, hvor M = 2^k. Denne begrænsning gør Rice hurtigere (bitshift i stedet for division), men til tider lidt mindre optimal. Golomb kan vælge vilkårlige M-værdier for bedre komprimering, mens Rice bytter lidt effektivitet for hastighed.

Hvor bruges Rice-kodning?

Rice-kodning bruges bredt i tabsfri lydkomprimering (FLAC, ALAC), billedkomprimering (JPEG-LS) og sensordata med geometriske fordelinger. Den er især effektiv til små ikke-negative heltal med eksponentielt faldende sandsynlighed.