Perte
Huff
RLE
Objectifs
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Vitesse de compression.
Vitesse de dcompression.
Usage des ressources (en moyenne et maximal).
Rapport qualit/taux (pour les mthodes avec pertes).
Scurit et robustesse.
Universalit, adaptabilit.
le cot dimplmentation/usage (Parfois le choix est dict par les
contraintes conomiques)
Professeur M.QBADOU
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Plan du cours
Huffman
RLE
Sans
Perte
Sans perte
LZ*
TDC
Huff
Ondelettes
RLE
Avec perte
Fractales
LZ*
Avec
perte
TDC
Techniques de
compression
Ondelettes
Fractales
Type de donnes
Par
Type
Professeur M.QBADOU
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Char
E
e
r
i
espace
Professeur M.QBADOU
Freq.
1
8
2
1
4
Char
Freq.
Char
y
s
n
a
l
1
2
2
2
1
k
.
Freq.
1
1
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
}
PriorityQueue<NoeudHuffman> queue;
Professeur M.QBADOU
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
10
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
11
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
12
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
13
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
14
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
15
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
16
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
17
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
18
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
19
Huff
RLE
LZ*
Avec
perte
TDC
sp
2
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
20
Huff
RLE
LZ*
Avec
perte
sp
TDC
Ondelettes
Fractales
Par
Type
2
4
Professeur M.QBADOU
2
21
Huff
RLE
LZ*
Avec
perte
sp
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
22
Huff
RLE
sp
LZ*
Avec
perte
TDC
Ondelettes
Fractales
.
1
s
2
r
2
Par
Type
Professeur M.QBADOU
1
23
Huff
RLE
sp
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
24
Huff
RLE
LZ*
Avec
perte
8
6
TDC
Ondelettes
Fractales
sp
2
Par
Type
Professeur M.QBADOU
25
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
s
2
r
2
sp
2
Par
Type
Professeur M.QBADOU
26
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
2
27
Huff
RLE
LZ*
Avec
perte
TDC
sp
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
.
1
28
Huff
RLE
LZ*
Avec
perte
e
8
10
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
sp
2
1
29
Huff
RLE
LZ*
Avec
perte
e
8
10
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
6
sp
1
30
Huff
RLE
LZ*
10
Avec
perte
16
TDC
Ondelettes
Fractales
sp
Par
Type
Professeur M.QBADOU
31
Huff
RLE
LZ*
16
10
Avec
perte
TDC
Ondelettes
Fractales
sp
Par
Type
Professeur M.QBADOU
32
Huff
RLE
26
LZ*
Avec
perte
10
16
TDC
Ondelettes
Fractales
Par
Type
sp
2
Professeur M.QBADOU
33
Huff
RLE
26
LZ*
Avec
perte
10
16
Aprs enfilement de ce
nud, il ne reste quun seul
nud gauche dans la
queue de priorit
TDC
Ondelettes
Fractales
Par
Type
sp
2
Professeur M.QBADOU
34
Huff
Description
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
35
Huff
Constructeurs :
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
36
6. Implmentation :
Huff
Classe PriorityQueue
RLE
Mthodes
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
37
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
38
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
39
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Classes utiliser :
FileWriter :
FileWriter fw=new FileWriter(new File(nomFichier));
fw.write(objString);
BufferedReader, FileReader :
BufferedReader in=new Bufferedreader(new FileReader(new File(nomFichier)));
objString =in.readline();
FileInputStream :
FileInputStream in=new FileInputStream(new File(NomFichier));
byte b=(byte)in.read();
FileOuputStream :
FileOutputStream out=new FileOutputStream(new File(NomFichier));
out.write(Short.parseShort(codes.substring(i,i+8),2))
Professeur M.QBADOU
40
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
package compression;
import java.util.Comparator;
public class NoeudHuff implements Comparable<NoeudHuff>, Comparator<NoeudHuff>{
char x; int f;
NoeudHuff g,d;
NoeudHuff(){}
NoeudHuff(char x,int f){this.x=x;
this.f=f;
g=d=null;}
NoeudHuff(NoeudHuff g,NoeudHuff d){ f=g.f+d.f;
this.g=g;
this.d=d;
}
public int compareTo(NoeudHuff n) {
if(f==n.f)return x==n.x?0:(x<n.x?1:-1);
if(f<n.f)return -1;return 1;
}
public static String prefixe(NoeudHuff r){
if(r==null)return null;
return "[("+r.x+","+r.f+"),"+prefixe(r.g)+","+prefixe(r.d)+"]";
}
public String toString() {
return prefixe(this); }
public int compare(NoeudHuff o1, NoeudHuff o2) {
return o1.compareTo(o2);
}
}
Professeur M.QBADOU
41
Classe Huffman :
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
42
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
1. Principe
RLE/RLC(Run-Length Encoding/Coding) est un mode de
compression simple et rapide bas sur la rptition d'lments.
RLE Consiste identifier et supprimer des redondances
d'informations en les codant sous une forme plus compacte.
Chaque chane rpte (suite caractres ou de bits identiques)
est remplace par un couple cod en 2 octets.
Le premier reprsente le nombre de caractres/bits de la chaine et
Professeur M.QBADOU
43
Huff
2. Exemples :
Le codage de "AAAAAAAAZZEEEEEEEEEEER" par RLE donne :
RLE
"8A2Z11E1R"
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
44
3.
Mthode conventionnelle
RLE
En ralit la compression RLE est rgie par des rgles particulires permettant
de compresser lorsque cela induit un gain et de laisser la chane telle quelle
lorsque la compression induit une perte.
LZ*
Huff
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
45
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
4. Variantes de RLE
Codage horizontal
Codage Vertical
Par
Type
Professeur M.QBADOU
46
Codage 4x4
Codage en zigzag
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
5. Applications
Application 1 :
Implmenter lalgorithme RLE pour les cas des fichiers texte
Implmenter les variantes de RLE pour le cas des images bitmap(bmp,
TIFF, PCX).
Professeur M.QBADOU
47
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
le second pixel est un entier qui dtermine la hauteur de l'image une fois
dcompresse (sa largeur est la mme que celle de l'image compresse);
le troisime pixel et tous les pixels impairs suivants (pixels[2n+1] avec n>=1), sont
des entiers qui reprsentent le nombre de rptition effectuer sur les pixels
suivants (pixels[2n+2] avec n>=1) .
48
1.
Historique
Les mthodes de compression LZ* de Abraham Lempel et Jacob Ziv, sont
dites de type dictionnaire aussi appeles algorithmes substitution de
facteurs.
Huff
RLE
LZ*
Avec
perte
Lalgorithme LZ77,
TDC
Lalgorithme LZSS, version amlior de LZ77 par Storer et Szymanski (la recherche
des squences dans le dictionnaire est rduite logarithmique ment)
Ondelettes
Enfin vient lalgorithme LZ78, plus connu sous le nom LZW, amlioration faite par
Terry Welch en 1984 de LZSS par le fait que les squences sont ranges dans une
arborescence.
Fractales
Par
Type
2.
Principe
Le principe est fond sur le fait quune squence de caractres peut
apparatre plusieurs fois dans un fichier.
Lalgorithme LZW de compression consiste mettre la place des
squences, les adresses de ces squences dans un dictionnaire gnr la
vole.
Professeur M.QBADOU
49
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
50
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
51
Huff
Donnes :
Type_Dictionnaire Dico
TypeFichier
FichierSr
Rsultat :
TypeFichier
FichierCpr
Dbut
s = LireOctetFichier(FichierSr)
Tant Que Non FinFichier(FichierSr)
t=LireOctetFichier(FichierSr)
u=Concantner(s,t)
Si EstDansDicto(Dico,u) Alors
s=u
Sinon
AjouterDansDico(Dico,u)
EcrireFichier(FichierCpr,Adresse(Dico,s))
s=t
Fin Si
Fin Tant Que
EcrireFichier(FichierCpr, Adresse(Dico,s))
Fin
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
Professeur M.QBADOU
52
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
53
Huff
RLE
LZ*
Avec
perte
TDC
Ondelettes
Fractales
Par
Type
le dictionnaire rsultant
de lalgorithme :
Professeur M.QBADOU
54