3. Compression de données sans pertes
Rappel…
Compression de données sans pertes signifie
que lorsque des données sont compressées et
ensuite décompressées, l'information originale
contenue dans les données a été préservée.
Aucune donnée n'a été perdue ou oubliée. Les
données n'ont pas été modifiées.
3
4. Type de données de compression sans pertes
Ce type de compression est utilisée en :
- Audio : RealPlayer (Windows, Mac OS X, Linux, Unix,
Palm OS, Windows Mobile),
WMA (Windows Media Audio)
- Images : GIF (Graphics Interchange Format), PNG
(Portable_Network_Graphics),
JPEG et JPEG 2000 (Joint Photographic Experts Group),
TIFF (Tagged Image File
Format)
- Video : H.264 ou MPEG-4 AVC (Advanced Video Coding),
format propriétaire du
Moving Picture Experts Group
4
5. 1- Pixel Packing
Ce n'est pas exactement une méthode de compression
de données mais plutôt une manière d'enregistrer des
informations de manière contiguës en mémoire.
Beaucoup de formats bitmaps utilisent le Pixel Packing
pour conserver la quantité de mémoire ou de place
disque dont ils ont besoin pour stocker une image.
Si on a une mémoire organisée Byte de mémoire = 4
bits. Donc un pixel est enregistré dans 4bits.
Une image contenant 4096 pixels contenant 4 bit par
pixels prendra donc 4096 bytes de mémoire de stockage.
5
6. Pour sauvegarder de la mémoire on peut alors faire
appel au Pixel Packing. Au lieu de sauver une seule fois
4 bit par byte, on peut sauver 2 fois 4 bits par byte. La
taille alors utilisée pour contenir notre image passera
de 4096 à 2048 bytes.
6
1- Pixel Packing
7. (2) Run-length Encoding (RLE)
RLE est un algorithme de compression de données qui
est utilisé par la plupart des formats de fichiers
bitmaps tels que TIFF, BMP et PCX.
Il a été créé pour compresser n'importe quel type de
données sans tenir compte de l'information qu'elle
contient.
La plupart des algorithmes RLE ne puissent pas
atteindre les forts taux de compression, mais RLE est à
la fois simple à implémenter et rapide d'exécution.
RLE est l'une des méthodes les plus anciennes, les plus
simples et la plus utilisée.
7
8. Principe:
1)Identifier et supprimer des redondances en les codant
sous une forme plus compacte.
2) Réduire la taille physique d'une répétition de chaîne de
caractère (run).
3) La chaîne répétée est appelée un passage (run) et est
typiquement codée avec 2 bytes.
4) Le premier byte représente le nombre de caractères
dans le passage et est appelé le compteur de passage (run
count). Le second byte est la valeur du caractère dans le
passage.
8
(2) Run-length Encoding (RLE)
9. Exemple:
AAAAAAAAAAAAAAA 15A (RLE packet)
AAAAAAbbbXXXXXT 6A3b5X1T.
Inconvénient: Si l'on code des chaînes de caractères en
RLE constituées de passages composés uniquement de
2 caractères on n'aura aucun gain et la taille du fichier
après compression sera exactement la même.
Si les passages sont composés uniquement de 1
caractère, la taille du fichier après compression sera le
double de celle de départ.
Compression 1C1o1m1p1r1e2s1i1o1n
9
(2) Run-length Encoding (RLE)
10. (3)Codage RLE par Bit, Byte ou niveau de pixel
Le niveau Bit : s'intéresse à une succession de bits
similaires tout en ne tenant absolument pas
compte du niveau byte ou du niveau pixel.
Un codage typique de RLE au niveau Bit code le
tout sur un byte ; Soit la valeur du passage sur le
MSB (Most Significant Bit) et la valeur du
compteur de passage sur les 7 derniers bits.
10
11. Le niveau Byte : s'intéresse quant à lui à des valeurs de
bytes identiques en ne tenant pas compte du niveau bit ou
du niveau pixel. Le plus courant de ces types de codage
code les informations sur 2 bytes: Le premier byte contient
la valeur du compteur de passage (0 à 255) et le second byte
la valeur du passage.
11
(3)Codage RLE par Bit, Byte ou niveau de pixel
12. Le niveau Pixel : ce niveau est utilisé quand un ou
plusieurs bytes consécutifs de données sont utilisés
pour stocker un pixel. Ici, on ne tient pas compte du
niveau bit et le niveau byte sert juste à déterminer la
valeur d'un pixel. La taille des paquets de codage
dépend du nombre de byte par pixel.
12
(3)Codage RLE par Bit, Byte ou niveau de pixel
13. (4)Le codage de Shannon
Le principe du codage statistique remonte à la fin des
années quarante et repose sur les travaux du
mathématicien Claude Shannon (laboratoires Bell),
qui démontrait l'existence d'une méthode permettant
de compacter les flux d'information sans rien perdre
de leur signification.
13
Fréquence d’apparition des lettres en français
14. Pour déterminer les probabilités et en déduire un
codage approprié. Nous utiliserons comme exemple,
dans la suite, le message "BANANES ET ANANAS" .
Les propriétés statistiques de ce message sont données
14
(4) Le codage de Shannon
15. s : symbole
f(s) : fréquences d’apparition du symbole
p(s) : probabilité d’apparition du symbole
H(s) : quantité d’information convoyée par le symbole
H : quantité d’information cumulée par ce symbole
(f(s) * H(s))
ASCII : quantité de décision selon un code ASCII
On peut constater qu’un codage optimal selon
Shannon doit permettre de coder le message en
exactement 43.945 bit, contre 136 en ASCII. D’autre
part, on doit être en mesure de coder le symbole A avec
moins de 2 bit (1.765 bit très exactement), à condition
de coder le symbole T avec 4.08 bit.
15
(4)Le codage de Shannon
16. Le codage Shannon-Fano
Principe: l' idée est de répartir les symboles en deux groupes de
valeur à peu près équivalente, cette valeur étant la somme, dans
chaque groupe, des probabilités d'apparition des symboles qu'il
contient. Le groupe de gauche est appelé 0, celui de droite 1.
Les groupes sont à nouveau subdivisés et nommés 0 ou 1 jusqu'à
ce que la subdivision ne contienne plus qu'un symbole. L'arbre
binaire ainsi obtenu est formé de segments ou branches et de
feuilles.
Chaque branche représente un bit d'informations (0 ou 1),
Chaque feuille contient un caractère simple. Pour déterminer le
code numérique d'un caractère donné, il faut partir du sommet
de l'arbre et suivre les branches jusqu'à atteindre la feuille qui le
représente.
Les caractères les plus fréquents se trouvent le plus près du
sommet et requièrent donc moins de bits dans leurs
transcriptions compressées
16
17. 17
La subdivision définit deux symboles (qui sont en fait des groupes de
symboles), "AN« et ES<space>BT. Cette subdivision est ainsi faite pour que
les fréquences des deux subdivisions soient aussi équilibrées que possible.
Le codage Shannon-Fano
18. 18
La deuxième étape va isoler les symboles A et N, et définir
une nouvelle subdivision des symboles restants.
Le codage Shannon-Fano
21. 21
Le codage Shannon-Fano
Pour connaître le code associé à chaque lettre, on parcourt l’arbre final de haut en
bas, et l’on obtient :
22. (5)Le codage de Huffman
C'est là qu'intervient David Huffman qui en 1952
publie le résultat de ses recherches.
Son étude se fonde sur l'idée que certains caractères
sont susceptibles d'apparaître plus souvent que
d'autres dans un fichier,
22