kodieren | dekodieren | komprimieren

> rice | adaptive | compress <

// Rice-Codierung – Adaptive Ganzzahlkomprimierung mit einstellbarem Parameter

0 Zeichen
0 Zeichen

>> funktionen

[ADAPTIV]

Einstellbarer Parameter

Passe k an, um verschiedene Datenverteilungen optimal zu komprimieren.

[EFFIZIENT]

Geometrische Daten

Optimal für Daten mit geometrischer oder exponentieller Verteilung.

[EINFACH]

Schnelles Codieren

Einfache Division- und Restoperationen für hohe Geschwindigkeit.

>> technische details

Wie Rice-Codierung funktioniert

Bei der Rice-Codierung wird jede Ganzzahl n durch 2^k geteilt, um Quotient q und Rest r zu erhalten. Der Quotient wird in Unary codiert (q Einsen gefolgt von einer Null) und der Rest in k Binärbits. So entsteht ein variabler Code, der sich über den Parameter k an die Datenverteilung anpasst.

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

Größeres k: weniger Unary-Bits, mehr Binärbits
Kleineres k: mehr Unary-Bits, weniger Binärbits

Warum Rice-Codierung verwenden?

  • Passt sich der Datenverteilung an
  • Einfach zu implementieren
  • Schnelles Codieren und Dekodieren
  • Gut für Sensordaten
  • Effizient für kleine Ganzzahlen

>> häufige fragen

Was ist Rice-Codierung?

Rice-Codierung ist ein Entropie-Codierverfahren mit variabler Länge, das besonders effizient für geometrische Verteilungen ist. Es ist ein Spezialfall der Golomb-Codierung, bei dem der Divisor M auf Potenzen von 2 (M = 2^k) beschränkt ist, was schnelle Implementierungen mit Bit-Operationen ermöglicht.

Wie wähle ich den k‑Parameter?

Der optimale k-Wert hängt von der Datenverteilung ab. Für Daten mit Mittelwert μ gilt näherungsweise k ≈ log₂(μ × ln(2)). Kleine k (0–2) funktionieren gut für sehr kleine Zahlen, größere k (4–8) für größere Werte. Nutze die Analysefunktion, um das optimale k für deine Daten zu finden.

Rice vs. Golomb-Codierung?

Rice-Codierung ist ein Spezialfall der Golomb-Codierung, bei dem M = 2^k gilt. Dadurch kann Rice-Codierung schneller sein (Bit-Shift statt Division), ist aber eventuell etwas weniger optimal. Golomb kann beliebige M-Werte wählen, während Rice etwas Kompressionseffizienz gegen Geschwindigkeit tauscht.

Wo wird Rice-Codierung eingesetzt?

Rice-Codierung wird häufig in verlustfreier Audiokompression (FLAC, ALAC), Bildkompression (JPEG-LS) und Sensordaten mit geometrischer Verteilung eingesetzt. Besonders effektiv ist sie für kleine, nichtnegative Ganzzahlen mit exponentiell abnehmender Wahrscheinlichkeit.