> rice | adaptatif | compression <
// Codage Rice – Compression adaptative d'entiers avec paramètre ajustable
>> fonctionnalités
Paramètre ajustable
Ajustez k pour optimiser différentes distributions de données.
Données géométriques
Optimal pour des données à distribution géométrique ou exponentielle.
Codage rapide
Opérations simples de division et de reste pour de hautes performances.
>> informations techniques
Comment fonctionne le codage Rice:
Le codage Rice divise chaque entier n par 2^k pour obtenir le quotient q et le reste r. Le quotient est encodé en unaire (q uns suivis d'un zéro) et le reste en k bits binaires. Cela crée un code de longueur variable qui s'adapte à la distribution des données via le paramètre k.
Exemple de codage Rice (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 k plus grand : moins de bits unaires, plus de bits binaires k plus petit : plus de bits unaires, moins de bits binaires
Pourquoi utiliser le codage Rice ?:
- ▸S'adapte à la distribution des données
- ▸Facile à implémenter
- ▸Encodage/décodage rapides
- ▸Idéal pour les données de capteurs
- ▸Efficace pour les petits entiers
>> questions fréquentes
Qu'est-ce que le codage Rice ?
Le codage Rice est une méthode de codage entropique à longueur variable particulièrement efficace pour les distributions géométriques. C'est un cas particulier du codage Golomb où le diviseur M est restreint aux puissances de 2 (M = 2^k), ce qui permet des implémentations rapides basées sur les décalages de bits.
Comment choisir le paramètre k ?
La valeur optimale de k dépend de la distribution de vos données. Pour des données de moyenne μ, k optimal ≈ log₂(μ × ln(2)). Les petits k (0–2) fonctionnent bien pour des nombres très petits, tandis que les k plus grands (4–8) conviennent mieux aux valeurs plus élevées. Utilisez la fonction d'analyse pour trouver le k optimal pour vos données.
Rice vs codage Golomb ?
Le codage Rice est un sous-ensemble du codage Golomb où M = 2^k. Cette restriction rend Rice plus rapide (décalages de bits au lieu de divisions) mais parfois légèrement moins optimal. Golomb peut choisir n'importe quelle valeur de M pour une meilleure compression, tandis que Rice échange une partie de l'efficacité contre de la vitesse.
Où le codage Rice est-il utilisé ?
Le codage Rice est largement utilisé dans la compression audio sans perte (FLAC, ALAC), la compression d'images (JPEG-LS) et les données de capteurs avec des distributions géométriques. Il est particulièrement efficace pour les petits entiers non négatifs à probabilité décroissante exponentiellement.
// Exemple détaillé
| n | q | r | k=2 |
|---|---|---|---|
| 0 | 0 | 00 | 000 |
| 1 | 0 | 01 | 001 |
| 2 | 0 | 10 | 010 |
| 3 | 0 | 11 | 011 |
| 4 | 1 | 00 | 1000 |
| 5 | 1 | 01 | 1001 |
| 6 | 1 | 10 | 1010 |
| 7 | 1 | 11 | 1011 |
| 8 | 2 | 00 | 11000 |
// Exemples de code
Rice code with parameter k (Golomb code with M = 2^k) q = n >> k quotient, written as q ones followed by a zero r = n & (2^k - 1) remainder, written as k plain bits code = unary(q) + r k = 2, n = 9 -> q = 2, r = 01 -> 110 01 Decode: count the leading 1s (q), skip the 0, read k bits (r), n = (q << k) | r Choose k about log2(mean value): small values -> small k
>> Autres questions
Q : Quelle différence entre codes de Rice et de Golomb ?
R : Le code de Rice est le cas particulier du code de Golomb où le paramètre M est une puissance de deux (M = 2^k). Un décalage de bits et un masque remplacent alors la division, ce qui est très rapide.
Q : Comment choisir le paramètre k ?
R : k doit valoir environ log2 de la moyenne des valeurs. Un k trop petit donne de longues séquences unaires, un k trop grand gaspille des bits sur le reste. Des codecs comme FLAC choisissent k par bloc.
Q : À quoi sert le code de Rice ?
R : Aux entiers non négatifs de distribution géométrique, où les petites valeurs sont bien plus fréquentes. Typiquement les résidus de prédiction en audio sans perte (FLAC) et en image (JPEG-LS).