Codage de Rice

Codage de Rice

Le codage de Rice, codage de Golomb-Rice ou GPO2 (pour Golomb-power-of-2) est un codage entropique inventé par Robert F. Rice et James R. Plaunt en 1971 et utilisé essentiellement en compression de données.

Le code produit est un code préfixe.

Sommaire

Principe

Le codage de Rice d'un entier naturel N dépend d'un paramètre k et se fait en deux étapes :

  1. le codage du quotient de la division euclidienne de N par 2k avec un codage unaire ;
  2. le codage du reste de la même division avec un codage binaire.

Le codage de Rice de paramètre k est strictement équivalent à un codage de Golomb de paramètre 2k.

Mathématiquement, pour coder un entier N, N \in \mathbb{N}, N = q \times 2^k + r, on code d'abord q = \lfloor N / 2^k \rfloor en unaire, puis r = N - 2^k \times q en binaire.

La division par 2k peut être implémentée par un décalage de k bits vers la droite, et la second étape revient à répliquer les k bits de poids faible de la valeur à coder. Ces opérations simples font que le codage de Rice est particulièrement adapté pour une implémentation rapide.

Longueur du code

Optimalité

Le codage de Rice est adapté pour des données dans lesquelles les valeurs les plus faibles sont plus probables que les autres (mais où les autres peuvent malgré tout apparaitre).

Il est particulièrement apprécié en informatique car son implémentation est simple est rapide.

Choix du paramètre

Le choix du paramètre k utilisé lors du codage de Rice détermine le taux de compression qu'il est possible d'obtenir.

Le paramètre optimal kopt pour coder V valeurs sur un intervalle de taille I est exprimé par :

k_{opt} = - \Bigg \lceil \dfrac {log_2(2 - \dfrac V I)} {log_2(1 - \dfrac V I)} \Bigg \rceil

Exemples

Représentation des premiers entiers naturels avec un codage de Rice
Décimal Binaire Code de Rice
k = 0
(Golomb, k = 1 ou unaire)
Code de Rice
k = 1
(Golomb, k = 2)
Code de Rice
k = 2
(Golomb, k = 4)
Code de Rice
k = 3
(Golomb, k = 8)
Code de Rice
k = 4
(Golomb, k = 16)
0 0000 0 0 0 0 00 0 000 0 0000
1 0001 10 0 1 0 01 0 001 0 0001
2 0010 110 10 0 0 10 0 010 0 0010
3 0011 1110 10 1 0 11 0 011 0 0011
4 0100 11110 110 0 10 00 0 100 0 0100
5 0101 111110 110 1 10 01 0 101 0 0101
6 0110 1111110 1110 0 10 10 0 110 0 0110
7 0111 11111110 1110 1 10 11 0 111 0 0111
8 1000 111111110 11110 0 110 00 10 000 0 1000
9 1001 1111111110 11110 1 110 01 10 001 0 1001
10 1010 11111111110 111110 0 110 10 10 010 0 1010

Utilisations

Le codage de Rice fait partie des codages entropiques les plus utilisés, lorsque les données à compresser présentent une distribution géométrique (ou approchante) et que la vitesse de l'algorithme est un critère important.

On le retrouve notamment dans de nombreux algorithmes de compression multimédia : audio (FLAC, Monkey's Audio, MPEG-4 ALS, ALAC...), vidéo, image... et dans certains algorithmes de compression d'index[1] (pour les moteurs de recherche).

Voir aussi

Articles connexes

Bibliographie

  • Robert F. Rice, James R. Plaunt, « Adaptive Variable-Length Coding for Efficient Compression of Spacecraft Television Data », IEEE Transactions on Communications, vol. 19, No 6, pp. 889-897, décembre 1971
  • Robert G. Gallager, David C. Van Voorhis, « Optimal source codes for geometrically distributed integer alphabets », IEEE Transactions on Information Theory, vol.21, No 2, pp. 228-230, mars 1975

Références

  1. Stefan Büttcher, Charles L. A. Clarke, Gordon V. Cormack, Information Retrieval: Implementing and Evaluating Search Engines, (ISBN 0-262-02651-1)

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Codage de Rice de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Codage de Golomb — Le codage de Golomb est un codage entropique inventé par Solomon Wolf Golomb en 1966 et utilisé essentiellement en compression de données. Le code produit est un code préfixe. Sommaire 1 Principe 2 Longueur du code 3 Optimalité …   Wikipédia en Français

  • Codage unaire — Le codage unaire est un codage entropique utilisé essentiellement en compression de données et s appuyant sur la base 1. Sommaire 1 Principe 2 Longueur du code 3 Optimalité 4 …   Wikipédia en Français

  • Codage entropique — Le codage entropique (ou codage statistique à longueur variable) est une méthode de codage de source sans pertes, dont le but est de transformer la représentation d une source de données pour sa compression et/ou sa transmission sur un canal de… …   Wikipédia en Français

  • Codage delta — Pour les articles homonymes, voir Code Delta (émission de télévision). Le codage delta ou codage delta d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code delta produit est un… …   Wikipédia en Français

  • Codage gamma — Le codage gamma ou codage gamma d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code gamma produit est un code préfixe et universel. Sommaire 1 Principe 2 Codage des entiers… …   Wikipédia en Français

  • Codage omega — Le codage omega ou codage omega d Elias est un codage entropique inventé par Peter Elias et utilisé essentiellement en compression de données. Le code omega produit est un code préfixe et universel. Sommaire 1 Principe 1.1 Codage 1.2 Décodage …   Wikipédia en Français

  • Codage de Huffman — Le codage de Huffman est un algorithme de compression de données sans perte élaboré par David Albert Huffman, lors de sa thèse de doctorat au MIT. L algorithme a été publié en 1952 dans l article A Method for the Construction of Minimum… …   Wikipédia en Français

  • Codage binaire tronqué — Le codage binaire tronqué est un codage entropique utilisé essentiellement en compression de données et s appuyant sur la base 2. Il est plus généralement utilisé pour coder de façon efficace en termes de longueur, un alphabet dont la taille n… …   Wikipédia en Français

  • Codage de Shannon-Fano — Le codage de Shannon Fano est un algorithme de compression de données sans perte élaboré par Robert Fano à partir d une idée de Claude Shannon. Il s agit d un codage entropique produisant un code préfixe très similaire à un code de Huffman, bien… …   Wikipédia en Français

  • Codage de Fibonacci — Le codage de Fibonacci est un codage entropique utilisé essentiellement en compression de données. Il utilise les nombres de la suite de Fibonacci, dont les termes ont la particularité d être composés de la somme des deux termes consécutifs… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”