> rice | adaptief | compressie <
// Rice-codering – Adaptieve gehele-getalcompressie met instelbare parameter
>> functies
Instelbare parameter
Stel k af om verschillende gegevensverdelingen te optimaliseren.
Geometrische data
Optimaal voor data met een geometrische of exponentiële verdeling.
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.