coderen | decoderen | comprimeren

> rice | adaptief | compressie <

// Rice-codering – Adaptieve gehele-getalcompressie met instelbare parameter

0 tekens
0 tekens

>> functies

[ADAPTIEF]

Instelbare parameter

Stel k af om verschillende gegevensverdelingen te optimaliseren.

[EFFICIËNT]

Geometrische data

Optimaal voor data met een geometrische of exponentiële verdeling.

[EENVOUDIG]

Snelle codering

Eenvoudige deel- en restbewerkingen voor hoge snelheid.

>> technische info

Hoe Rice-codering werkt

Bij Rice-codering wordt elk geheel getal n gedeeld door 2^k om quotiënt q en rest r te verkrijgen. Het quotiënt wordt in unair gecodeerd (q enen gevolgd door een nul) en de rest in k binaire bits. Dit levert een variabele code op die zich via de parameter k aanpast aan de gegevensverdeling.

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

Grotere k: minder unair-bits, meer binaire bits
Kleinere k: meer unair-bits, minder binaire bits

Waarom Rice-codering gebruiken?

  • Past zich aan de gegevensverdeling aan
  • Eenvoudig te implementeren
  • Snelle codering en decodering
  • Geschikt voor sensordata
  • Efficiënt voor kleine gehele getallen

>> veelgestelde vragen

Wat is Rice-codering?

Rice-codering is een entropiecodering met variabele lengte die bijzonder efficiënt is voor geometrische verdelingen. Het is een speciaal geval van Golomb-codering waarbij de deler M beperkt is tot machten van 2 (M = 2^k), wat snelle implementaties met bitbewerkingen mogelijk maakt.

Hoe kies ik de k-parameter?

De optimale k-waarde hangt af van de verdeling van je data. Voor gegevens met gemiddelde μ geldt ongeveer k ≈ log₂(μ × ln(2)). Kleine k (0–2) werken goed voor zeer kleine getallen, terwijl grotere k (4–8) beter zijn voor data met grotere waarden. Gebruik de analysefunctie om de optimale k voor je data te vinden.

Rice vs Golomb-codering?

Rice-codering is een subset van Golomb-codering waarbij M = 2^k. Deze beperking maakt Rice sneller (bitshifts in plaats van deling), maar soms iets minder optimaal. Golomb kan elke M-waarde kiezen voor betere compressie, terwijl Rice een beetje efficiëntie inruilt voor snelheid.

Waar wordt Rice-codering gebruikt?

Rice-codering wordt veel gebruikt bij verliesloze audiocompressie (FLAC, ALAC), beeldcompressie (JPEG-LS) en sensordata met geometrische verdelingen. Het is bijzonder effectief voor kleine niet-negatieve gehele getallen met een exponentieel afnemende waarschijnlijkheid.