EnlargeYourData
- Description
- Auteurs
- Pré-requis
- Sur un
système Debian GNU/Linux
- Sur un
système Apple MacOSX (≥10.3)
- Sur
un système Microsoft Windows
- Se procurer
EnlargeYourData
- Utiliser EnlargeYourData
- Compilation
- Utilisation
- Documentation
1.
Description
EnlargeYourData est un ensemble
de logiciel libres de compression/décompression de
fichiers, basés sur l'algorithme RLE et ses variation. Il
possède les caractéristiques
suivantes :
- Il est distribué
sous la licence GNU
General Public License
- Il
est écrit en C++ et possède une interface
textuelle
- Il
implemente RLE (suite de motifs identiques),
- Il
implémente la variante de RLE (on l'appellera RLE2 dans la
suite de ce document) encodant les
bits à zéros entre les bits à un.
- Il n'implemente pas (a l'heure actuelle) RLE2 avec le codage
de Golomb.
Dans la suite de ce document, on appellera "cellule" un groupe de X
bits.
1.1.
Auteurs
EnlargeYourData a
été entièrement
réalisé par Glenn ROLLAND <glenux@fr.st>
à l'occasion de travaux pratiques du cours de format de
documents et compression du Master 2 Ingénierie Informatique
-
Systèmes, Réseaux et Internet.
2.
Pré-requis
EnlargeYourData
nécessite les bibliothèques de fonctions
suivantes (dans
leur version de développement si compilez le programme
vous-même):
2.1.
Sur un système
Debian GNU/Linux
Il vous suffit de taper (en
tant qu'administrateur) les
commandes suivantes pour installer le nécessaire:
# apt-get
install libglib-2.0-dev
2.2.
Sur un système Apple MacOS X (>= 10.3)
Il est nécessaire d'avoir installé les autotools
(automake, autoconf...) dans leur dernière
version. À partir de là, il suffit de
taper les commandes suivantes dans un terminal :
# sudo fink
install glib2-dev
2.3.
Sur un système Microsoft Windows
Cela ne fut pas (encore) testé, mais il est très
probable que cela fonctionne sous Cygwin.
3.
Se procurer EnlargeYourData
Vous
pouvez télécharger la dernière archive
des
sources, ou bien directement la version la plus récente du
projet sur le dépôt Subversion du projet.
3.1. L'archive des sources
Elle est disponible à l'adresse :
http://glenux2.free.fr/pub/projets/EnlargeYourData/archives/
3.2. Le
dépôt Subversion
Afin d'obtenir les sources les
plus à jour, vous pouvez utiliser le logiciel de
contrôle de sources Subversion
$ svn
checkout http://repository.glenux.ath.cx/svn/EnlargeYourData/
Il n'y a pas de mot de passe,
il suffit donc de presser la touche
"Entrée" pour l'utilisateur "anonymous", si ce dernier vous
est
demandé.
4.
Utiliser EnlargeYourData
4.1.
Compilation
Commencez par
décompressez l'archive.
$ tar -xzvf
eyd-0.2.tar.gz
Rendez vous ensuite dans le
dossier qui vient d'être créé lors de
la décompression.
$ cd
EnlargeYourData-0.2
Puis lancez
l'auto-configuration du logiciel, puis la compilation.
$ ./autogen
$ ./configure
$ make
Les binaires produits sont :
- src/rle2/eydrle2
- src/rle1/eydrle
4.2.
Utilisation
Les
binaires de EnlargeYourData doivent être appelés
avec la syntaxe suivante:
Usage:
eydrleX <parametres_obligatoires> <options>
Les paramètres obligatoires sont
les suivants:
- -m, --mode (c|u):
"c" pour compresser, "u" pour décompresser,
- -i, --input
<fichier>: Le fichier original à compresser ou
décompresser,
Les parames optionnels sont les
suivants:
- -o, --output
<fichier>: Le fichier resultant de la compression ou
décompression,
- -c, --cellsize
<entier> : La tailles des blocs de bits
utilisés pour la compression.
5.
Documentation
5.1. Code
Vous pouvez trouver la
documentation de EnlargeYourData dans le dossier doc/html
de l'application, ou en suivant ce lien.
5.2. Le marqueur RLE
Il s'agit de la valeur zéro écrite sur X bits (X
étant la taille de cellules choisies pour la compression).
Dans le cas ou dans le texte à compresser, on retrouver le
marqueur RLE, alors celui-ci est dupliqué. Cependant, cela n'est
pas efficace lorsque l'on rencontre plus de deux fois d'affilée
le marqueur, car cela génèrerait une suite dont la taille
serait plus grande que 4, or avec RLE toute suite d'au moins 3
cellules identiques se compresse en 3 cellules
5.3. Les
fichiers de test
Les programmes de compression ont été testés sur
plusieurs fichiers de types différents:
- application/data,
- application/ogg,
- image/jpeg,
- image/x-ms-bmp (mode RAW),
- image/x-portable-pixmap,
- image/pcx (fichier deja compressé en RLE),
- text/plain
Les taux de compression
Pour RLE1, on obtient, dans le meilleur des cas (pour la taille X de
cellules de bits comprise entre 3 et 32):
- application/data : X=8 ,Ratio=100.39%
- application/ogg : X=30, Ratio=100%
- image/x-ms-bmp (mode RAW)-test 1 : X=3, Ratio=93.14%
- image/x-ms-bmp (mode RAW)-test 2: X=8, Ratio=14.43%
- image/x-portable-pixmap : X=6, Ratio=25.69%
- image/pcx (fichier deja compressé en RLE) :
X=16, Ratio=95.97%
- text/plain test1 : X=, Ratio=76.19%
- text/plain test1 : X=, Ratio=99.70%
Par contre en ce qui concerne RLE2, dans la majorité des cas,
les fichiers produits sont plus gros que les originaux...
Cependant, on peut utiliser la tendance au "gaspillage" de RLE2
(lorsqu'il souhaite stocker une petite valeurs sur une cellule trop
grande), a des fins de compression, en appliquant une compression
par RLE1 sur le fichier produit.
Dans le cas des fichiers MS-Bitmap on peut souvent descendre
à la moitié de ce que produit RLE1 tout seul.
Les utilisations de RLE
On retrouve le format RLE utilisé principalement dans ce qui
concerne le stockage d'images, notamment les images en couleurs
indexées (noir et blanc, et palettes de couleurs).
Il est présent (par exemple) :
- dans la compression utilisée par les fax
- dans une variante du format BMP (image/x-ms-bmp),
- dans le format d'images PCX (utilisant des palettes de couleurs, et
très utilisé à l'époque du DOS sur PC).
On retrouve également souvent RLE associé à un
autre algorithme de compression (voir le cours de C.Choffrut, cours sur
Huffman).
Les problèmes posés par RLE2
RLE2, sans le codage de Golomb, nécessite la
spécification d'une taille de cellule pour stocker la taille des
entiers representant les suites de 0. Or arrive (fréquement
dans le cas des images noir et blanc) que ces entiers dépassent
le plus grand nombre stockable (2^X - 1) sur cellule de X bits.
On peut soit considèrer que la compression est impossible avec
cette taille de cellule (comme réalisé dans le code du
TP), soit on peut evisager des solutions un peu plus complexes,
consistant à :
- Considérer que la cellule suivant une cellule dont la
valeur est (2^X - 1 ) représente la "suite" du codage de la
même suite. Ainsi sur 3 bits, on codera la suite 00100000...0001
(20 zéros entre les deux "1") de la façon suivante :
"2 7 7 4 0"
Dans ce cas, on "perdra" une cellule (qui sera fixée à 0)
dans le cas ou l'on rencontrera sur une suite de longueur multiple de
(2^X - 1).
- L'autre technique consiste à garder la valeur maximum
d'une cellule comme caractère d'échappement [RLE2], pour
ensuite coder de la façon suivante sur 3 bits:
001000....0001 (20 zéros entre les deux "1") :
"2 [RLE2] 7 7 4 [RLE2] 0"
<