Vous êtes sur la page 1sur 18

Théorie de l'information et codage

Master de cryptographie

Cours 2 : Compression

8 et 12 janvier 2009

Université Rennes 1

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 1 / 18


Introduction

But : enlever la redondance d'une information


Utilisation et Exemples
Archivage (zip)
Amélioration des débits (télécommunications)
Portabilité améliorée (pdf, jpeg, mp3)
Adaptation aux supports (mpeg2, mpeg4)

On cherche une représentation alternative des données plus ecace en


espace (mais moins en temps d'accès)
Procédés de compression
sans pertes (zip, gif)
avec pertes (mp3, mpeg, jpeg)

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 2 / 18


Compression sans pertes

Principe général : Utilisation d'un dictionnaire et remplacement des


occurrences par un lien vers le dictionnaire.
Exemple : Sur cette page remplacer tous les "dictionnaires" par des "d4".
Types de compression
algorithmes statistiques : construction du dictionnaire par analyse
statistique préalable du document.
algorithmes dynamiques : construction du dictionnaire au fur et à
mesure.
L'ecacité d'un algorithme de compression est mesurée par le rapport de
compression
taille du compressé
taille de l'original
ou par son inverse (le facteur de compression).

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 3 / 18


Premier exemple : le RLE (Run Length Encoding)
Principe : remplacer une suite de caractères identiques par un couple
(nombre de répétitions, caractère).
Utilisation : image en noir et blanc, fax, BMP jusqu'à 8 bits
Algorithme de compression d'une image en N&B
Entrée : C chaîne de caractères N et B de longueur n.
Sortie : suite d'entiers représentant alternativement le nombre de B et de N successifs.
i ←1
Si C [i ] = N alors s ← 0 sinon s ← n si
ref ← C [i ]
c←1
tant que i < n faire
i ←i +1
tant que i ≤ n et C [i ] = ref faire
c ←c +1
i ←i +1
n tant que
s ← s, c
ref ← C [i ]
c←1
n tant que
retourner s
Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 4 / 18
Algorithmes statistiques : code de Human
But : Construire un code préxe optimal pour une source à n symboles Sn
Procédure de réduction
But : transformer une source à r symboles Sr en une source à r − 1
symboles Sr −1 .
Classer les symboles de Sr par fréquences d'apparitions.
on remplace les deux symboles les moins probables par un seul avec la
somme des probabilités.

Construction du code
Si C = {c1 , · · · , cr } est un code préxe optimal pour Sr , alors
C 0 = {c10 , · · · , cr0 , cr0 +1 } est un code préxe optimal pour Sr +1 avec
ci0 = ci pour 1 ≤ i ≤ r − 1,
cr0 = cr .0,
cr +1 = cr .1
0

Principe de l'algorithme : Réduire la source à 2 symboles puis remonter


Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 5 / 18
Code de Human

Arbre associé
Les feuilles sont les symboles.
Les noeuds internes représente la fusion de deux symboles.
On fusionne à chaque fois les noeuds de plus faible poids et on leur
associe la somme des poids. Ce jusqu'à la racine.
On associe 0 à la branche de gauche et 1 à celle de droite.
On remonte l'arbre pour obtenir le code de chaque symbole.

Propriété
La longueur moyenne d'un tel code est comprise entre H et H + 1.
On peut se rapprocher de H en considérant des blocs de n symboles.

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 6 / 18


Algorithmes dynamiques

Principe
Remplacement de facteurs de l'entrée par des codes plus courts.
Ces codes représentent la place du facteur dans un dictionnaire
construit dynamiquement.

LZ77 et LZ78
Proposés par Lempel et Ziv en 1977 et 1978.
Remplacent les facteurs par des références à leur première apparition.
Utilisés pour les chiers .zip, .gif, NTFS.
asymétriques.

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 7 / 18


LZ77 : le principe
On fait glisser une fenêtre de N symboles de la gauche vers la droite
composée de 2 parties
à droite le tampon de lecture de F symboles dans lequel se trouvent
les symboles en attente de compression,
à gauche le tampon de recherche qui constitue le dictionnaire des
symboles déjà lus et compressés.
A chaque étape, on recherche (dans le tampon de recherche) le plus long
facteur qui se répète au début du tampon de lecture. Cette répétition sera
codée (p , l , c ) avec
p est la distance entre le début du tampon de lecture et la position de
la répétition (on prendra la plus grande possible).
l est la longueur de la répétition.
c est le symbole suivant dans le tampon de lecture.
Si N − F = 2e1 et F = 2e2 , il faut e1 bits pour coder p et e2 pour l .
Si il n'y a pas de répétition, on prend p = l = 0 (et c est le symbole lu).
Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 8 / 18
LZ77 : un exemple
On veut coder le mage dit abracadabra avec une fenêtre de taille N = 11
dont 5 pour le tampon de lecture.

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 9 / 18


LZ77 : décompression
On reconstruit le dictionnaire en faisant coulisser la fenêtre de gauche à
droite puis la séquence initiale.

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 10 / 18


LZ77 : algorithmes de compression et de décompression

Compression
L←∅
Placer un pointeur au début de l'entrée
Tant que le tampon de lecture est non vide faire
Trouver la plus longue correspondance entre les tampons de lecture et
de recherche
L ← L|p|l |c où p, l et c sont codés avec des codes de longueur xe (et
de longueur totale n)
Décaler le pointeur de l + 1
n tant que
retourner L

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 11 / 18


LZ77 : algorithmes de compression et de décompression

Décompression
L←∅
Placer un pointeur au début de l'entrée
Tant que le pointeur ne dépasse pas la taille de l'entrée faire
Lire n bits de l'entrée
Chercher la correspondance f dans le tampon de recherche
L ← L|f |c
Décaler le pointeur de l + 1
n tant que
Retourner L

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 12 / 18


LZ77 : Quelques remarques

On choisit p maximum pour éviter de stocker les correspondances


Grande fenêtre ⇒
- plus de grandes correspondances (compression plus ecace)
- plus de bits pour coder et (compression moins ecace)
p l

- recherche de facteurs plus longue (compression plus longue)


Compromis à trouver
La répétition peut chevaucher le tampon de recherche et le tampon de
lecture.
La décompression est simple et rapide.
Taille des tampons limitée

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 13 / 18


LZ78 : le principe
Compression
Le dictionnaire n'est plus borné et est constitué de tous les facteurs
rencontrés (ils seront numérotés). Au départ il est vide.

On cherche le plus long facteur du dictionnaire qui coïncide avec le début


de la séquence à traiter. Il y a 2 cas possibles.
On n'en trouve pas. Si c est le premier symbole de la séquence à
traiter, on ajoute c au dictionnaire et on renvoie (0, c ).
On trouve un facteur f à la position i du dictionnaire. Si c est le
premier symbole suivant f dans la séquence à traiter, on ajoute fc au
dictionnaire et on renvoie (i , c ).

Décompression
Il sut de reconstruire le dictionnaire au fur et a mesure en lisant les
couples. Le message est la concaténation des mots du dictionnaire.
Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 14 / 18
LZ78 : un exemple

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 15 / 18


LZ78 : Algorithme de compression

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 16 / 18


LZ78 : Algorithme de déompression

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 17 / 18


LZ78 : quelques remarques

La recherche dans le dictionnaire doit être faite intelligemment.


En pratique le dictionnaire a une taille bornée. On le réinitialise au
besoin.
La décompression est triviale.
Nombreuses variantes.

Master Crypto (2008-2009) Théorie de l'information et codage 8 et 12 janvier 2009 18 / 18

Vous aimerez peut-être aussi