Upload
ahmedbassem
View
218
Download
0
Embed Size (px)
Citation preview
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 1/101
UNIVERSITE DE TUNIS EL MANAR
Département génie électrique
Rapport de Projet de Fin d’Etudes
2002/2003
Réalisé par :Ben Djemâa Ahmed Bassem
Conception d’une chaîne de
transmission :codage source et codage canal
Soutenue le 30 juin 2003 devant le jury composé par :
Présidente : Mme JAIDANE Mériem
Rapporteur : Mme TURKI Monia
Invité : Mr. KALLEL Samir
Encadreurs : Mr. BOUALLEGUE Ammar
Mr. HAMDI Noureddine
Juin 2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 2/101
Dédicaces
Je dédie ce travail à mes très chers
parents.
Je ne trouverais jamais les mots qu’il faut
pour vous remercier
Tous mes sentiments de reconnaissance pour
vous.
A mon petit frère.
A mes sœurs.A tous mes amis.
En leurs souhaitant plein de bonheur.
Projet de fin d’étude ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 3/101
Remerciement
J'adresse mes plus vifs remerciements à mes
encadreurs Mr BOUALLEUE Ammar
et Mr HAMDI Noureddine qui m’ont soigneusement
encadré et prodigué de leurs conseils enrichissants
au cours de la réalisation de ce projet de fin
d’étude. Je tiens également à leur exprimer ma profonde
reconnaissance pour leur disponibilité, leur
confiance et leur assistance technique et morale.
Sans oublier de remercier mes enseignants à
l'ENIT pour la qualité de l'enseignement qu'ils m'ont
offert durant ces trois dernières années.
Mes remerciements les plus vifs vont aussi à
tous ceux qui de prés ou de loin, ont apporté leur
contribution à ce travail.
Projet de fin d’étude ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 4/101
Que les membres du jury trouvent ici mes
profonds remerciements.
Projet de fin d’étude ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 5/101
Résumé
Résumé
L’objet de ce projet de fin d’étude consiste à élaborer un algorithme de codage source
appliqué à la transmission d’images et d’un algorithme de codage canal en utilisant le
codage BCH. Les deux problèmes du codage de source et de codage de canal sont
considérés de manière séparée.
Ces deux algorithmes développés seront utilisés pour la transmission d’images.
A la fin de ce projet, nous avons mis en œuvre une chaîne logicielle complète pour la
transmission d’images fixes.
Abstract
The purpose of this project is to elaborate an algorithm of source coding and an
algorithm of channel coding while using the BCH coding.
The two problems of the source coding and channel coding are considered separated.
These two developed algorithms will be used for the transmission of pictures.
At the end this project, we put in work a complete software chain for the picture
transmission.
Projet de fin d’étude ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 6/101
Sommaire
Sommaire
INTRODUCTION GÉNÉRALE................................................................................7
Chapitre I :Généralité ....................................................................................10I.1Introduction ................................................................................................................ 10I.2Principaux éléments d’une chaîne de communication numérique ............................ 10
I.2.1Source de message ................................................................................................ 11
I.2.2Le codeur de source ..............................................................................................12I.2.3Le codeur de canal ...............................................................................................12I.2.4L’émetteur ou le modulateur .................................................................................12I.2.5Canal de transmission ...........................................................................................13I.2.6Le récepteur ......................................................................................................... 13I.2.7Le décodeur de canal .......................................................................................... 13I.2.8Le décodeur de source ......................................................................................... 13I.2.9 Conclusion ...........................................................................................................14Chapitre II :Codage de source .......................................................................16
II.1 Introduction ..............................................................................................................16II.2Les techniques de compression conservatrice ...........................................................17
II.2.1 Codage de Huffman ............................................................................................17a.Principe de la Méthode de Huffman ..........................................................17 b.Méthode de compression .............................................................................18c.Exemple pratique du codage de Huffman .................................................. 19d.Limites du codage de huffman ................................................................... 21e.Commentaires ..............................................................................................22II.2.2RLE (Run Length Encoding) ............................................................................... 22a.Algorithme de compression .........................................................................22b. Algorithme de decompression ....................................................................23
c.Exemple pratique ........................................................................................ 23d.Commentaire ................................................................................................ 23II.2.3LZW (Lempel-Ziv Welch) .................................................................................. 23a.Algorithme de compression .........................................................................23b.Algorithme de décompression ....................................................................24 c.Commentaires .............................................................................................24
II.3Les techniques de compression non conservatrice ....................................................24II.3.1Introduction .........................................................................................................24II.3.2Qu’est ce qu’une image numérique ? ..................................................................25II.3.3Introduction à la compression d’une image numérique ..................................... 26
II.3.4La compression JPEG ......................................................................................... 27a.Historique 27
Projet de fin d’étude Page 1 ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 7/101
Sommaire
b. Les différentes étapes de la compression non conservative d'une image . 28c.Exemple de compression .............................................................................35d.Conclusion 37 II.3.5Les ondelettes ......................................................................................................37II.3.6Les fractales ......................................................................................................... 40II.3.7Conclusion .......................................................................................................... 41Chapitre III :Codage de canal .......................................................................43
III.1Introduction ..............................................................................................................43III.2Les codes correcteurs d’erreurs ............................................................................... 44
III.2.1 Les codes en bloc Linéaires .............................................................................. 44III.2.2 Les codes cycliques ........................................................................................... 47III.2.3 Les codes BCH .................................................................................................49III.2.4 Utilisation de la transformé en cosinus discrète dans un codage correcteur d’erreur 51III.2.5 L’algorithme de Berlekamp-Massey et de Forney ............................................ 54III.2.6 L’algorithme de Peterson-Gorenstein-Zierler ...................................................55
Chapitre IV : Conception et Implémentation ................................................ 60IV.1Introduction ..............................................................................................................60IV.2Source de message ...................................................................................................60
IV.2.1Types de données utilise pour modéliser l’image ............................................. 61IV.2.2Fonctions utilisées pour manipuler les images ................................................. 62
IV.3Codage et décodage de source .................................................................................63IV.3.1DCT et IDCT .....................................................................................................65IV.3.2Quantification et déquantification ......................................................................65IV.3.3Lecture en zigzag ...............................................................................................66IV.3.4DPCM et RLE ....................................................................................................66IV.3.5Huffman ............................................................................................................. 67
a.types de données utiliser pour construire l'arbre ....................................... 67 b.Fonctions utilisées pour compresser et decompresser des fichier en
utilisant le codage de hufman ..................................................................67 IV.4Codage et décodage canal ........................................................................................70IV.5Programme principal ...............................................................................................73IV.6Conclusion ..............................................................................................................74
Chapitre V : Résultats et discussion ..............................................................76 V.1Codeur source ..........................................................................................................76V.2Codeur canal .............................................................................................................84V.3Comparaison entre codage source et codage canal indépendant et le codage source
canal conjoint ......................................................................................................90V.3.1Théorème de séparation de Shannon ................................................................... 90V.3.2Solution traditionnelle et limites d’utilisation ..................................................... 91V.3.3Solution conjointe............................................................................................... 91a.Protection des codes sources ...................................................................... 91b.Equilibrage de rendements .......................................................................... 91
V.4Conclusion ................................................................................................................ 91Conclusion Générale ......................................................................................93
Bibliographie 95
Projet de fin d’étude Page 2 ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 8/101
Liste des figures
Liste des figures
Projet de fin d’étude Page 3 ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 9/101
Liste des figures
FIGURE 1 : PRINCIPE D'UNE CHAÎNE DE COMMUNICATIONS NUMÉRIQUES......................................................................................................................................11
FIGURE 2 : EXEMPLE MONTRANT COMMENT UN CODE DE HUFFMAN ESTÉTABLIT....................................................................................................................21
FIGURE 3 : PRINCIPE DE LA NORME JPEG....................................................29FIGURE 4 : EXEMPLE DE TABLE DE QUANTIFICATION...........................34
FIGURE 5 : LECTURE EN ZIGZAG.....................................................................34
FIGURE 6 : LENA ORIGINALE............................................................................36
FIGURE 7 : IMAGE DE LENA POUR UN TAUX DE COMPRESSION ÉLEVÉ38
FIGURE 8 : SYSTÈME DE COMPRESSION D'EMPREINTES DIGITALES 40
FIGURE 9 : ALGORITHME DE DÉCODAGE POUR LES CODES DCT.......53
FIGURE 10 : ALGORITHMES DE BERLEKAMP-MASSEY ET DE FORNEY
POUR LES CODES DCT.........................................................................................55FIGURE 11 : ORGANIGRAMME DE L’ALGORITHME DE PETERSON-
GORENSTEIN-ZIERLER........................................................................................58
FIGURE 12 : SCHÉMAS DE PRINCIPE DU CODEUR DE SOURCE..............64
FIGURE 13 : ORGANIGRAMME DE CONSTRUCTION DE L’ARBRE DEHUFFMAN.................................................................................................................69
FIGURE 14 : ORGANIGRAMME SIMPLIFIÉ DE LA COMPRESSION DEHUFFMAN.................................................................................................................70
FIGURE 15 : L’ALGORITHME DE BERLEKAMP_MASSEY ........................72
FIGURE 16 : L’ORGANIGRAMME DE DU PROGRAMME PRINCIPAL.....74
FIGURE 17 : COURBE REPRÉSENTATIVE DE LA VARIATION DE LA TAILLEDU FICHIER COMPRESSÉ EN FONCTION DU FACTEUR DE QUALITÉ..77
FIGURE 18 : COURBE REPRÉSENTATIVE DE LA VARIATION DU NOMBRED’ERREURS NON CORRIGÉES EN FONCTION DE LA PROBABILITÉ
D’ERREUR BINAIRE..............................................................................................85
FIGURE 19 : IMAGE REÇUE SANS UTILISATION DE CODEUR CANAL POUR P= 0.0015.......................................................................................................................86
FIGURE 20 : IMAGE REÇUE EN UTILISANT NOTRE CODEUR CANAL POUR LA MÊME PROBABILITÉ D’ERREUR ..............................................................87
FIGURE 21 : IMAGE TROP BRUITÉ ISSUE D’UNE CHAÎNE QUI NE PRÉSENTEPAS DE CODEUR CANAL......................................................................................88
FIGURE 22 : IMAGE REÇUE CAS D’UN CANAL TROP BRUITÉ.................89
Projet de fin d’étude Page 4 ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 10/101
Liste des Tableaux
Liste des Tableaux
TABLEAU 1 : TABLES DES OCCURRENCES...................................................19TABLEAU 2: EXEMPLE DE TABLE DE QUANTIFICATION POUR LALUMINANCE ET LA CHROMINANCE...............................................................33
TABLEAU 3: TABLEAU COMPARATIF DES DIFFÉRENTS NIVEAUX DEQUALITÉ...................................................................................................................37
TABLEAU 4 : REPRÉSENTATION DE GF(24) COMME EXTENSION DE GF(2). 50
TABLEAU 5 : TABLE DE MESURE DE LA TAILLE DU FICHIER COMPRESSÉEN FONCTION DU FACTEUR DE QUALITÉ....................................................76
TABLEAU 6 : TABLE DES PROBABILITÉS DE TRANSITION......................84
TABLEAU 7 : QUELQUES ORDRES DE GRANDEUR DE PROBABILITÉD’ERREURS .............................................................................................................89
Liste des Abréviations
Projet de fin d’étude Page 5 ENIT 2002-2003
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 11/101
Liste des Tableaux
Projet de fin d’étude Page 6 ENIT 2002-2003
− JPEG Join Photographic Experts Group− DCT Discrete Cosine Transform− IDCT Inverse Discrete Cosine Transform− RLE Run Length Encoding
− DPCM Differential Pulse Code Modulation− LZW Lempel-Ziv Welch− GF Galois Field− TIFF Tagged Image Format File− CCITT Consultative Committee for International Telegraph and Telephone− ISO Organisation Internationale de Standardisation− CBS Canal Binaire Symétrique− BCH Bose-Chaudhuri-Hockenghem− VLC Variable Length Code− DWT Discrete Wavelet Transform
− IDWT Inverse Discrete Wavelet Transform
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 12/101
Liste des Abréviations
INTRODUCTION GÉNÉRALE
La transmission de contenu multimédia, et particulièrement l'image animée, sur des
réseaux où les débits restent encore relativement faibles, nécessite l’utilisation des
techniques de compression afin de réduire la taille des données à transmettre etd’économiser les ressources des canaux de transmission. Ce besoin a motivé les recherches
en codage source, dans le but de développer de nouveaux algorithmes de compression plus
performants. On distingue deux techniques de compressions : Celles qui sont conservatives,
utilisée pur réduire le poids de données qui doivent rester identiques à leur original et les
techniques de compression destructives, utilisées essentiellement pour compresser les
images fixes et animées, la parole, et la musique.
Un codeur de source peut être la combinaison de plusieurs techniques de compressionafin de réduire au maximum la taille des données à transmettre ou à stocker tout en
conservant une distorsion tolérable.
A cause des perturbations et du bruit introduit par le canal, le signal reçu peut ne pas
être une réplique exacte du signal à la sortie du codeur de source. Ceci peut ne pas être
tolérable, surtout dans le cas ou les données transmises doivent rester identiques à leur
original. La solution est de pouvoir détecter puis éventuellement corriger les erreurs pouvant
altérer le signal a transmettre. Pour cela, des techniques permettant de protéger l’information à émettre contre les perturbations introduites par le canal de transmission sont
utilisées. Cette protection contre les erreurs du canal peut s’effectuer par deux blocs
différents constituants la chaîne.
− Le codeur canal : en recodant l’information à transmettre.
− Le modulateur : en choisissant un qui soit adapté au canal de transmission.
Ces deux techniques de protection sont généralement combinées pour augmenter la performance de la chaîne de transmission.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 13/101
Liste des Abréviations
Ces deux opérations de codage source et de codage canal doivent se faire en respectant
un certain nombre de contraintes :
Il faut d’abord pour un débit visé, évaluer la dégradation apportée au signal et voir si
cette dégradation est acceptable. Il faut ensuite, rendre le degré de complexité inférieur à uncertain seuil. Un degré de complexité important peut être accepté au niveau de l’émission,
mais il doit être beaucoup plus faible à la réception au niveau de l’utilisateur. Enfin, il faut
avoir un délai de reconstitution adapté à l’application. Par exemple, pour les transmission
full duplex, il faut minimiser le plus possible ce délais.
C’est cette double opération de codage source et de codage canal, qui fait l’objet de ce
projet de fin d’étude. En effet, le travail réalisé consiste à élaborer un algorithme de codage
source appliqué à la transmission d’images et d’un algorithme de codage canal en utilisantle codage BCH. Les deux problèmes du codage de source et de codage de canal sont
considérés de manière séparée, selon le « théorème de séparation » de Shannon. Ces deux
algorithmes développés seront utilisés pour la transmission d’images.
Dans ce projet, nous avons mis en œuvre une chaîne logicielle complète pour la
transmission d’images fixes.
L’ensemble de ces idées est développé en cinq chapitres.
− Le premier chapitre présente les différents blocs constituant une chaîne de
communication numérique.
− Dans le deuxième chapitre, nous exposons les techniques de compression
conservatives, ainsi que les techniques de compression non conservatives. Dans laquelle,
nous étudions particulièrement l'algorithme JPEG de compression d'image, qui est la
combinaison de plusieurs techniques de compression.
− Le troisième chapitre introduit les principaux codes correcteurs d'erreur. Nous
finissons ce chapitre par une brève description de l'algorithme de Peterson-Gorenstein-
Zierler et de Berlekamp-Massey.
− Le quatrième chapitre présente les algorithmes que nous avons implémenté en utilisant
le langage C++.
− Le chapitre 5 sera consacré aux résultats de simulation de la chaîne qu’on a pu élaboré.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 14/101
Introduction Générale
Chapitre I
GÉNÉRALITÉ
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 15/101
Introduction Générale
CHAPITRE I : GÉNÉRALITÉ
I.1 Introduction
Dans ce chapitre, nous commençons par une représentation schématique d’une chaîne
de communication numérique. Par la suite nous présentons un à un les différents blocs
constituants la chaîne, en allant de la source du message jusqu’au destinataire.
I.2 Principaux éléments d’une chaîne de communication numérique
Une chaîne de communications numériques est composée généralement des
principaux blocs suivants :
− Source de message
− Codeur de source
− Codeur de canal
− Emetteur
− Canal de transmission
− Récepteur
− Décodeur de canal
− Décodeur de source
− Destinataire
Dans la suite, nous présentons les différents blocs constituant la chaîne.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 16/101
Introduction Générale
D : Débit binaire de la source
D s : Débit binaire à la sortie du codeur de source Dc : Débit binaire à la sortie du codeur de canal
Figure 1 : Principe d'une chaîne de communications numériques
I.2.1 Source de message
Comme son nom l’indique, la source délivre le message à transmettre vers le
destinataire tel qu’un fichier image, texte, voix ou vidéo. Un message est constitué par une
suite de symboles. Dans le cas binaire, ces symboles prennent leurs valeurs dans un alphabet
à deux éléments 0,1.
Dans le cas général, le message délivré par la source est analogique. Pour faciliter sontraitement ou sa transformation, il doit être numérisé. La numérisation se fait en
échantillonnant le message analogique par une fréquence d’échantillonnage bien choisit puis
en quantifiant les échantillons obtenus ensuite chaque échantillon est codé sur m symboles
binaires.
La source est caractérisé par son débit binaire D, définit comme le nombre de
symboles binaires qu’elle émet par unité de temps.
DébitbinaireD
c >Ds
Débitbinaire
Ds< D
Messagenumérique
caractérisépar un
débit D
Source de
message
Codeur desource
Codeur de canal
Emetteur
Canal detransmission
Décodeur desource
Décodeur decanal
Récepteur Destinataire
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 17/101
Introduction Générale
I.2.2 Le codeur de source
Le message délivré par la source est ensuite traité par le codeur de source. Son rôle est
de réduire le débit binaire de la source. Cela se fait en représentant le message numérique
issu de la source sous une forme beaucoup plus compacte, c'est-à-dire en utilisant leminimum de symboles binaires. A la sortie du codeur de source le débit binaire D s est
nettement inférieur au débit D à la sortie de la source.
I.2.3 Le codeur de canal
Le codage canal appelé aussi codage correcteur d’erreurs. Comme son nom l’indique,
son rôle est de protéger les donnés numériques contre les erreurs introduites par le canal de
transmission. Ce qui permet d’améliorer les performances d’une chaîne de communicationnumérique. La littérature propose plusieurs algorithmes de codage pour assurer ce besoin.
La réalisation de ces algorithmes est possible grâce aux progrès techniques des circuits
intégrés.
A la sortie du codeur de canal, le débit Dc est strictement supérieur au débit D s à la
sorti du codeur de source. En effet, le codage canal consiste à insérer dans le message issu
du codeur de source des symboles de redondance suivant une loi donnée. On appelle
rendement du code ou encore le taux de codage le rapport :
c
s
D
D R =
I.2.4 L’émetteur ou le modulateur
L’émetteur assure l’opération de modulation qui consiste à associer au message
numérique issu du codeur de canal, un signal analogique compatible avec le milieu de
transmission utilisé. Le choix de ce signal analogique dépend des propriétés physiques dumilieu de transmission. L’émetteur assure donc une fonction d’adaptation au milieu de
transmission.
L’émetteur assure d’autres traitements tel que le filtrage du signal pour limiter sa
bande. Ce qui permet à plusieurs utilisateurs de partager le même milieu de transmission
sans risque d’interférence. L’émetteur peut assurer aussi une fonction de changement de
fréquence ce qui permet de centrer le signal autour de la fréquence f 0 alloué à la
transmission.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 18/101
Introduction Générale
I.2.5 Canal de transmission
Un canal peut être un câble coaxial, une liaison radioélectrique, un câble bifilaire, une
fibre optique ou un support d’enregistrement comme la bande magnétique. En traversant le
milieu de transmission, le signal issu de l’émetteur peut être affecté par des perturbations.Par mis ces perturbations, on peut citer le bruit additif généré par les dispositifs situés dans
le récepteur ainsi que les interférences causées par le milieu de transmission. Ces
interférences proviennent des autres utilisateurs du milieu, des interférences dues aux effets
climatiques ou du bruits industriels.
I.2.6 Le récepteur
Le récepteur a pour fonction de reconstituer le message à la sortie du codeur de canal à partir du signal reçu. Le récepteur comprend des circuits permettant d’amplifier le signal
reçu et d’effectuer des opérations de changement de fréquence et de démodulation.
I.2.7 Le décodeur de canal
Le décodeur de canal reçoit le message fourni par le récepteur et exploite la
redondance introduite par le codeur de canal, pour essayer de détecter puis éventuellement
de corriger les erreurs pouvant affecter le message reçu. Des algorithmes de décodage
assurent ce besoin.
I.2.8 Le décodeur de source
Le décodeur de source reçoit la séquence de symboles provenant du décodeur de
canal. Connaissant le traitement réalisé par le codeur de source, il reconstitue le message
original.
La qualité du message reconstitué peut être mesuré en évaluant la probabilité d’erreur
par symbole à la sortie du décodeur source en le comparant avec celui à la sortie de la
source du message.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 19/101
Introduction Générale
I.2.9 Conclusion
Nous venons d’introduire les différents blocs constituants une chaîne de transmission
numérique. Nous avons également présenté l’intérêt de chaque bloc dans la chaîne.
Nous proposons dans le prochain chapitre une présentation du codage source adapté à
la transmission d’images appelé encore compression d’images.
Nous présentons également chaque technique de compression et nous finissons par
une comparaison entre ces différents types de compression.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 20/101
Chapitre I Généralité
Chapitre II
CODAGE DE SOURCE
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 21/101
Chapitre I Généralité
CHAPITRE II : CODAGE DE SOURCE
II.1 Introduction
Le codage de source à pour rôle de résoudre le problème causé par la taille du fichier à
transmettre. En effet, l’utilisation du codage de source permet une réduction importante de
la quantité de données. La transmission sur des réseaux, ou le débit est relativement faible,
devient beaucoup plus lente que le poids des données est important. D’où l’utilité de
l’installation d’un codeur de source dans une chaîne de transmission [5].
Exemples d'utilisation de la compression pour le transport :
• Réseaux par câbles (Minitel, Internet dont la bande passante est très faible…).
• Réseaux sans fil (communication par satellite, télévision par satellite, le téléphone
portable ...).
La littérature propose plusieurs algorithmes de codage source qu’on peut appelés aussi
algorithmes de compression [12]. Ces algorithmes sont réalisés en réduisant toutes les
formes possibles de redondance. Nous distinguons deux techniques de compression :
- Les techniques de compression conservatrices (RLE, LZW, Huffman) qui permettent
de reconstituer, en fin de la chaîne, un signal identique au signal à l’entrée du codeur de
source. Ce type de compression est utilisé dans le cas ou les données informatiques doivent
rester identiques à leur original (textes, programmes informatiques, ...).
- Les techniques de compression non conservatrices. Dans ce cas, les données
reconstituées en fin de processus diffèrent de leur original, mais la différence n’est
pratiquement pas perçue par l’utilisateur. Ce type de compression est utilisé pour les images
fixes et animées ( JPEG, ondelettes, fractales, MPEG, ...), la parole et la musique.
Les différents algorithmes de compression sont choisis en fonction de :
• Leur taux de compression (rapport de la taille du fichier compressé sur la taille du
fichier initial).
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 22/101
Chapitre I Généralité
• La qualité de compression (dans le cas de compression avec perte).
• La vitesse de compression et de décompression.
Dans les paragraphes suivants, nous présentons les deux techniques de compression
conservatives et non conservatives. Nous étudions particulièrement l’algorithme JPEG de
compression d’image qui est la combinaison de plusieurs techniques de compression.
II.2 Les techniques de compression conservatrice
L’objectif de ce paragraphe est d’introduire les importants algorithmes de
compression conservative :
II.2.1 Codage de Huffman
Une source d’information émet des messages qu’on peut déterminer la probabilité
d’apparition. Pour améliorer l’efficacité de la transmission, il faut coder les messages en
mots dont la longueur varie en sens inverse de leur fréquence.
Le premier code basé sur les résultats de la théorie de l’information était le code
Shannon-Fano. Huffman a après introduit le code qui porte son nom, et dont il a démontré
que l’efficacité est toujours supérieure à celle du code Shannon-Fano.
Ce paragraphe est une présentation générale du codage de Huffman.
A . P RINCIPE DE LA M ÉTHODE DE H UFFMAN
Le codage de Huffman est une méthode de compression statistique de données qui
permet de réduire la longueur du codage d'un alphabet.
Ce codage est utilisé en particulier pour la transmission de messages par télécopie et
sur minitel.
C’est un procédé de codage dans lequel la longueur des mots codés varie en sens
inverse de leur probabilité d’apparition. En d’autres termes les données qui ont une
occurrence très faible sont recodées sur une longueur binaire supérieure à la moyenne, alors
que les données très fréquentes sont recodées sur une longueur binaire très courte.
Ainsi, pour les données rares, nous perdons quelques bits regagnés pour les données
répétitives. Par exemple, dans un fichier ASCII le "w" apparaissant 10 fois aura un code très
long 101000001000. Ici la perte est de 40 bits (10 x 4 bits), car sans compression, il serait
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 23/101
Chapitre I Généralité
codé sur 8 bits au lieu de 12. Par contre, le caractère le plus fréquent comme le "e" avec 200
apparitions aura un code à 1. Le gain sera de 1400 bits (7 x 200 bits).
De plus, le codage de Huffman a une propriété de préfixe : une séquence binaire ne
peut jamais être à la fois représentative d'un élément codé et constituer le début du code d'unautre élément. Cette propriété permet de décoder sans ambiguïté toute séquence, ce qui évite
d’avoir à inclure des séparateurs entre les mots.
Par exemple, si un caractère est représenté par la combinaison binaire 100 alors la
combinaison 10001 ne peut être le code d'aucune autre information. Dans ce cas,
l'algorithme de décodage interpréterait les 5 bits comme une succession du caractère codé
100 puis du caractère codé 01. Cette caractéristique du codage de Huffman permet une
codification à l'aide d'une structure d'arbre binaire.
B . M ÉTHODE DE COMPRESSION
L'algorithme se décompose en deux phases. La première consiste à lire entièrement
l'ensemble des données source et à comptabiliser le nombre d'apparitions de chaque
information : on bâtit ainsi une table des occurrences. Cette table est ordonnée suivant
l'ordre décroissant des fréquences.
Ensuite, on procède à des réductions successives jusqu'à la fin de la table. Une
réduction consiste à prendre les deux éléments de la table ayant les plus petites fréquences
(ou probabilités) et à les assembler. A ce nouvel élément ainsi constitué, on associe une
fréquence résultante de la somme des deux fréquences associées. Puis, il est reclassé dans la
table. Les deux membres initiaux en ont été éliminés.
L'assemblage se fait par l'intermédiaire d'un arbre binaire. On construit un noeud (ou
racine pour le premier) avec deux branches. L'élément de plus faible fréquence est placé sur
la branche de droite (appelée feuille droite), l'autre sur la branche de gauche (appelée feuille
gauche). On peut inverser la répétition des deux feuilles. Seul le codage sera différent avec
des "0" à la place des "1" et des "1" à la place des "0", mais la longueur du code sera la
même.
Feuille gaucheF
1F
2
noeud (ou racine)
Feuille droite
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 24/101
Chapitre I Généralité
Ainsi, deux éléments n'en font plus qu'un, et le nombre d'éléments total de la liste
diminue de un à chaque itération. Cette opération est répétée jusqu'à ce qu'il n'y ait plus
qu'un seul élément. Ce dernier noeud sera précisément la racine de l'arbre final.
Une fois l'arbre est terminé, nous pouvons attribuer aux feuilles (donc les informationssource) des valeurs dictées par la structure de l'arbre.
Pour chaque élément, pour atteindre sa feuille correspondante, on commence la
recherche à partir de la racine de l'arbre. A chaque pas à droite, on ajoute "0" à une chaîne
représentative du codage qui sera initialement nulle. A chaque pas à gauche, on ajoute "1" et
cela jusqu'à ce qu'on atteigne la feuille.
Il est évident qu'une fois le codage effectué, il faut relire l'ensemble des données pour
les coder. Aussi, pour que le codeur et le décodeur soient en phase, il faut transmettre la
table codage/décodage avant de coder les informations.
C . E XEMPLE PRATIQUE DU CODAGE DE H UFFMAN
Il s’agit de construire la table de codage de Huffman des éléments présenté dans le
tableau suivant :
Tableau 1 : Tables des occurrences
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 26/101
Chapitre I Généralité
Figure 2 : Exemple montrant comment un code de Huffman est établit
D. L IMITES DU CODAGE DE HUFFMAN
Malgré son efficacité, cet algorithme comporte quelques inconvénients :
− Premièrement, afin de constituer la table des fréquences et le codage de
l'information, il faut lire une première fois l'ensemble des données sources. En fonction de
sa dimension, on perd plus ou moins de temps.
− Deuxièmement, lors de la transmission d'information, il faut copier cette table de
décodage pour que le décodeur restitue l'ensemble des données sources. C'est-à-dire que l'ondevra faire figurer en tête de fichier les clés de décodage des octets. Pour les petits fichiers,
cet en-tête prend proportionnellement beaucoup de place et le gain peut être négatif.
Ces deux défauts sont liés à la méconnaissance de la table de codage/décodage. Cet
algorithme peut être amélioré en compilant une statistique décrivant la répartition des
données susceptibles d'être rencontrées. Dans le cas de la compression de fichier texte, il
existe des tables de statistiques pour l'alphabet lexical. Ces probabilités d'apparition
changent suivant la langue utilisée dans le fichier source. Ces tables statistiques intégrées
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 27/101
Chapitre I Généralité
dans un compresseur/décompresseur limitent l'utilisation d'un tel programme à la
compression de fichier texte uniquement. Pour la compression d’image, la méthode de
compression JPEG utilise des tables prédéfinies optimisées pour être utilisé pour tout type
d’images.
De plus cet algorithme de compression est très sensible à la perte d'un bit, toutes les
valeurs qui suivront un bit perdu seront fausses lors de la décompression.
E . C OMMENTAIRES
Lors de l'étude de la méthode de Huffman, nous avons mis en évidence le problème de
connaissance de la table de correspondance codage binaire, probabilité d'apparition d'un
message.
Ce principe de compression est aussi utilisé dans le codage d'image TIFF (Tagged
Image Format File) spécifié par Microsoft Corporation et Aldus Corporation. Par Ailleurs,
le codage d'image est fait en retranscrivant exactement le contenu d'une image, en utilisant
les méthodes traditionnelles de compression. Il existe des méthodes qui ne conservent pas
exactement le contenu d'une image (méthodes non conservatives). Mais, dont la
représentation visuelle reste correcte. Par exemple, la méthode JPEG ( Join Photographic
Experts Group), qui utilise la compression de type Huffman pour coder les informations
d'une image, est une combinaison de techniques de compression ne conservant pas
exactement le contenue de l’image : elle est dite méthode de compression « destructive ».
Malgré son ancienneté, cette méthode est toujours utilisée, et offre des performances
appréciables. En effet, beaucoup de recherches en algorithmiques ont permis d'améliorer les
fonctionnalités de la méthode Huffman de base, comme avec les arbres binaires, arbres
équilibrés, etc.
II.2.2 RLE (Run Length Encoding)
Cet algorithme exploite les répétitions successives de caractères.
A . A LGORITHME DE COMPRESSION
L’algorithme de compression suit les étapes suivantes :
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 28/101
Chapitre I Généralité
− Recherche des caractères répétés plus de n fois, avec n est un nombre fixé par
l'utilisateur. Ce nombre n doit être au moins égal à 3. Sinon, on risque d’augmenter la taille
de la chaîne.
− Remplacement de l'itération de ce caractères par : un caractère spécial identifiant unecompression suivi par le nombre de fois où le caractère est répété puis le caractère répété.
B. A LGORITHME DE DECOMPRESSION
Durant la lecture du fichier compressé, lorsque le caractère spécial est reconnu, on
effectue l'opération inverse de la compression tout en supprimant ce caractère spécial [5].
C. E XEMPLE
PRATIQUE
Par exemple, on cherche à compresser la chaîne suivante :
AAAAARRRRRROLLLLBBBBBUUTTTTTT
On choisit comme caractère spécial : @ et comme seuil de répétition : 3.
Après compression : on aura @5A@6RO@4L@5BUU@6T.
On gagne 11 caractères soit 38%.
D . C OMMENTAIRE
Cet algorithme est essentiellement utilisé pour la compression des images. Il est très
simple à implémenter. Le seul inconvenant est son taux de compression qui est relativement
faible en le comparant avec les autres algorithmes de compression. Généralement, il est
utilisé avec d’autres techniques de compressions. Citons comme exemple, la compression
JPEG qui utilise la RLE .
II.2.3 LZW (Lempel-Ziv Welch)
Cet algorithme réduit la taille des chaînes de caractères [5].
A . A LGORITHME DE COMPRESSION
Cet algorithme utilise une bibliothèque, c'est-à-dire une table de données contenant
des chaînes de caractères.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 29/101
Chapitre I Généralité
Au cours du traitement de l'information, les chaînes de caractères sont placées une par
une dans la bibliothèque. Lorsqu'une chaîne est déjà présente dans la bibliothèque, son code
de fréquence d'utilisation est incrémenté.
Les chaînes de caractères ayant des codes de fréquence élevés sont remplacées par unmot ayant un nombre de caractères le plus petit possible et le code de correspondance est
inscrit dans la bibliothèque. On obtient ainsi une information encodée et sa bibliothèque.
B . A LGORITHME DE DÉCOMPRESSION
Lors de la lecture de l'information encodée, les mots codés sont remplacés dans le
fichier par leur correspondance lue dans la bibliothèque. Ainsi, le fichier original est
reconstitué.
C. C OMMENTAIRES
Cette méthode est peu efficace pour les images. Mais, elle donne de bons résultats
pour les textes et les données informatiques.
II.3 LES TECHNIQUES DE COMPRESSION NON CONSERVATRICE
II.3.1 Introduction
Ce type de technique de compression est utilisé essentiellement pour les images fixes
et animées ( JPEG, ondelettes, fractales, MPEG, DivX ...) en utilisant une transformation du
contenue de l’image.
Il a été démontré qu'il n'est pas possible d'obtenir des taux de compression intéressants
à partir du contenu de l'image, c'est-à-dire en travaillant dans l'espace pixel, en raison de la
faible corrélation spatiale des points.
Il faut transformer ce contenu soit pour éliminer la corrélation spatiale, dans le cas de
la DCT , soit pour l'augmenter par séparation en plusieurs espaces, dans le cas des
ondelettes.
Il existe de très nombreux formats compressés : compression JPEG, fractale ou par
ondelettes pour les images, norme MPEG et format DivX pour les séquences vidéos.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 30/101
Chapitre I Généralité
Dans les paragraphes suivants, on présente les principales techniques de compression
d’images. On commence par définir qu’est ce qu’une image numérique, puis on présente La
compression JPEG, la compression d'images par ondelettes et nous finissons par la
technique de compression fractale.
II.3.2 Qu’est ce qu’une image numérique ?
On peut séparer les images numériques en deux grandes familles : les images
numérisées d’origine extérieure et les images de synthèse qui sont produites sur un
ordinateur.
Les images sont décomposées géométriquement en petites surfaces élémentaires
appelés les pixels. Chaque pixel est défini par ses abscisses et ordonnées précisant son
emplacement dans l’image.
Le stockage de l’image en mémoire est réalisé en conservant les données concernant
chaque pixel dans une matrice ou à chaque pixel correspondra une case de la matrice.
Une image en noir et blanc ne nécessitera que l’intervention de deux types de pixels
différents pour être décrite. Un seul bit suffira donc pour coder la valeur d’un pixel. Les
images à plusieurs niveaux de gris sont définies avec 256 niveaux de gris, mais seuls 128
sont reconnaissables par l’œil. La quantité d’information est de 8 bits par point.
Une image colorée est toujours le mélange de trois images de couleurs données, donc
le mélange de trois images monochromes. Par combinaison linéaire on peut alors réaliser
environ 16 millions de couleurs différentes. Ces couleurs sont indépendantes entre elles. Ces
trois couleurs sont nécessaires pour restituer l’ensemble des couleurs observables par le
système visuel humain. Elles forment un espace vectoriel de trois dimensions
Les principaux paramètres utilisés pour la description d’un fichier image sont les
suivants :
- Dimension de l’image qui est définie par le nombre de pixels par ligne et le nombre de
lignes constituant l’image.
- Méthode de rangement des pixels.
- Méthode de rangement des bits d’un pixel.
- Algorithme de compression.
- Nombre de bits par pixel.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 31/101
Chapitre I Généralité
- Structure d’un pixel : codage de la couleur.
II.3.3 Introduction à la compression d’une image numérique
Une image sous forme numérique est constituée d'une matrice de pixels contenant des
informations sur la couleur de chacun d'entre eux. Cette information peut être codée sur 1
bit, 8 bits, 16 ou 24 bits dans ce dernier cas, chaque octet code l'une des couleurs
fondamentales, le rouge, le vert ou le bleu. Il est même possible de rajouter un octet
contenant une information de transparence: l'information de couleur sera donc codée sur 32
bits.
La taille en octets de l'image est proportionnelle à la précision sur la couleur, et à sa
taille en pixels. La taille en octets d'une image 24 bits est considérable: une image 300x200
est d’environ 176 Ko de taille. D'où l'intérêt des algorithmes de compression pour une
transmission via le Web par exemple. Ceci est encore plus vrai pour une séquence de 25
images (300x200, 24 bits) par seconde d'une durée d'une minute, dont la taille est d'environ
258 Mo.
La compression d’images utilise les deux techniques de compression :
- Les techniques de compression conservatrice, qui permettent de reconstituer, en fin de
processus, une image identique à l’image initiale. Une présentation de ces technique estl’objet du paragraphe précèdent.
- Les techniques de compression non conservatrice. Dans ce cas l’image reconstituée en
fin de processus diffère de l’image initiale, mais la différence de qualité n’est pratiquement
pas perçue par l’œil de l’utilisateur.
La compression est réalisée en réduisant toutes les formes possibles de redondance
qu’une image peut présenter :
- Redondance spatiale: tous les pixels sont identiques à l’intérieur d’une plage
uniforme de l’image. Il suffit d’en coder un pour caractériser la plage considérée. La
technique de la Transformée en Cosinus Discrète ( DCT ) utilisée dans l’algorithme JPEG,
met en évidence cette redondance spatiale à l’intérieur de chaque image.
- Redondance statistique : certaines données se répètent beaucoup plus fréquemment
que d’autres. La compression sera réalisée en attribuant des codes d’autant plus courts que
la fréquence est élevée.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 32/101
Chapitre I Généralité
- Redondance subjective, mise à profit dans la compression non conservatrice : elle
découle des imperfections de l‘œil humain. Des pixels présentant des caractéristiques assez
proches pour être perçus de manière identique peuvent être traités comme des pixels
identiques.
On peut noter que l’œil est beaucoup plus sensible aux variations d’intensité
lumineuse (luminance) qu’à celles de la couleur (chrominance) : les informations sur la
couleur peuvent donc être davantage compressées que celles sur la luminance. De même,
des pixels trop proches pour être distingués par l‘œil peuvent être regroupés.
II.3.4 La compression JPEG
Nous allons étudier l’un des algorithmes les plus célèbres, créé il y a maintenant plus
de vingt ans, la norme JPEG.
Le format JPEG ( Joint Photographic Experts Group) permet d'atteindre des taux de
compression (sans perte notable de qualité) jusqu'à un facteur 25. La compression JPEG est
très répandue sur le Web. La compression d'images par la norme JPEG est une méthode
« destructrice », c'est à dire que lors de la compression, des informations sont
définitivement perdues par rapport à l'image originale [2].
Cette technique repose sur une transformation matricielle appelée Discrete Cosine
Transform ( DCT ).
La norme JPEG est née de la recherche d'une norme pour la compression des données
graphiques. Cette norme comprend des spécifications pour le codage conservatif et non
conservatif . Mais, la partie la plus intéressante de la spécification JPEG est celle traitant de
la compression non conservative.
Nous présenterons dans ce paragraphe la norme JPEG et nous détaillerons pas à pas
les différentes étapes de cette méthode. Pour finir nous présentons un exemple pratique.
A . H ISTORIQUE
A la fin des années 80, deux importants groupes de normalisation, le CCITT
(Consultative Committee for International Telegraph and Telephone) et l’ ISO
(Organisation Internationale de Standardisation), appuyés par divers groupes industriels et
universitaires, décidèrent de créer une norme internationale pour la compression d’images
fixes [2].
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 33/101
Chapitre I Généralité
La mise en place d’un standard international était devenue nécessaire pour archiver ou
pour faciliter l’échange des images dans des domaines aussi variés que les photos satellites,
l’imagerie médicale, la télécopie couleur, ou la cartographie…
C’est ainsi que fut créé le groupe JPEG (Joint Photographic Experts Group) à l’originede la norme qui porte son nom. Cette norme comprend des spécifications pour les codages
conservateurs (l’image est restituée identique à elle-même à la suite du codage) et non
conservateurs (l’image est modifiée pendant le cycle de compression mais cette
modification reste imperceptible pour l’œil) de l’image.
Le JPEG est aujourd’hui largement utilisé dans les secteurs de l’informatique et de la
communication (appareils photo numériques, scanners, imprimantes, télécopieurs…). Cette
norme offre l’un des meilleurs rapports qualité/taille de l’image disponible.
B. L ES DIFFÉRENTES ÉTAPES DE LA COMPRESSION NON CONSERVATIVE D' UNE IMAGE
La figure suivante représente schématiquement le principe de la norme JPEG. Nous
allons détaller par la suite pas à pas chaque étape de la compression [10].
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 34/101
Chapitre I Généralité
Figure 3 : Principe de la norme JPEG
On considère une image 640x480 RGB 24 bits/pixel.
• 1ère étape : Préparation
Décomposions en bloc 8x8
B
G
R
PréparationY
I
Q
Pour chaque bloc 8x8 DCT Quantification
lecture en zigzag
DPCM
RLE
Codage de Huffman10010001111001111…
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 35/101
Chapitre I Généralité
Il est préférable, afin d'obtenir une meilleure compression, de convertir avant
d’effectuer la transformation DCT l'image RGB en image YIQ. Il est très facile d’effectuer
une telle transformation.
En effet, les informations sur la luminance (paramètre Y) et la chrominance (I et Q)sont des combinaisons linéaires des intensités de rouge (R ), vert (G), et bleu (B) :
Y = 0.30 R + 0.59 G + 0.11 B I = 0.60 R - 0.28 G - 0.32 BQ = 0.21 R - 0.52 G + 0.31 B
Chacune des ces trois variables est reprise sous forme de matrice 640x480. Cependant,
les matrices de I et de Q (information sur la chrominance) peuvent être réduites à des
matrices 320x240 en prenant les moyennes des valeurs des pixels regroupés par carré dequatre.
Cela ne nuit pas à la précision des infos sur l'image car nos yeux sont moins sensibles
aux écarts de couleurs qu'aux différences d'intensités lumineuses. Comme chaque point de
chaque matrice est une information codée sur 8 bits, il y a chaque fois 256 niveaux possibles
(de 0 à 255). En soustrayant 128 à chaque élément, on met à zéro le milieu de l’intervalle
des valeurs possibles (de -128 à +127). Enfin chaque matrice est partagée en blocs de 8x8.
• 2ème étape: DCT
La clé du processus de compression est la DCT .
La DCT ( Discret Cosine Transform) qui est au coeur de la méthode a été proposée en
1974 par le professeur Rao de l’université du Texas en 1974 [9].
En théorie, la transformation DCT est sans perte. Cette transformation ne compresse
pas les données : elle modifie simplement les coefficients de la matrice initiale [15].
En pratique, les arrondis vont venir la fausser.
Le but est analogue à celui de la transformée de Fourier d'un signal. Elle prend un
ensemble de points d'un domaine spatial et les transforme en une représentation équivalente
dans le domaine fréquentiel. La matrice initiale donne par DCT une matrice dont les
coefficients en haut à gauche sont les coefficients des basses fréquences et les coefficients
en bas à droite ceux des hautes fréquences.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 36/101
Chapitre I Généralité
Dans le cas présent, nous allons opérer la DCT sur un signal en trois dimensions. En
effet, le signal est une image graphique, les axes X et Y étant les deux dimensions de
l'écran, et l’axe des Z reprenant l'amplitude du signal, la valeur du pixel en un point
particulier de l'écran. La DCT permet de convertir une information spatiale en une
information spectrale dont les axes X et Y représentent les fréquences du signal en deux
dimensions.
La transformation est réalisée, non pas sur l’image entière, mais sur des fractions de
l’image, des blocs de 8 x 8 pixels. Car en augmentant la taille des blocs nous obtiendrions
une meilleure compression, mais au détriment du temps de traitement.
La DCT, effectuée sur chaque matrice 8x8 de valeurs de pixels, donne une matrice 8x8
de coefficients de fréquence: l'élément (0,0) représente la valeur moyenne du bloc, les autres
indiquent la puissance spectrale pour chaque fréquence spatiale. Généralement, plus qu’on
s’éloigne du coin supérieur gauche plus les valeurs de la matrice résultante s’approche de 0.
Cela traduit le fait que l’information effective de l’image est concentrée dans les basses
fréquences. C’est le cas de la majorité des images.
Appliqué à une matrice carrée de dimension N x N la DCT bidimensionnelle s’écrit :
+
+= ∑∑
−
=
−
= 2
1cos.
2
1cos).,()().(
2),(
1
0
1
0
yv N
xu N
y x f vcuc N
vu F N
x
N
y
π π
Avec f(x, y) représentent les éléments de la matrice sur laquelle on va effectuer la
transformation [15].
c (u) est définit part :
1,....2,11)(
2
1)0(
−==
=
N w siwc
c
F(u,v)f(i,j)
DCT
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 37/101
Chapitre I Généralité
La transformation inverse est donnée par :
+
+= ∑∑
−
=
−
= 2
1cos.
2
1cos).,().().(
2),(
1
0
1
0
v y N
u x N
y x F yc xc N
vu f N
x
N
y
π π
La DCT est conservative si l'on ne tient pas compte des erreurs d'arrondis qu'elle
introduit.
• 3ème étape : La quantification
Une fois la transformation DCT effectuée, la première étape de la compression
proprement dite est la quantification des coefficients DCT .
En effet, la quantification représente la phase non conservatrice du processus de
compression JPEG. Elle permet, en diminuant la précision de l’image, de réduire le nombre
de bits nécessaires au stockage. Pour cela, elle réduit chaque valeur de la matrice DCT en la
divisant par un nombre fixé par une table de quantification, que l’on appelle encore une
matrice de quantification (matrice 8 x 8).
Ces 64 quantificateurs sont soit calculés en fonction d'un paramètre de compression,
soit donnés par des tables standards construites en fonction de critères psycho visuels,
optimisées par les concepteurs du format JPEG.
Il existe une table de quantification pour l'information de luminance et une autre pour
l'information de chrominance.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 38/101
Chapitre I Généralité
Luminance Chrominance
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
17 18 24 47 99 99 99 99
18 21 26 66 99 99 99 99
24 26 56 99 99 99 99 99
47 66 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
Tableau 2: Exemple de table de quantification pour la luminance et la chrominance
De ce fait, chaque coefficient DCT est divisé par le quantificateur correspondant, puis
arrondi à l'entier le plus proche. L'étape de quantification est donc l'étape de perte
d'information.
) ji,(quantum
) ji,(DCTvaleur ) j,i(quantifiéeValeur = arrondie à l’entier le plus proche.
Ces 64 quantificateurs peuvent être calculés en fonction d'un paramètre de
compression en utilisant une formule mathématique.
Pour simplifier on peut prendre ( ) Fqn jni μi,jquantum ×
+++= 11
avec 1== n µ ce qui donne ( ) ( ) Fq jii,jquantum ×+++= 11
F q est le facteur de qualité. C’est le paramètre qu’on modifie quand on choisit la
qualité de restitution dans un logiciel comme « Paint Shop Pro ».
Les nombreux tests réalisés ont conduit à retenir en pratique des facteurs de qualité
compris entre 1 (l’image reste excellente) et 25 (dégradation maximale acceptable).
Voici la matrice de quantification que nous obtenons en fixant le facteur de qualité F q = 5 :
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 39/101
Chapitre I Généralité
7671666156514641
71666156514641366661565146413631
6156514641363126
5651464136312621
5146413631262116
4641363126211611
41363126211611 6
Figure 4 : Exemple de table de quantification
Ultérieurement, lors de la restitution de l’image (décompression), il suffira de réaliser
l’opération inverse (déquantification) en multipliant chaque valeur de la matrice quantifiée
par le quantum correspondant, pour retrouver une matrice DCT déquantifiée, à partir de
laquelle sera établie la matrice des pixels de sortie. La valeur du quantum peut être d’autant
plus élevée que l’élément correspondant de la matrice DCT contribue peu à la qualité de
l’image, donc qu’il se trouve éloigné du coin supérieur gauche.
• 4ème étape : linéarisation
La matrice 8x8 est transformé en une suite de 64 nombres en s'arrangeant pour que les
éléments les moins importants soit regroupés en fin de liste, on parle de méthode zigzag. Ce
balayage particulier appeler lecture en zigzag permet d’obtenir des suites de 0 les plus
grandes.
Figure 5 : Lecture en ZIGZAG
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 40/101
Chapitre I Généralité
Ceci permettra par la suite d'améliorer encore plus la compression des données.
• 5ème étape : Differential Pulse Code Modulation (DPCM)
On remplace chaque premier élément (0,0) des blocs (8x8) par sa différence avec
l'élément correspondant du bloc précédent. Comme ces éléments sont les moyennes de leur
bloc respectif, ils varient lentement. Ce seront donc de plus petits nombres qui prendront
moins de place mémoire.
• 6ème étape : Run Length Encode (RLE)
Le vecteur 1x64 contient beaucoup de zéros. On code des paires ( skip, value), ou skip
est le nombre de zéros et value est la valeur de la composante AC non nulle suivantimmédiatement la chaîne de zéros dans l'ordre de la lecture en Zigzag .
Pour les derniers 0 du bloc, non suivis d'une valeur non nulle, un End Of Block est
envoyé.
• 7ème étape : Codage Entropique (sans perte)
Après l'encodage DPCM et RLE , les valeurs obtenues sont codés à l'aide d'un Variable
Length Code : codage de Huffman.
C . E XEMPLE DE COMPRESSION
Voici une comparaison des différents niveaux de qualité que l'on peut obtenir, lorsque
l'on compresse une image avec JPEG. Il faut préciser que la qualité obtenue est un facteur
tout à fait subjectif qui dépendra aussi du type d'image utilisée.
Les niveaux de compressions correspondent à ceux du logiciel « Paint Shop Pro ».1 correspond à un facteur de qualité donnant le moins de perte et 90 à la moins bonne
qualité.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 41/101
Chapitre I Généralité
Figure 6 : LENA originale
Nous allons agir sur l'image ci-dessous. Nous avons agrandi la représentation d’un
détail de l’image afin de bien visualiser l'effet de la compression.
On voit apparaître les macro blocs au fur et à mesure que le taux de compression
augmente.
1 20 40
60 80 90
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 42/101
Chapitre I Généralité
Tableau 3: Tableau comparatif des différents niveaux de qualité
D . C ONCLUSION
Actuellement, la méthode de compression JPEG est parmi les plus utilisées, parce
qu'elle atteint des taux de compression très élevés, sans que les modifications de l'image ne
puissent être décelées par l'œil humain. De plus, beaucoup d'implémentations permettent de
choisir la qualité de l'image comprimée grâce à l'utilisation de matrices de quantification
paramétrables.
Il existe d'autres techniques de compression d'image, notamment la compression par
ondelettes.
II.3.5 Les ondelettes
Il ne s'agit pas ici de détailler l'ensemble de la théorie et de la mise en oeuvre des
ondelettes pour la compression d'images, il ne s'agit que d'une brève présentation.
Les domaines d'application des ondelettes sont nombreux nous pouvons citer l’analyse
des signaux, compression d'images, traitement du son, géologie etc.
De même que le JPEG, la compression d'images par ondelettes est une méthode
destructrice. Cette technique permet en effet de compresser différemment des zones de
l'image selon la quantité d'informations détenues par celles-ci.
En fait, les zones à fort contraste sont considérées comme des zones à hautes
fréquences et à l'inverse, les zones à faible contraste sont dites basses fréquences.
Les ondelettes appliquent une méthode d'approche qui est globale à l'image, ceci
permet d'éviter le phénomène de mosaïque propre à la technologie JPEG (approche par
blocs) dès que le taux de compression devient trop élevé. Ce Phénomène est visible sur la
figure suivante.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 43/101
Chapitre I Généralité
Figure 7 : Image de LENA pour un taux de compression élevé
L'idée est de construire une représentation qui fait à la fois apparaître des informationstemporelles et fréquentielles. Ce type de représentation peut par exemple aider à représenter
la structure physique de la structure géologique à l'origine du signal, c'est d'ailleurs dans ce
domaine que les ondelettes ont démarré.
Dans ce type de graphique les variations de fréquence vont représenter les zones,
contrastées ou pas. Selon le type de zone détectée, la compression ne sera pas appliquée de
la même façon.
On dit que l'analyse d'un signal par les ondelettes est similaire à l'analyse de Fourier
puisqu'elle transforme aussi un signal en ses principaux constituants afin de l'analyser.
Cependant, la transformée de Fourier ne suffit plus ici. Elle est en effet incapable de
détecter quelles portions du signal varient lentement ou rapidement, or nous avons besoin de
distinguer les zones riches en information de celles qui ne le sont pas.
Avec les ondelettes le signal est découpé en différents morceaux qui sont des versions
translatées et dilatées d'une même fonction appelée « ondelette mère ». Le concept d'échelle
apparaît. Il en résulte une superposition d'ondelettes décalées et dilatées qui ne différent
entre elles que par leur taille. On obtient une « transformée en ondelettes », fonction
composée de deux variables : le temps et l'échelle (la dilatation).
Le point fort de cette technique est que les ondelettes s'adaptent en fonction des
caractéristiques recherchées : Hautes fréquences (l'ondelette est très fine) ou basses
fréquences (l'ondelette s'étire). Cette particularité a un nom : « Multi résolution ».
Pour l’analyse de l'image, on utilise une gamme étendue d'échelles. On remplacel'image par l'approximation la plus adéquate possible : on passe donc des échelles les plus
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 44/101
Chapitre I Généralité
fines vers les plus grossières et on accède à des représentations de plus en plus grossières de
l'image donnée. L'analyse s'effectue en calculant ce qui diffère d'une échelle à l'autre, c'est-
à-dire les détails qui permettent, en corrigeant une approximation encore assez grossière,
d'accéder à une représentation d'une qualité meilleure.
La DWT ( Discrete Wavelet Transform) est une méthode de compression, à base
d'ondelettes, utilisée par le format JPEG 2000, successeur du JPEG, qui lui est à base de
DCT ( Discrete Cosine Transform).
Grâce à l'utilisation des ondelettes, ce format bénéficie d'une compression 50 à 100
fois supérieure à son ancêtre JPEG, tout en conservant une bien meilleure définition des
détails sur l'image finale. Celle-ci peut de plus être téléchargée de manière progressive. Si
les résultats théoriques semblent encourageants, la mise en oeuvre de tels algorithmes resteencore très lourde à l'heure actuelle.
Un exemple d'utilisation des ondelettes pour la compression d'images est donné par la
figure suivante, il s'agit d'archivage d'empreintes digitales.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 45/101
Chapitre I Généralité
Figure 8 : Système de compression d'empreintes digitales
II.3.6 Les fractales
Pour beaucoup, les fractales ne sont pas seulement un moyen de compresser des
images, mais aussi un moyen d'expression, un art capable de générer des paysages
improbables.
Contrairement aux autres techniques de compression habituelles, la compression
fractale ne tente pas de réduire le nombre de couleurs comme pour le format gif ou de
compresser de manière classique les octets composant l'image. Le principe est ici de
remplacer l'image par des formules mathématiques.
La compression fractale a pour principe qu'une image n'est qu'un ensemble de motifs
identiques en nombre limité, auxquels on applique des transformations géométriques
(rotations, symétries, agrandissements, réductions). Evidemment, plus l'image possède cette
propriété plus le résultat sera meilleur.
Comme pour le format JPEG, l'image est découpée en blocs de pixel, mais ils sont ici
de tailles variables. Il faut ensuite détecter les redondances entre ces blocs à diverses
résolutions. On parle de transformations fractales basées sur un opérateur contractant. Ces
transformations décrivent l'image de plus en plus finement.
A la fin de ce processus, on stocke seulement les équations mathématiques permettant
de représenter le contenu de ces carrés.
Au final, on obtient une structure présentant des caractéristiques similaires à des
échelles différentes. Pour retrouver l'image il suffira de décrire les transformations qui ont
été appliquées aux blocs initiaux.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 46/101
Chapitre I Généralité
Ce processus rend la compression indépendante de la taille de l'image. De plus,
l'image produite est vectorisée et ne subit pas les effets de la pixelisation, contrairement au
JPEG.
Ce phénomène est surtout visible lors d'un zoom par exemple, l'image fractale peutdevenir floue mais ne pixelise pas. Ceci est dû au fait que lors de l'agrandissement, ce ne
sont pas les pixels qui sont élargis, mais toute l'image qui est recalculée mathématiquement.
Le problème lié à cette technique est la lenteur du procédé de compression, de l'ordre
de 50 fois plus lent que pour une image JPEG. La décompression quant à elle est aussi
rapide que pour les autres formats.
Il existe un certain flou au niveau de la standardisation de cette technique de
compression. En effet le format « .FIF » qui est un format compressé par cette technique
n'est pas reconnu par les navigateurs. Pour pouvoir visionner ce type d’image il faut donc
télécharger une visionneuse adaptée.
II.3.7 Conclusion
La compression fractale est moins puissante que les ondelettes (format « .wi ») mais
supérieure au JPEG. Et par conséquent constitue une solution intermédiaire.
Pour les forts taux de compression, les fractales obtiennent de meilleurs résultats que
la norme JPEG.
Outil mathématique puissant, la compression par ondelettes offre de meilleurs résultats
que le JPEG. Inclue dans le nouveau format " JPEG 2000", cette technologie est de plus en
plus utilisée.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 47/101
Chapitre II Codage de source
Chapitre III
CODAGE
DE
CANAL
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 48/101
Chapitre II Codage de source
CHAPITRE III : CODAGE DE CANAL
III.1 Introduction
Dans un système de transmission numérique, la probabilité d’erreur qui peut affecter
le signal à la réception est fonction du rapport signal à bruit à la réception.
Pour réduire la probabilité d’erreur, il faut donc soit accroître la puissance d’émission
de l’émetteur soit affaiblir le bruit. Or cela n’est pas toujours réalisable. Car, d’une part la
puissance émise est généralement limitée par l’énergie disponible pour les équipements à la
source. D’autre par le bruit qui affecte le signal est la conséquence de plusieurs paramètres
difficile à modifier dans la plupart des cas.
Pour améliorer les performances de la chaîne de communication numérique, la
solution consiste à recoder le message numérique à transmettre. Ceci est possible est
ajoutant un codeur de canal au niveau de l’émission et un décodeur de canal au niveau de la
réception pour retrouver le message original.
L’opération de codage de canal, contrairement à celle du codage de source, consiste à
ajouter de la redondance au message numérique à transmettre. Cette redondance structuré
permet au niveau du décodeur de canal de détecter puis éventuellement de corriger les
erreurs de transmission.
Ce chapitre sera consacré à la présentation des principaux codes correcteurs d’erreur.
Nous finissons ce chapitre par une brève description de l’algorithme de Peterson-Gorenstein-Zierler et de Berlekamp-Massey.
Il ne s’agit pas ici de détailler toute la théorie des codes correcteurs d’erreurs.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 49/101
Chapitre II Codage de source
III.2 Les codes correcteurs d’erreurs
III.2.1 Les codes en bloc Linéaires
Un code correcteur d'erreurs est généralement défini par des symboles appartenant àun alphabet fini A. Par exemple, A est l'ensemble des q symboles GF (q) = 0,1,2,…,q-1
[4] [6].
Un code en bloc de taille M et de longueur n, défini sur un alphabet de q symboles, est
un ensemble de M séquences q-aires de longueur n appelées mots de code. Si q = 2, ces
symboles sont des bits. Généralement, M = qk , k étant un entier [7] [6].
Le codage en bloc consiste à associer à chaque séquence de k symboles d'information
un mot de code constitué de n symboles tel que n > k . k est appelé dimension du code.
Le code sera désigné par C (n,k ).
On appelle rendement R d’un code en blocs C (n,k ) le rapport :n
k R = .
Lorsqu'un message est constitué d'un grand nombre de bits, il est plus efficace
d'utiliser un seul mot d’un code relativement long plutôt qu'une succession de mots d'un
code plus court. Vue que, les mots de code longs sont moins sensibles aux erreurs aléatoires
que les mots de code courts. Mais la complexité du codeur et du décodeur risque de
s'accroître. En plus, de tels codes sont difficiles à chercher théoriquement et nécessitent des
circuits compliqués pour réaliser les opérations de codage et de décodage.
Les codes en blocs sont caractérisés par trois paramètres : leur longueur n, leur
dimension k et leur distance minimale d min qui mesure la différence entre les deux mots de
code les plus similaires. Cette distance est la distance de Hamming entre les deux mots de
code les plus proches. C’est aussi le poids minimal du code C :
( ( )cW jiM jiccd d c
ji H 0
min min,,1,,;min≠
=≠=∀=
Supposons que le canal ajoute t erreurs au bloc transmis. La distance entre le mot émis
et le mot reçu est donc égale à t . Si la distance entre le mot reçu et tous les autres mots de
code est strictement supérieure à t , le décodeur va pouvoir corriger les t erreurs en
appliquant l'hypothèse du voisin le plus proche. Cette hypothèse reste valable tant que t
vérifie l'inégalité : 2 t + l < d min.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 50/101
Chapitre II Codage de source
−=
2
1mind t est appelé la capacité de correction du code. Il s’agit du nombre
maximal d’erreurs que peut corriger un décodeur.
La détermination de la distance minimale d’un code en bloc n’est pas toujours simplesurtout si le nombre de mots de code est grand.
Description matricielle des codes linéaires
Un code linéaire C est un sous-espace vectoriel de GF (q)n. Cette structure d’espace
vectoriel nous permet de représenter la procédure de codage sous forme matricielle. Les k
vecteurs constituant une base du sous-espace C sont utilisés pour former les lignes d’une
matrice G de taille k × n. Tout mot de code est une combinaison linéaire de lignes de G .
Cette matrice G est une matrice génératrice du code C .
Soit i un mot d'information : un k -uple de symboles d'information (un vecteur ligne à k
composantes, éléments de GF (q) ), et c est le mot de code correspondant formé de n
symboles, alors c = i .G . Cette dernière expression définit l'opération de codage qui dépend
du choix de la base du sous-espace. Mais quel que soit ce choix, l'ensemble des mots de
code reste toujours le même. Seul la correspondance entre mots d’information et mots de
code change.
Par exemple, soient C un code linéaire binaire et G sa matrice génératrice définie par:
G =
11100
10010
01001
Le vecteur d’information i = [0 1 1] est codé en un mot de code c :
c = [ ] [ ]01110
11100
10010
01001
110 =
Code dual et matrice de contrôle de parité
On a, C est un sous-espace vectoriel, il possède donc un complément orthogonal, noté
C ⊥ . Ce dernier n'est autre que l'ensemble de tous les vecteurs de GF (q)n orthogonaux à C .
C’est donc un sous-espace vectoriel. Il peut former donc un code. Ce code est appelé le
code dual de C . La dimension de C ⊥ est égale à n-k . Soit H sa matrice génératrice, formée
par un choix de ces n-k vecteurs comme lignes. H est une matrice de parité du code C . Un
mot c appartient au code C si est seulement si cH T =0.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 51/101
Chapitre II Codage de source
Cette propriété est un moyen simple de test de l’appartenance d’un mot à un code.
Pour cette raison la matrice H est appelé matrice de contrôle.
Puisque tout mot de code de C est une combinaison linéaire de lignes de G , la relation
précédente entraîne : GH T
= 0.
Une matrice de parité associée à la matrice génératrice du code défini à l’exemple
précèdent est : H =
10110
01101.
Cette matrice de parité est également utilisée pour la détermination de la distance
minimale du code qui est égale au plus petit nombre de colonne linéairement indépendant de
la matrice de contrôle H .
Puisque les k lignes de G sont indépendantes, il existe au moins k colonnes de G
indépendantes ; par permutations des colonnes et par opérations élémentaires sur les lignes
on peut transformer G à une matrice de la forme : G = [ ]PI .
Où I est la matrice identité k × k et P est une matrice quelconque k × (n-k ). La forme
[ ]PI de la matrice génératrice s'appelle forme systématique.
Dans ce cas la matrice de parité s’écrit : H = [ ]IP T −
Où I est ici une matrice identité (n-k )× (n-k ).
Principe de la détection et de la correction d’erreurs
Soit c un mot de code formé après codage d’un vecteur d'information i . Le vecteur c
est transmis sur le canal reliant la source à la destination. Une erreur peut affecter un ou
plusieurs symboles des n symboles de c. On définit donc un vecteur d'erreurs e. Une erreur
sur la composante j de c se traduit par une j-ème composante non nulle de e. Ainsi, le mot
reçu par le récepteur est v = c + e. Le vecteur défini par s = v.H T ne dépend pas du mot c il
dépend uniquement l'erreur e. Ce vecteur s est appelé le syndrome du mot reçu v. Ce
syndrome est un vecteur ligne à n-k composantes. Si s ≠ 0 on détecte la présence d'erreurs
dans v. Par contre, si s est nul v est un mot de code. Mais, un syndrome nul ne signifie pas
nécessairement l’absence d’erreurs de transmission.
En présence d’erreurs de transmission, la règle de décodage consiste à rechercher mot
de code c’ le plus vraisemblable, C'est-à-dire celui qui est à la distance de Hamming
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 52/101
Chapitre II Codage de source
minimale du mot reçu v. Mais, cette façon de décodage devient difficile à mettre en oeuvre
lorsque le nombre de mots du code est important.
La correction peut aussi être réalisée à partir du syndrome s dont le nombre de
configurations est k n−
2 . La règle de décodage consiste à faire correspondre pour chaquevaleur non nulle du syndrome s la configuration d’erreur e de poids minimal. Ce poids est
inférieur ou égal à la capacité de correction t du code. Une table constituée de deux
colonnes est formée. La première colonne comporte les polynômes d’erreurs et la deuxième
contient tous les syndromes possibles. Le mot de code le plus vraisemblable est v - e avec e
l’erreur correspondante au syndrome s.
III.2.2 Les codes cycliques
Les codes cycliques représentent la classe la plus importante des codes en blocs
linéaires, obtenue en imposant une condition sur la structure du code. La théorie des corps
de Galois a été utilisée comme outil mathématique fondamental pour la recherche de bons
codes. De plus, les codes cycliques offrent, grâce à leur description dans les corps de Galois,
des procédures de codage et de décodage spécifiques très efficaces.
Définition et représentation polynomiale
Un code linéaire cyclique C(n,k) est définit de la manière suivante :
Si c = [ c0…c j ... cn-1] est un mot du code, alors c1 = [ c1…c j ... cn-1 c0], obtenu par
permutation circulaire à gauche d’un élément de c est aussi un mot du code.
De ce fait, Un code cyclique est un cas particulier de sous-espace de GF(q)n où le
décalage des composantes de ses vecteurs est une opération interne.
Ces codes sont généralement représentés d’une manière polynomiale. Ainsi au mot c
on associe :c(x) = c0 +c1 x+………+c j x j+………cn-1 xn-1 c j∈GF(q)
Le produit x -1 c(x) s’écrit :
x -1 c(x) = c0x -1 + c1x +…+ c j x j-1+…+cn-1xn-2
En introduisant le mot c1(x) = c1 +c2 x+…+c j x j+…+cn-1 xn-2 + c0xn-1 obtenu par
permutation circulaire à gauche d’un élément de c(x), le polynôme x -1 c(x) peut s’écrire
sous la forme suivante :
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 53/101
Chapitre II Codage de source
x -1 c(x) = c0 x -1 (xn -1) + c1(x) = c1(x) modulo (xn -1)
Par conséquent, les mots de code d’un code cyclique peuvent être représentés par des
polynômes dans l’anneau GF(q)[x]/(xn-1). L’ensemble de ces polynômes a une structure
d’espace vectoriel identique à celle de GF(q)n
de plus il possède la structure d’anneau.
Choisissons un polynôme non nul de C unitaire de degré le plus petit possible. Notons
(n-k) son degré. Ce polynôme est unique, il divise x n-1, il est noté g (x), et il est appelé le
polynôme générateur du code C. Le code cyclique C est formé de tous les polynômes
produits de g (x) par un polynôme de degré inférieur ou égal à k-1.
Soit h(x) le quotient xn -1 par g(x) donc xn - l = g(x) h(x). Le polynôme h(x) est appelé
polynôme de parité. C’est le polynôme générateur du code dual.
En effet, pour tout c(x) de C , nous avons : h(x) c(x)=h(x) g(x) a(x) = (xn - l) a(x).
La séquence des symboles d'information est représentée par le polynôme i(x) de degré
inférieur ou égal à k-1. La correspondance entre l'information i(x) et les mots c(x) consiste
à calculer c(x) = g(x) i(x). Ce code n'est pas systématique puisque i(x) n'est pas directement
visible dans c(x). L’opération de codage systématique s'écrit :
c(x) = xn-k i(x) + t (x)avec deg[t(x)] < n-k.
Soit c(x) un polynôme d'un code cyclique C. Le mot c(x) est transmis sur un canal.
Les coefficients de c(x) sont les symboles du vecteur c transmis. Notons le mot reçu par
v(x). Soit e(x)=v(x)-c(x). e(x) est le polynôme d'erreur. Il a un coefficients non nul à la
position où une erreur a été introduite par le canal.
Le polynôme syndrome s(x) est indispensable pour l'opération du décodage d'un code
cyclique. Le syndrome est défini comme le reste de la division Euclidienne de v(x) par g(x).
Il est donc égal au reste de la division Euclidienne de e(x) par g(x). Par conséquent, Le polynôme syndrome dépend uniquement de e(x), mais pas de c(x) ni de i(x). Ce polynôme
est indispensable pour l’opération de décodage.
Il est possible de décoder un code cyclique par une procédure identique à celle du code
en bloc linéaire. Il existe d’autres méthodes de décodage algorithmiques. Ces méthodes
nous évitent ce décodage par table.
Le paragraphe suivant est une présentation générale des codes BCH.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 54/101
Chapitre II Codage de source
III.2.3 Les codes BCH
La classe des codes BCH (Bose-Chaudhuri-Hockenghem) est une classe très large de
codes cycliques correcteurs d'erreurs multiples. Des techniques simples de codage et de
décodage sont disponibles pour les codes BCH. Cette classe contient une sous-classe decodes très populaires, les codes Reed-Solomon.
Les codes BCH primitif sont définis sur GF(q) par la construction d'un polynôme
générateur g (x) de forme particulière. Leur longueur est de n=Q-1=qm-1 et ils ont une
capacité de correction de t erreurs.
Le polynôme générateur d'un code cyclique s'écrit sous la forme :
g (x) = PPCM[ f 1(x), f 2(x),…, f r (x)]
où les f i(x) sont les polynômes minimaux des racines de g (x).
Considérons un cas particulier de codes BCH : les Codes BCH binaires primitifs.
Ce type de code est dit primitif car les racines de son polynôme générateur sont des
puissances successives croissantes d’un élément primitif du corps de Galois considéré. Le
polynôme générateur de ce code cyclique s'écrit sous la forme :
)(m)...,(m),(m PPCMg(x) 123 x x x t −=α α α
Où α est un élément primitif du corps de Galois GF(2m) et les )( xm iα
sont les
polynômes minimaux à coefficients dans le corps GF(2) ayant iα comme racine.
Les codes BCH sont conçus à partir des spécifications de n et t . La valeur de k n’est
pas connue avant la construction de g (x).
Les paramètres d’un code BCH primitif construit sur un corps de Galois GF(2 m), de
distance construite d = 2t+1 sont les suivants :
n = 2m – 1 ; k ≥ n -1 – mt ; dmin ≥ 2t + 1;2
nt <
Pour t = 1 un code BCH primitif est un code de Hamming ayant )( xmα comme
polynôme générateur.
Donnons un exemple simple : Calculons le polynôme générateur du code BCH
2)t?,k 15,(n === , défini sur GF(2), de longueur 15 et de capacité de correction 2 :
On a n = 2m -1 = 15 m = 4
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 55/101
Chapitre II Codage de source
Détermination du polynôme générateur :
On va utiliser la table donnant les polynômes minimaux pour déterminer g(x). La
construction du corps GF(Q=2m) extension de GF(2) se fait par le choix d’un polynôme
premier de degré m = 4. Dans notre cas le polynôme choisit est f(x) = x4
+x+l.
g (x) = )(m),(m PPCM 3 x xα α
= PPCM [ x4+x+l, x4+x3+x2+x+l]
= (x4+x+l) (x4+x3+x2+x+l)
= x8+x7+x6+x4+1
Le degré de g (x) étant n - k = 8, la dimension du code est k =7.
C’est un code (15,7, t=2).
Elément Polynôme Binaire Décimale Polynôme minimal
0 0 0000 0 x
α0 = 1 1 0001 1 x+1
α1 z 0010 2 x4+x+1
α2 z2 0100 4 x4+x+1
α 3 z3 1000 8 x4+x3+x2+x+1
α4 z+1 0011 3 x4+x+1
α5 z2+z 0110 6 x2+x+1
α6 z3+z2 1100 12 x4+x3+x2+x+1
α7 z3+z+1 1011 11 x4+x3+1
α8 z2+1 0101 5 x4+x+1
α 9 z3+z 1010 10 x4+x3+x2+x+1
α10 z2+z+1 0111 7 x2+x+1
α11 z3+z2+z 1110 14 x4+x3+1
α12 z3+z2+z+1 1111 15 x4+x3+x2+x+1
α13 z3+z2+1 1101 13 x4+x3+1
α14 z3+1 1001 9 x4+x3+1
Tableau 4 : Représentation de GF(24 ) comme extension de GF(2)
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 56/101
Chapitre II Codage de source
III.2.4 Utilisation de la transformé en cosinus discrète dans un codage correcteur
d’erreur
Définition [3]
La DCT appliqué à une séquence [ ]110 ,...,, −= N x x x x de données donne :
[ ]110 ,...,, −= N X X X X avec ∑−
=
=1
0
)( N
n
k nk nT x X k = 0,1,…,N-1 (1)
)(nT k est définit par :
( ) 1...,2,12
12cos2
01
)(
−=+
==
N k nk n
N
k pour N
nT k π
(2)
Notons T la matrice N x N définit par T=
−
−
−− )1(...)0(
.....
.....
.....
)1(..)1()0(
11
000
N T T
N T T T
N N
La transformé en cosinus discrète est orthogonale en effet :
∑−
= ≠
==
1
0 0
1)().(
N
n
q pq p si
q p sinT nT (3)
D’après cette propriété, toutes les ligne de la matrice T sont deux à deux
orthogonales, en plus elles sont normées (de module égal à 1).
Les N équations définies par (1) peuvent être écrites sous forme matricielle :
−
−
=
−−−− 1
1
0
11
1
000
1
1
0
.
..
)1(...)0(
.....
.....
....)0()1(..)1()0(
.
.
N N N N x
x x
N T T
T N T T T
X
X X
(4)
On choisit k ligne de la matrice T (N x N) on obtient un matrice G (d x N), qui va
représenter la matrice génératrice du code correcteur. Cette matrice a pour rang égal
à d. Les N – d lignes restantes vont former la matrice de parié H (N-d x N).
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 57/101
Chapitre II Codage de source
N d N N N N
d d
d d d
N d d d d
N T T T
T T
N T T T
G
N T T T
T T
N T T T
H
×−−−−
++
×−−−
−
−
=
−
−
=
)(111
11
111
11
000
)1(..)1()0(
.....
.....
...)1()0(
)1(..)1()0(
)1(..)1()0(
.....
.....
...)1()0(
)1(..)1()0(
On vérifie facilement les deux équations suivantes :IG.G
0G.H
d
T
T
=
=.
Le vecteur de syndrome S d’un vecteur reçu r est déterminé par le produit suivant :
T T T H e H eq H r S .).(. =+==
Posons1...,2,1
2
01
−=
=
=
N i N
i pour N
f i
P est une matrice diagonale (N x N) donnée par :
=
N
N
N
P
20..0
0....
.....
...2
0
0..01
Posons S’=S.P d’où en notant ν le nombre d’erreur et ν r ....,r ,r 21 les position des
erreurs :
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 58/101
Chapitre II Codage de source
[ ]
=
+=
−=+
==
∑ ∑
∑
= =
−
=
ii
i
i
i
i
i
n
l
i
n
l
nirl
N
r
r i
i
i
C
C
C
X X X
X X X
X X X
Y Y Y
N
r C e
N i pour N
ir eS
f S
,
1,
0,
2
2
2
22
1
2
11
21
1 0
,
1
0
.
.1
.....
.....
.1
.1
...
2
)12(cos.
1,...,2,12
)12(cos..
1'
ν ν ν
ν
ν π
π
Avec : pour rl l eY l == ν ,...,2,1 qui est l’amplitude de l’erreur à la position r l et
N
r X l
l 2
)12(cos
π += .
L’écriture des N – d syndromes comme un vecteur donne :
C
X X
X X
X X
Y
C
C C
C C
X X X
X X X
X X X
Y S
d
d
d
d d d
d
d
.
..1
.....
.....
..1
..1
.
0..0
0....
...0.
.00
.00
.
.1
.....
.....
.1
.1
.'
1
1
22
1
11
1,1
1,31,1
0,20,0
12
1
2
2
22
1
1
2
11
=
=
−
−
−
−−−
−
−
ν ν ν ν ν
Posons
==
−
−
−
−
1
1
22
111
1
..1
.....
.....
..1
..1
.'.''
d
d
d
X X
X X
X X
Y C S S
ν ν
Le décodage s’effectue en utilisant l’algorithme suivant :
Figure 9 : Algorithme de décodage pour les codes DCT
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 59/101
Chapitre II Codage de source
A la suite on présente deux importants algorithmes de décodage celui de
Berlekamp-Massey et de Peterson-Gorenstein-Zierler.
III.2.5 L’algorithme de Berlekamp-Massey et de Forney
Cet algorithme est basé sur le polynôme localisateur d’erreur et le polynôme
évaluateur d’erreur. Ces deux polynômes permettent de déterminer respectivement : la
position des erreurs et l’amplitude de chacun de ces erreurs [8].
Rappelons que le polynôme localisateur d’erreur est donné par :
( ) ( )( ) ( ) 1111 1
1
111 +Λ++Λ+Λ=−−−=Λ −− x x x xX xX xX x
ν
ν
ν
ν ν
Défini par ses ν racines qui sont les inverses des positions X des erreurs. C’est pour
cette raison qu’il est appelé polynôme localisateur d’erreur. La connaissance des
coefficients de ( ) xΛ nous permet d’obtenir ses racines et par conséquent les positions X
des erreurs.
Le polynôme des syndromes est définit par : ∑=
−=t
j
j
j xS xS 2
1
1)( .
Le polynôme évaluateur d’erreur est définit par : ( ) )(mod )()( 2t x x xS x Λ=Ω .
Ce polynôme peut s’écrire de la manière suivante : ∑ ∏= ≠
−=Ων
1
)1()(i il
l ii x X X Y x .
Le polynôme localisateur est déterminé par l’algorithme de Berlekamp-Massey.
L’amplitude des erreurs est déduite d’une manière simple qui ne fait pas appel à
aucune inversion matricielle, en utilisant l’algorithme de Forney.
L’algorithme est représenté par son organigramme à la figure ci dessous.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 60/101
Chapitre II Codage de source
Figure 10 : Algorithmes de Berlekamp-Massey et de Forney pour les codes DCT
III.2.6 L’algorithme de Peterson-Gorenstein-Zierler
Cet algorithme de décodage a été spécialement conçu pour les codes BCH. Il démontre
que les codes BCH construits précédemment ont une capacité de correction de t erreurs.
Le polynôme d’erreur s’écrit :
( ) 01
2
2
1
1 e xe xe xe xe n
n
n
n ++++= −−
−−
Supposerons qu’au plus t coefficients sont non nuls. Supposons que ν erreurs ont eu
lieu, avec 0 ≤ ν ≤ t .
Notons les positions inconnues des erreurs par : ν
iii ,,, 21 .
Le polynôme d’erreur devient : ( ) ν
ν
i
i
i
i
i
i xe xe xe xe +++= 2
2
1
1
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 61/101
Chapitre II Codage de source
Oùi
e représente la valeur de la -ième erreur qui est à la position i . Pour les
codes binaires,i
e est toujours égal à 1.
Les inconnues qui doivent être déterminées par le décodeur de canal sont : Le nombre
d’erreurs, les positions de ces erreurs et les amplitudes de ces erreurs pour un code non
binaire.
Evaluons le polynôme reçu sur toutes les puissances de α qui sont racines de g(x).
Le premier syndrome s’écrit :
( ) ( ) ( ) ( ) ν
ν
α α α α α α α i
i
i
i
i
i eeeeecS +++==+== 2
2
1
1v
1
Pour simplifier, on note
i X α = et ieY = pour 1≤ ≤ ν .
Avec ces nouvelles notations, le premier syndrome s’écrit :
ν ν X Y X Y X Y S +++=
22111
On obtient alors un système (P1) de 2t équations non linéaires à 2 ν inconnues (les
positions et amplitudes des erreurs) qu’il nous faut résoudre :
(P1)
+++=
+++=
+++=+++=
t t t
t X Y X Y X Y S
X Y X Y X Y S
X Y X Y X Y S
X Y X Y X Y S
22
22
2
112
33
22
3
113
2
22
2
112
22111
2
ν ν
ν ν
ν ν
ν ν
On définit le polynôme ( ) ( )( ) ( )ν
xX xX xX x −−−=Λ 111 11 dit polynôme
localisateur d’erreurs défini par ses ν racines qui sont les inverses des positions X des
erreurs.
La connaissance des coefficients de ( ) 11
1
1 +Λ++Λ+Λ=Λ −− x x x x
ν
ν
ν
ν permet
d’obtenir ses racines, et par inversion, les positions X des erreurs.
On a ( 01 =Λ −
X pour 1≤ ≤ ν
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 62/101
Chapitre II Codage de source
011
1
2
21
1
=+Λ+Λ+Λ+Λ −−−
− −
X X X X
ν
ν
ν
ν
( ) 011
1
2
21
1
=+Λ+Λ+Λ+Λ −−−
− −+
X X X X X
j ν ν
ν
ν
ν
( ) 010
1
1
2
21
1
=+Λ+Λ+Λ+Λ∑=
−−−
− −+ν
ν
ν
ν
ν ν
X X X X X
j
( ) 00
1
1
2
2
1
1 =+Λ+Λ+Λ+Λ∑=
−+−++−
− +ν
ν ν
ν ν
ν
j
X X X X X j j j j
ν ν ν ν ν +−+−++− −=Λ++Λ+Λ+Λ j j j j j S S S S S 112211
On obtient un système (P2) d’équations linéaires reliant les syndromes aux
coefficients du polynôme localisateur d’erreurs :
(P2)
−
−
−
−
=
Λ
Λ
Λ
Λ
+
+
+
−
−
−−++
++
+
−
ν
ν
ν
ν
ν
ν
ν
ν ν ν ν ν
ν ν
ν ν
ν ν
2
3
2
1
1
2
1
122221
21543
1432
1321
S
S
S
S
S S S S S
S S S S S
S S S S S
S S S S S
Posons
=
−+
+
121
132
21
µ µ µ
µ
µ
S S S
S S S
S S S
M
appelée matrice des syndromes.
Le système (P2) devient pour ν µ = :
−
−−−
=
Λ
ΛΛΛ
+
+
+
−
−
ν
ν
ν
ν
ν
ν
ν
2
3
2
1
1
2
1
S
S
S
S
M
On a la matrice des syndromes est inversible si ν µ = , donc Le système (P2) possède
une unique solution.
D’où l’algorithme de décodage de Peterson-Gorenstein-Zierler :
1. Calcul des 2t syndromes.
2. Initialisation de ν à t .
3. Construction de la matrice M et calcul du déterminant. S’il est nul, on diminue ν et
on recommence.4. Détermination des coefficients du polynôme localisateur d’erreurs en résolvant (P2).
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 63/101
Chapitre II Codage de source
5. Détermination les racines du polynôme localisateur d’erreurs et en déduire les
positions X des erreurs.
6. Si le code est non binaire, calculer les amplitudes Y des erreurs en résolvant (P1) qui
devient linéaire.
L’algorithme est représenté par son organigramme à la figure ci dessous.
oui
V(x) reçu
Calcul des syndromes :
( ) t jvS j
j 2,,1, == α
M=
−12
1
ν ν
ν
S S
S S
ν=t
Det(M)=0 ?
ν←ν-1
non
Λ
Λ
Λ
−
1
1
ν
ν
=M-1
−
−
−
+
+
ν
ν
ν
2
2
1
S
S
S
Trouver les positions X l deserreurs en calculant les racines
du polynôme localisateur d’erreur.
=
−
ν
ν
ν
ν
ν
ν S
S
X X
X X
Y
Y
1
1
1
11
Figure 11 : Organigramme de l’algorithme de Peterson-Gorenstein-Zierler
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 64/101
Chapitre III Codage de canal
Chapitre IV
CONCEPTION ET IMPLÉMENTATION
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 65/101
Chapitre III Codage de canal
CHAPITRE IV : CONCEPTION ET IMPLÉMENTATION
IV.1 Introduction
Le travail réalisé dans le cadre de ce projet de fin d’étude consiste à élaborer un
algorithme de codage source appliqué à la transmission d’images et d’un algorithme de
codage canal en utilisant le codage BCH . Les deux problèmes du codage de source et de
codage de canal sont considérés suivant le théorème de séparation de Shannon.
Ces deux algorithmes développés, en utilisant le langage C++, seront utilisés pour la
transmission d’images. Dans ce projet nous avons mis en œuvre une chaîne logicielle
complète pour la transmission d’images fixes. La première étape est de compresser l’image
à transmettre en réduisant sa taille et la deuxième étape revient à ajouter de la redondance
structurée pour corriger les erreurs introduites par le canal.
IV.2 Source de message
Notre source est une image de type targa dont le nom de fichier présente l’extension
« .tga ». On a choisit ce type de fichier pour plusieurs raisons : D’une part, c’est un format
non compressé, qui nous à permis de comprendre comment une image est stocké en
mémoire. D’autre part, l’information utile sur chaque pixel est facile à extraire et à
transformer par un programme écrit en langage C++.
Chaque image de ce type présente une entête qui fournit des informations sur l’image.
Cette entête est composé de plusieurs champs. Les champs qui nous intéressent sont :
- Les dimensions, en pixel, de l’images ; C'est-à-dire le nombre de pixels par ligne et le
nombre de lignes constituant l’image.
- Le nombre de bits utilisé pour coder les pixels constituants l’image ; Ce nombre peut
avoir l’une des valeurs suivantes : 16, 24 ou 32.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 66/101
Chapitre III Codage de canal
Dans notre projet, nous allons nous intéresser aux images dont l’information sur
chaque pixel est codée sur 24 bits. Chaque octet code l'une des couleurs fondamentales, le
rouge, le vert ou le bleu. Dans ce cas, l’image est dite sous forme RGB.
Deux cas se présentent : soit qu’on choisit d’utiliser l’image par défaut qui est l’image
de Léna ou utiliser une autre image dont le nom est introduit manuellement par l’utilisateur.
Le nom de l’image est introduit, il est mémoriser dans une variable de type chaîne de
caractère. Puis plusieurs tests seront effectués sur cette image avant le passage au codeur de
source. Ces tests seront effectués sur l’entête pour voir si cette image correspond au format
considéré. L’entête est donc considéré comme une carte d’identité pour l’image ; Si elle est
conforme, l’image passe à l’étape suivante, sinon, un message d’erreur est retourné etl’image sera ignorée.
La lecture de l’entête nous permet de dégager les dimensions, en pixel, de l’images.
Trois matrices, évidemment de même dimension que l’image, vont contenir temporairement
les données concernant chaque proportion de couleur pour chaque pixel.
IV.2.1 Types de données utilise pour modéliser l’image
On a définit trois structures : une structure tga_image qui va contenir les données et
quelques informations sur l’image, une structure img qui est simplifié par rapport à la
première et qui ne garde que les champs qui nous intéressent pour la suite et une autre
structure tga_header qui va contenir touts les informations qu’on trouve dans l’entête de
l’image.
Structure tga_image
typedef struct byte *data;word width, height;
byte bits_per_pixel;tga_line_order line_order;tga_color_order color_order;
tga_image;
Structure imgtypedef struct
int width, height;
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 67/101
Chapitre III Codage de canal
byte *data; img;
Définition de l’entête tga_header d'une imagetypedef struct
byte id_length; byte color_map_type; byte data_type_code;word color_map_origin;word color_map_length;
byte color_map_depth;word origin_x;word origin_y;word width;
word height; byte bits_per_pixel; byte image_descriptor;
tga_header;
IV.2.2 Fonctions utilisées pour manipuler les images
Dans la suite, on présente les principales fonctions utilisées pour la lecture et l’écriture
de ce type d’images.
tga_header_read(FILE *fp, tga_header *hdr) : fonction permettant de lire l'entête de
l'image.
tga_header_write(FILE *fp, const tga_header *hdr) : fonction permettant d'écrire
l'entête de l'image.
tga_write(const char *filename,const tga_image *img) : fonction permettant d’écrireune structure tga_image dans un fichier image.
tga_read(const char *filename) : fonction permettant de retourner une structure
tga_image à partir des données d’un fichier image. C'est-à-dire cette fonction effectue
l’opération inverse de la fonction tga_write.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 68/101
Chapitre III Codage de canal
IV.3 Codage et décodage de source
Le codeur de source qu’on a réalisé est inspiré de la compression JPEG. Plusieurs
techniques de compressions sont assemblées pour la réalisation de notre codeur de source.
Le schéma de principe de notre codeur est similaire à celui de la compression JPEG. Il
comprend trois principaux opérations : la transformé en cosinus discrète, la quantification et
la compression de Huffman.
Dans ce qui suit, on va présenter en détail les différentes opérations réalisées par le
codeur de source.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 69/101
Chapitre III Codage de canal
Figure 12 : Schémas de principe du codeur de source
Compression de
Huffman
Codeur de source
Image.tga
Décomposions en bloc 8x8
DCT QuantificationLecture en ZIG
ZAG DPCM RLE
Ces opérations vont s’effectuer sur des blocs 8x8 de l’image
Assemblage des blocs et
mémorisation des données
dans un fichier
Image compressé
image.huf
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 70/101
Chapitre III Codage de canal
IV.3.1 DCT et IDCT
La procédure permettant de réaliser la transformation DCT est donnée par :
Dct (const img *im, double *data, const int xpos, const int ypos)
Avec img est l’image considérée, data est un tableau de 64 éléments qu’on considère
comme une matrice 8x8 qui va contenir le résultat de la transformation et xpos et ypos
définit le bloc 8x8 sur lequel on va effectuer la transformation.
La procédure permettant de réaliser la transformation IDCT inverse de la
transformation DCT est donnée par :
Idct (const img *im, double *data, const int xpos, const int ypos)
Avec, data est un tableau de 64 éléments qu’on considère comme une matrice 8x8 sur
laquelle on va effectuer la transformation. Le résultat de la transformation inverse IDCT est
rangé directement dans la structure img de l’image considérée. xpos et ypos définit la
position du bloc considéré dans l’image.
IV.3.2 Quantification et déquantification
La qualification utilisé est une quantification scalaire : qui consiste à diviser élément
par élément les éléments du bloc 8x8 résultat de la transformé DCT par les éléments de lamatrice de quantification. Par contre, la déquantification se fait en multipliant élément par
élément les éléments du bloc 8x8 résultat de la quantification par les éléments de la matrice
de quantification.
) ji,(mat_quant
) ji,(dct_out) j,i(Quanti_out = arrondie à l’entier le plus proche.
) ji,(mat_quant) ji,(quanti_out) j,i(utdequanti_o ×=
Cette matrice est paramétrable suivant le facteur de qualité fixé par l’utilisateur.
Les éléments de la matrice de quantification sont donnés par :
( ) tfact_quali11mat_quant ×
+++= n jni μi,j
Pour simplifier, on a pris 1==n µ ce qui donne :
( ) ( ) tfact_quali11mat_quant ×+++= jii,j
Avec fact_qualit est le facteur de qualité.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 71/101
Chapitre III Codage de canal
La procédure permettant de construire cette matrice est donnée par :
Matrice_Quantification(int *mat_quant,const int fact_qualit )
La procédure permettant de réaliser la quantification est donnée par :
Quantification (const double *dct_out, const int xpos, const int ypos,const int
fact_qualit,short int *Quanti_out)
La procédure permettant de réaliser la déquantification est donnée par :
Dequantification(const short *quanti_out, const int xpos, const int ypos,const int
fact_qualit,double *dequanti_out)
IV.3.3 Lecture en zigzag
La procédure permettant de réaliser la lecture en zigzag est donnée par :
void lect_ZIGZAG (short int **quanti_out, short int **ZIGZAG, int *comp_z)
IV.3.4 DPCM et RLE
Le premier élément (0,0) de chaque bloc (8x8) est remplacé par sa différence avec
l'élément correspondant du bloc précédent. Ces éléments sont les moyennes de leur bloc
respectif, par conséquent ils varient lentement.
Le vecteur 1x64 contient beaucoup de zéros. On code des paires ( skip, value), ou skip
est le nombre de zéros et value est la valeur de la composante non nulle suivant
immédiatement la chaîne de zéros dans l'ordre de la lecture Zigzag . Pour les derniers 0 du
bloc, non suivis d'une valeur non nulle, un End Of Block est envoyé.
La procédure permettant de réaliser la modulation par impulsion codé différentielle
( Differential Pulse Code Modulation) DPCM et la RLE est donnée par :
lect_DPCM_RLE (double *ZIGZAG_out, double **DPCM_RLE, double *preced,
int *comp,const int comp_zigzag)
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 72/101
Chapitre III Codage de canal
IV.3.5 Huffman
A . TYPES DE DONNÉES UTILISER POUR CONSTRUIRE L' ARBRE
Définition d'une feuille
typedef struct S_Feuille
bool Noeud; /* vrai = noeud, faux = feuille */union
unsigned char Data; /* donnee d'une feuille */struct S_Noeud * Ptr; /* ptr sur un autre noeud */
U_Feuille; T_Feuille;
Définition d'un noeud de l'arbretypedef struct S_Noeud
T_Feuille FDroite; /* feuille droite de l'arbre */T_Feuille FGauche; /* feuille gauche de l'arbre */char CodeNoeud[MAXCODE]; /* codage jusqu'au noeud */
T_Noeud;
Définition d’un élément de la table de codagetypedef structlong Cumul; /* fréquence d'apparition des caractères */T_Feuille Donnee; /* donnée ou noeud pour calculer l'arbre */char Code[MAXCODE]; /* code trouve pour le caractère */bool Codifie; /* true = codification existante */
T_ASCII;
B. F ONCTIONS UTILISÉES POUR COMPRESSER ET DECOMPRESSER DES FICHIER EN UTILISANT LE CODAGE DE HUFMAN
Dans la suite on présente les principales fonctions utiliser pour construire l’arbre.
MAZ_Table (T_ASCII * Ptr_Ascii) : est une fonction permettant de mettre à zéro la
table de codage.
Swap (T_ASCII *a, T_ASCII *b) : permet de permuter deux éléments de la table de
codage cette procure est utile pour trier cette table.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 73/101
Chapitre III Codage de canal
TriTable(T_ASCII *Ptr_Ascii) : permet réarranger les éléments de la table des
fréquence qu’on appelle aussi table de codage par ordre décroissant.
CalculFrequence(FILE *f,T_ASCII *Ptr_Ascii) : a pour but de calculer les fréquences
d'apparition des symboles du fichier source. A la fin de cette procédure, cette table est triéeen utilisant la procédure TriTable (T_ASCII *Ptr_Ascii).
Creation_Arbre(T_ASCII * Ptr_Ascii) : procédure permettant de construire l’arbre de
Huffman permettant d'élaborer les codes. Cette procédure a pour argument la table des
fréquences triée et elle a comme résultat un pointeur appelé racine de l’arbre.
L’organigramme de cette procédure est présenté dans la figure 13.
Creation_Codage(T_ASCII *Ptr_Ascii,T_Noeud * Ptr) : a pour but de parcourir
l'arbre, et d’élaborer le codage.
Ecriture_Table(FILE *f,T_ASCII *Ptr_Ascii): effectue l’écriture de la table de
correspondance dans le fichier cible.
Compresse_Donnees(FILE *FSource, FILE*FCible,T_ASCII *Ptr_Ascii) : effectue
l’écriture des données caractère par caractère dans le fichier.
Compression_Huffman(FILE *FSource, FILE *FCible) : procédure réalisant
l’opération de compression. La figure 14 présente l’organigramme de cette procédure.
Creer_Arbre_Decodage(FILE *FSource) procédure réalisant la reconstitution de
l'arbre pour décoder les données.
Decodage_Donnees(FILE *FSource,FILE *FCible): permet de décompresser les
données en parcourant l'arbre.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 74/101
Chapitre III Codage de canal
Figure 13 : Organigramme de construction de l’arbre de Huffman
i = DimAscii-1
Mettre la plus petite fréquence à droite
Mettre la deuxième fréquence à gauche
Calcul du cumul des deux fréquences
Assemblage de ces deux feuilles en un nœud
Reclassement du nœud dans la table
Décrémenter i ( i -- )
i > 0
OUI
Début
FIN
Allocation de l’espace mémoire pour un nœud
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 75/101
Chapitre III Codage de canal
Figure 14 : Organigramme simplifié de la compression de Huffman
IV.4 Codage et décodage canal
Comme codeur de canal, on va utiliser un codage BCH binaire.
Au début, on fixe l’ordre du corps de Galois, notée m. Pour notre codeur, on a pris
m = 4. Puis, on choisit un polynôme primitif qui permettra de construire le corps de Galois.
Ce polynôme sera noté p(x) = x4+x+l . Ce polynôme est irréductible de degré égal à m.
La fonction generate_gf() va nous permettre de générer les éléments du corps GF (2m)
à partir du polynôme p(x) ayant ses coefficients dans p[0]..p[m].
La fonction gen_poly() permettra de générer le polynôme générateur du code. Posons g(x) ce polynôme. Le degré du polynôme de donnée ou la longueur du vecteur
Lecture fichier source et calcul
des fréquences d'apparition
Création de l'arbre
Parcours de l'arbre, et élaboration du
codage.
Ecriture de la table de correspondance
dans le fichier
Ecriture des données dans le fichier cible
Début
FIN
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 76/101
Chapitre III Codage de canal
d’information k n’est déterminé qu’à ce niveau k=length – rdncy. Avec, length la longueur
du code donnée par length = 2m – 1 et rdncy étant le degrés du polynôme générateur g(x) qui
présente aussi le nombre de bits de redondance ajouté au vecteur de données.
En fixant m = 4 et le pouvoir de détection d= 5 on aura k = 7 et rdncy = 8. On aura uncode BCH (length = 15, k = 7, d = 5).
Posons data(x) le polynôme de donnée à l’entré du codeur, La fonction encode_bch()
permettra d’effectuer le codage en calculant les coefficients du polynôme b(x) qui est le
reste de la division de xlength-k .data(x) par le polynôme générateur g(x).
La fonction decode_bch() est la plus importante elle permet à partir du vecteur reçu de
générer le mot de donnée à l’entrée du codeur de canal, après correction et détection
éventuelle des erreurs.
L’algorithme utiliser pour la détection et la correction des erreurs est celui de
Berlekamp-Massey qui va permettre de déterminer le nombre de ces erreurs et leurs
positions et par conséquent les corriger.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 77/101
Chapitre III Codage de canal
Figure 15 : l’algorithme de Berlekamp_Massey
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 78/101
Chapitre III Codage de canal
IV.5 Programme principal
Entrée du codeur
de source
Introduction du nom de l’image qu’on va
transmettre.
Lecture de l’image et stockage des données
dans des tableaux dynamiques
Lecture du facteur de qualité.
Faire la transformé en cosinus discrète bloc
par bloc le résultat et rangé dans un tableau
dynamique DCT_out
Faire la quantification de chaque bloc 8x8 en
utilisant la matrice de quantification
Début
OUI
Linéarisation des matrices en utilisant la
lecture en zigzag
Utilisation de la DPCM pour recoder la
composante DC de chaque vecteur.
Réduction de la taille de chaque vecteur en
utilisant RLE .
Dernier bloc NON
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 79/101
Chapitre III Codage de canal
Figure 16 : l’organigramme de du programme principal
IV.6 Conclusion
L’objectif de ce chapitre était de présenter le travail réalisé dans le cadre de ce projet
de fin d’étude. Le chapitre suivant de ce rapport sera consacré à la présentation des résultats
de simulations obtenues.
Sortie du codeur
de source
FIN
Compression de Huffman
Codeur de canal
Modulation
Canal de transmission
Démodulation
Décodeur de canal
Décodeur de source
(Opérations inverses du codeur de source)
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 80/101
Chapitre IV Conception et Implémentation
Chapitre V
R ÉSULTATS ET DISCUSSION
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 81/101
Chapitre IV Conception et Implémentation
CHAPITRE V : R ÉSULTATS ET DISCUSSION
V.1 Codeur source
L’image choisit pour la simulation est celle de Lena dont les dimensions en pixel est
512x512. On peut déterminer facilement la taille en octet de l’image originale :
Ko7863512512 =×× .
On fait varier le facteur de qualité et on mesure pour chaque valeur la taille du fichier
compressé.
Facteur de qualité 1 2 3 4 5 6
Taille du fichier compressé (Ko)
311 273 259 250 245 241
7 8 9 10 11 12 13 14
238 235 233 231 230 229 228 227
15 16 17 18 19 20 21 22
226 225 225 224 224 223 223 222
23 24 25 30 35 40 50 60
222 221 221 220 219 218 217 216
80 100 150 200 300 600 10000
215 214 213 212 212 212 212
Tableau 5 : Table de mesure de la taille du fichier compressé en fonction du facteur de
qualité
La figure 17 représente la variation de la taille du fichier compressé en fonction du
facteur de qualité.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 82/101
Chapitre IV Conception et Implémentation
On remarque que la courbe de la figure 17 tend vers une limite a partir de laquelle on
ne peut pas comprimé d’avantage l’image. Cette limite correspond à une image formé par
des blocs 8x8 contenant des pixels de même couleur.
Figure 17 : Courbe représentative de la variation de la taille du fichier compressé en
fonction du facteur de qualité
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 83/101
Chapitre IV Conception et Implémentation
Voici les résultats que l’on peut obtenir en compressant une image avec notre codeur
de source :
Image de départFacteur de qualité : 0
24 bits par pixel
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 84/101
Chapitre IV Conception et Implémentation
Taux de compression : 60%Facteur de qualité : 1
9.7 bits par pixel
Image de l’erreur :
Facteur de qualité : 1
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 85/101
Chapitre IV Conception et Implémentation
Taux de compression : 68%Facteur de qualité : 5
7.62 bits par pixel
Image de l’erreur :
Facteur de qualité : 5
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 86/101
Chapitre IV Conception et Implémentation
Taux de compression : 71%Facteur de qualité : 20
6.95 bits par pixel
Image de l’erreur :
Facteur de qualité : 20
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 87/101
Chapitre IV Conception et Implémentation
Taux de compression : 73%Facteur de qualité : 150
6.63 bits par pixel
Image de l’erreur :
Facteur de qualité : 150
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 88/101
Chapitre IV Conception et Implémentation
On remarque qu’à partir d’un certain taux de compression l’image devient
méconnaissable, et semble être composée de blocs de 8x8 pixels d’une couleur unique. Et
lorsque l’image est agrandie cet effet est amplifié. Plus qu’on augmente le facteur de qualité
plus l’image de l’erreur devient claire et les contours deviennent de plus en plus visibles.
Les taux de compression obtenus sont impressionnants, mais, restent difficiles à
interpréter, car ils dépendent de la nature de l’image. Mais, on peut définir les niveaux de
qualité d’image selon le taux de compression en indiquant le nombre de bits nécessaire au
codage d’un pixel :
• entre 6.8 et 7 bits par pixel, l’image est de qualité moyenne et peut suffire à certaines
applications
• entre 7 et 7.5 bits par pixel, l’image est de bonne qualité
• entre 7.5 et 8 bits par pixel, l’image est d’excellente qualité et répond à tous les
besoins
• entre 10 et 8 bits par pixel, l’image est visuellement indifférentiable de l’originale
La caractéristique la plus importante est le paramétrage de la qualité de l’image, qui
est fait lors du choix de la matrice de quantification. Ce qui donne à l’utilisateur une très
grande flexibilité sur le choix de la qualité de l’image en fonction des contraintes et decapacité de stockage.
Défauts
Premièrement, sur la plupart des images un facteur de qualité égal à 5 pour la matrice
de quantification produit une perte de définition qui se ressent sur la qualité de l’image. En
outre, si ce facteur est dépassé l’image a tendance à apparaître comme une composition de
blocs de 8x8 pixels.
Deuxièmement, l’algorithme de compression nécessite une puissance de traitement
égale pour la compression et la décompression ce qui impose une implémentation matérielle
importante. Or, les applications multimédia de diffusion d’images ont besoin de moyens de
décompression peu coûteux.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 89/101
Chapitre IV Conception et Implémentation
V.2 Codeur canal
Pour évaluer les performances d’un système de transmission il est indispensable de
savoir déterminer la probabilité d’erreur introduite par le canal de transmission.
L’image choisit pour la simulation et celle de Lena. A la sortie du codeur source cette
image est bruitée par un bruit blanc gaussien additif dont la puissance est fixé. Le modèle de
canal considéré est un canal discret sans mémoire, qu’on appelle dans le cas binaire canal
binaire symétrique dont les probabilités de transition sont données par le tableau suivant :
i \ j 0 1
0 1 – p p
1 p 1 – p
Tableau 6 : Table des probabilités de transition
p étant la probabilité d’erreur binaire.
On fait varier la puissance du bruit, ce qui entraîne une variation de la probabilité
d’erreur sur un bit p, afin de montrer visiblement l’importance d’un codeur canal dans une
chaîne de transmission numérique et d’évaluer les performances de notre codeur canal pour
différents niveaux de puissance du bruit.
La figure suivante représente la variation du nombre d’erreurs non corrigées en fonction
de la probabilité d’erreur binaire.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 90/101
Chapitre IV Conception et Implémentation
0 0,063 0,125 0,188 0,25 0,313 0,375 0,438 0,5
Probabilitée d'erreur binaire
N b r d ' e r r e u r s n o n c o r r i
g é e s
Figure 18 : Courbe représentative de la variation du nombre d’erreurs non corrigées en
fonction de la probabilité d’erreur binaire
La figure 19 et la figure 20 représentent respectivement l’image de Léna reçue d’une
chaîne de transmission ne contenant pas de codeur canal et celle reçu d’une chaîne de
transmission contenant notre codeur canal. Les deux chaînes de transmission sont
caractérisées par un canal de probabilité d’erreur binaire p = 0.0015.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 91/101
Chapitre IV Conception et Implémentation
Figure 19 : Image reçue sans utilisation de codeur canal pour p = 0.0015.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 92/101
Chapitre IV Conception et Implémentation
Figure 20 : Image reçue en utilisant notre codeur canal pour la même probabilité d’erreur
On remarque que l’image reçue après le décodage est semblable à celle transmit. En
effet, l’impact des erreurs de transmission est supprimé après la correction des erreurs. D’où
l’importance du codeur canal dans une chaîne de transmission.
Sans utilisation de codeur canal, une image reçue peut être trop bruité qu’on ne peut
pas voir ses détails. L’utilisation du codeur canal va permettre de détecter puis de corriger quelques erreurs ce qui éclaircit un peu l’image.
L’image représentée par la figure suivante montre visiblement l’impact des erreurs sur
une image reçue d’une chaîne de transmission présentant un canal trop bruité et ne
présentant pas un codeur canal.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 93/101
Chapitre IV Conception et Implémentation
Figure 21 : Image trop bruité issue d’une chaîne qui ne présente pas de codeur canal
Sur la figure suivante, on a l’image reçue de la même chaîne en ajoutant un codeur
canal au niveau de l’émission et un décodeur canal au niveau de la réception. On remarque
que malgré la présence d’erreurs non corrigées qu’on peut voir qu’il s’agit bien de l’image
de Léna.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 94/101
Chapitre IV Conception et Implémentation
Figure 22 : Image reçue cas d’un canal trop bruité
Pour le codeur canal qu’on a utilisé dans la simulation, on peut déterminer quelques
ordres de grandeurs de probabilités d’erreur qui reflètent la qualité de l’image reçue.
10-1 Mauvais, mais peut donné une idée sur l’image reçue.
10-2
Qualité acceptable, en ajoutant un dispositif de débruitage on peut diminuer le
nombre d’erreurs voir les éliminer pour s’approcher de l’image originale
< 10-3Bonne qualité de transmission. L’image reçue est nette ne présentant aucun
bruit.
Tableau 7 : Quelques ordres de grandeur de probabilité d’erreurs
D’après cette table, on peut tirer la conclusion suivante : Les performances d’un code
dépendent du canal sur lequel il est utilisé.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 95/101
Chapitre IV Conception et Implémentation
V.3 Comparaison entre codage source et codage canal indépendant
et le codage source canal conjoint
V.3.1 Théorème de séparation de ShannonShannon est plus connue en traitement de signal par son théorème de séparation. En
plus, c’est celui, grâce à sa théorie de l’information, a donné les limites possibles tant pour
le codage de source tant pour le codage de canal :
− Pour le codage source, Shannon affirme qu’il existe un débit binaire *
s R , vers lequel
on peut tendre, et qu’on ne peut pas dépasser pour comprimer une source d’information,
pour une distorsion D bien fixé suivant l’application. Cette distorsion est uniquement celle
introduite par le codage de source.
− Pour le codage canal, Shannon montre que pour avoir une transmission fiable dans un
canal bruité, il existe un débit binaire *
c R appelé capacité du canal qu’on peut tendre vers,
mais jamais dépasser.
Shannon affirme, qu’on peut tendre vers une limite infranchissable de débit
source/canal *
*
*
c
s
R R R = avec un système ou codage source et canal sont séparé. Ce débit
global est notéc
s
R
R R = exprimé en nombre moyen de symbole émis par symbole de
source.
Ceci nous donne la borne en débit pour le codage conjoint source/canal.
Il est alors clair qu’on peut s’approcher théoriquement de cette limite de la manière
suivante :
− Le codeur source garantie un débit )(* D R R s = pour une distorsion D donnée.
− Le codeur canal s’impose à une fiabilité quasiment parfaite (Pe 0) tout en
garantissant un débit c R proche de *
c R .
De la sorte qu’on obtient un débit global proche de la limite de Shannon avec une
distorsion totale égale à D [11].
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 96/101
Chapitre IV Conception et Implémentation
V.3.2 Solution traditionnelle et limites d’utilisation
La stratégie traditionnelle consiste à comprimer au maximum la source pour un niveau
de distorsion donnée. Ceci rend les données plus sensibles aux erreurs de transmission.
L’utilisation d’un codeur canal très sophistiqué résout ce problème. Mais en pratique, ilexiste toujours des contraintes de complexité matérielle et de délai qui limite la possibilité
d’utiliser de tel codeur.
V.3.3 Solution conjointe.
Il s’agit de résoudre les deux problèmes de codage source et de codage conjoint
ensemble. Afin de réduire la complexité tout en gardant un bon niveau de performance [1].
A . P ROTECTION DES CODES SOURCES
Dans ce cas, le codeur de source assure les deux fonctions de compression et de
protection contre les erreurs de transmission. Ceci s’effectue en réglant le codeur source de
telle manière que les erreurs éventuelles de transmission aient un impact moins néfaste au
décodage. On dit que le codeur source est plus robuste aux erreurs [11].
B . E QUILIBRAGE DE RENDEMENTS
Cette solution propose un équilibrage du rendement entre codeur source et canal, afin
de trouver un point de fonctionnement compatible avec l’application.
V.4 Conclusion
Les algorithmes développés dans le chapitre 4 ont été implémentés en utilisant le
langage C++. Les résultats de simulation montre le bon fonctionnement de ces algorithmes.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 97/101
Chapitre V Résultats et discussion
CONCLUSION GÉNÉRALE
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 98/101
Chapitre V Résultats et discussion
Conclusion Générale
Dans ce projet de fin d’étude, nous avons élaborer un algorithme de codage source
appliqué à la transmission d’images et d’un algorithme de codage canal en utilisant le
codage BCH. Les deux problèmes du codage de source et de codage de canal sont
considérés de manière séparée. A la fin de ce projet, nous avons pu mettre en œuvre une
chaîne de simulation complète pour la transmission d’images fixes.
Ce travail nous a été fructueux dans la mesure où il nous a permis de découvrir un
domaine en plein essor, celui du codage source canal. Il nous a permis de prendre
conscience de la nécessité de développer des techniques de codage pour représenté le signal
à transmettre sous une forme plus compacte afin de gagner en vitesse de transmission, et destechniques de codage pour protéger le signal contre les erreurs de transmission qui peuvent
altérer la qualité de la transmission. Ces deux techniques sont appelées dans la littérature
codage source et codage canal.
Nous avons montré à la fin de ce travail que traiter ces deux problèmes séparément
peut ne pas vérifier les contraintes de complexité matérielle et de délais de reconstitution.
En effet, comprimer au maximum un signal numérique prend du temps tant au niveau de
l’émetteur que pour le récepteur. En plus, ces données compressées deviennent plus
sensibles aux erreurs de transmission. Dans ce cas, l’utilisation de codeur canal très
sophistiqué devient indispensable, mais il n’est pas toujours réalisable en pratique. Afin de
réduire la complexité et le temps de traitement des données tout en gardant un bon niveau de
performance, La solution et de traiter ces deux problèmes ensembles. Cette solution est
appelée solution conjointe.
8/4/2019 RAP_PFE
http://slidepdf.com/reader/full/rappfe 100/101
Conclusion Générale
Bibliographie
[1] François-Xavier Bergot, « Dualité entre codage de source et codagede canal », Thèse présentée pour obtenir le grade de docteur del'Ecole nationale supérieure des télécommunications Spécialité :Electronique et Communications soutenue le 16 juin 2000.
[2] Mathieu ASTOUL, Sébastien BARRIA, Xavier DUFLOS, EmericVIRTON, « MPEG/JPEG Compression de données », Mai 1994.
[3] Ja-Ling Wu and Jiun Shiu, « Discrete cosine transform in errorControl coding », IEEE transactions on communication, vol 43, NO 5,MAY 1995.
[4] Alain GALVIEUX, « Introduction à la théorie de l’information et aucodage canal », mai 1996.
[5] BENOIT Christophe, DUSSON Alexandre, « La compression dedonnées informatiques », Juin 1999.
[6] O. Pothier, « Codage de canal et turbo-codes », septembre 2000.
[7] Joseph Boutros, « Techniques de communications numériques », 3ème
Partie : Codage correcteur d’erreur 1994.
[8] Fatma ABdelkefi, « Les codes Reed-Solomon Complexes pour lacorrection des erreurs impulsives dans les systèmesmultiporteuses ».
[9] Andrew B. Watson, «Image Compression Using the Discrete CosineTransform», NASA Ames Research Center 1994.
[10] Gregory K. Wallace «The JPEG Still Picture Compression Standard»,Multimedia Engineering Digital Equipment Corporation December1991.