> rice | adaptiv | komprimering <

// Rice-koding – Adaptiv heltallskompresjon med justerbar parameter

0 tegn
0 tegn

>> funksjoner

[ADAPTIV]

Justerbar parameter

Juster k for å optimalisere ulike datafordelinger.

[EFFEKTIV]

Geometriske data

Optimalt for data med geometrisk eller eksponentiell fordeling.

[ENKEL]

Rask koding

Enkle divisjons- og restoperasjoner for høy ytelse.

>> teknisk info

Hvordan Rice-koding fungerer

Rice-koding deler hvert heltall n på 2^k for å få kvotient q og rest r. Kvotienten kodes unært (q ére etterfulgt av en null), og resten kodes i k binærbiter. Dette gir en variabel lengdekode som tilpasser seg datafordelingen via k-parameteren.

Rice-kodingseksempel (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 biter, flere binærbiter
Mindre k: flere unære biter, færre binærbiter

Hvorfor bruke Rice-koding?

  • Tilpasser seg datafordelingen
  • Enkel å implementere
  • Rask koding og dekoding
  • God for sensordata
  • Effektiv for små heltall

>> ofte stilte spørsmål

Hva er Rice-koding?

Rice-koding er en entropikoding med variabel lengde som er spesielt effektiv for geometriske fordelinger. Det er et spesialtilfelle av Golomb-koding der divisor M er begrenset til potenser av 2 (M = 2^k), noe som gir raske implementasjoner med bitoperasjoner.

Hvordan velger jeg k-parameteren?

Den optimale k-verdien avhenger av datafordelingen. For data med gjennomsnitt μ gjelder omtrent k ≈ log₂(μ × ln(2)). Små k (0–2) fungerer godt for veldig små tall, mens større k (4–8) er bedre for data med større verdier. Bruk analysefunksjonen for å finne optimal k for dine data.

Rice vs Golomb-koding?

Rice-koding er en undergruppe av Golomb-koding der M = 2^k. Denne begrensningen gjør Rice raskere (bit-skift i stedet for divisjon), men noen ganger litt mindre optimal. Golomb kan velge vilkårlige M-verdier for bedre kompresjon, mens Rice bytter bort litt effektivitet for hastighet.

Hvor brukes Rice-koding?

Rice-koding brukes mye i tapsfri lydkompresjon (FLAC, ALAC), bildekompresjon (JPEG-LS) og sensordata med geometriske fordelinger. Det er spesielt effektivt for små ikke-negative heltall med eksponentielt avtagende sannsynlighet.