M2 Informatique/Réseaux Université Pierre et Marie Curie UE APMM



Documents pareils
Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Transmission d informations sur le réseau électrique

Formats d images. 1 Introduction

1 Introduction au codage

Chap17 - CORRECTİON DES EXERCİCES

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Quantification Scalaire et Prédictive

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Chaine de transmission

Représentation des Nombres

Compression Compression par dictionnaires

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Compression et Transmission des Signaux. Samson LASAULCE Laboratoire des Signaux et Systèmes, Gif/Yvette

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Université de La Rochelle. Réseaux TD n 6

Feuille TD n 1 Exercices d algorithmique éléments de correction

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Définitions. Numéro à préciser. (Durée : )

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Programmation linéaire

Chapitre 13 Numérisation de l information

Informatique Générale

Communications numériques

Transmission de données. A) Principaux éléments intervenant dans la transmission

Plus courts chemins, programmation dynamique

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Compression de Données - Algorithme de Huffman Document de Conception

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours d initiation à la programmation en C++ Johann Cuenin

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Algorithmique et Programmation, IMA

Logiciel de Base. I. Représentation des nombres

ISO/CEI NORME INTERNATIONALE

Rappels sur les suites - Algorithme

TD : Codage des images

LES CARACTERISTIQUES DES SUPPORTS DE TRANSMISSION

Chapitre 18 : Transmettre et stocker de l information

Systèmes de communications numériques 2

1 Recherche en table par balayage

Algorithme. Table des matières

Conversion d un entier. Méthode par soustraction

NOTE SUR LA MODELISATION DU RISQUE D INFLATION

Arbres binaires de décision

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

V- Manipulations de nombres en binaire

données en connaissance et en actions?

Fonctions de plusieurs variables

Continuité et dérivabilité d une fonction

I. TRANSMISSION DE DONNEES

Codage d information. Codage d information : -Définition-

ARBRES BINAIRES DE RECHERCHE

Technique de codage des formes d'ondes

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Représentation d un entier en base b

Les structures de données. Rajae El Ouazzani

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Numérisation du signal

Chapitre 2 : communications numériques.

Chapitre 10 Arithmétique réelle

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Bases de données documentaires et distribuées Cours NFE04

Limites finies en un point

TP3 : Manipulation et implantation de systèmes de fichiers 1

Les arbres binaires de recherche

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

UE C avancé cours 1: introduction et révisions

Bases de programmation. Cours 5. Structurer les données

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Projet Matlab : un logiciel de cryptage

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Relation entre deux variables : estimation de la corrélation linéaire

Quelques Algorithmes simples

Structure du format BMP, sa lecture, sa construction et son écriture

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Fondements de l informatique Logique, modèles, et calculs

TP, première séquence d exercices.

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Algorithmique I. Algorithmique I p.1/??

2.4 Représentation graphique, tableau de Karnaugh

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

ÉPREUVE COMMUNE DE TIPE Partie D

Traitement bas-niveau

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Arbres binaires de recherche

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Cours 1 : Qu est-ce que la programmation?

TP SIN Traitement d image

Expérience 3 Formats de signalisation binaire

Architecture des Systèmes d Information Architecture des Systèmes d Information

INF6304 Interfaces Intelligentes

Théorie et codage de l information

Intégration et probabilités TD1 Espaces mesurés

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Transcription:

TD TECHNIQUES DE CODAGE ET DE COMPRESSION. LANGAGE / CODAGE / VALENCE.. Rappels Toute fraction intelligible d un message est constituée de symboles. Le langage est l ensemble de ces symboles. Un codage va associer à chaque symbole un mot de code. Chaque mot de code est constitué d un ensemble de signes élémentaires, encore appelés symboles de code, et est de longueur l i correspondant au nombre de signes élémentaires qui le décrivent. La valence du codage est le nombre de symboles de code. La taille d un codage est le nombre de mots de code. Si tous les mots de code n ont pas tous la même longueur, le codage est de longueur variable. Le nombre de mots de code associés à un langage dont la longueur est égale à p est alors noté L p. Un codage est : - intelligible si la suite des signes élémentaires correspondant à une succession de symboles possède une unique interprétation ; - instantané s il est possible de le décoder au fur et à mesure de l arrivée des mots de code ; - préfixe, si aucun mot de code n est le début d un autre mot de code ; - complet s il est intelligible et si tout ajout d un mot de code de longueur inférieure ou égale à n le rend inintelligible et L p = pour tout p > n. Une condition nécessaire pour qu un codage de valence V (dont les mots de code ont une longueur maximale n) soit complet et intelligible est donnée par l égalité de Kraft-McMillan : n p= L p V p =V.. Exercices Soit le langage représentant les quatre symboles A, C, G, T. On considère le codage suivant : A est représenté par le mot de code, C par, G par, T par.... Quels sont les symboles de code? Quelle est la valence du codage? Chaque symbole de code est un bit. Le langage est donc bivalent (de cardinalité V = ).... Quels sont les valeurs L, L, L 3, L 4? Est-ce un codage intelligible, préfixe, vérifie t il l égalité de Kraft-McMillan? L =, L =, L 3 =, L 4 =. Le langage n est pas intelligible : la suite peut être interprétée comme AC ou G.

Il n est pas non plus préfixe puisque le mot de code associé à A est préfixe de celui associé à C (et à G). On considère maintenant tous les codes bivalents (de valence ) et de longueur maximale 3...3. Ecrire l égalité de Kraft-McMillan dans ce cas particulier. n = 3 et V =, la contrainte est alors : L + L + L 3 4 =...4. Résoudre cette équation (donner toutes les valeurs possibles de L, L et L 3 vérifiant cette égalité). L L 4 3 L 3 4 4 6 8..5. Pour chaque triplet de valeurs, donner un code bivalent asssocié. Pour les différentes valeurs de L, L et L 3 vérifiant la contrainte précédente, on obtient le tableau suivant : L L 4 3 L 3 4 4 6 8 Mots de code Taille du codage 3 4 5 4 5 6 7 8 Soit le codage représentant les quatre symboles A, C, G, T où A est représenté par le mot de code, C par, G par, T par...6. Quels sont les valeurs L, L, L 3, L 4? Est-ce un codage intelligible? Est-ce un codage complet? L =, L =, L 3 = 3, L 4 =. Le codage est préfixe donc est intelligible. Ce codage n est pas complet, car l ensemble des mots de code est un sous-ensemble du codage complet de taille 5 : {,,,, } Les codages {,,, } et {,,, } sont complets donc mieux adaptés.. CODAGES COMPRESSIFS : SHANNON, FANO-SHANNON ET HUFFMAN Dans toute la suite, sauf mention explicite du contraire, on considère des codes binaires.

.. Rappels A chaque symbole s i est associée une probabilité p i représentant la fréquence d occurrence du symbole. Ces probabilités sont estimées, soit a priori sur des corpus (échantillons) représentatifs de l application considérée, soit a posteriori sur le corpus réel de l application. La première solution ne fournit qu une estimation, alors que la seconde nécessite un pré-traitement du corpus. On définit l entropie d une source de la façon suivante : H(S) = log (p i ) La base du logarithme fixe l unité de l entropie : dans le cas de la base, l entropie s exprime en shannon (sh). On peut démontrer que l entropie est maximum dans le cas de l équiprobabilité des symboles. L efficacité d un code est estimée par ses caractéristiques : - Longueur moyenne : l moy = l i p i. On peut montrer que i H(S) est donc : l min = log (V ) - Rendement R = l min H(S) = l moy l moy log (V ) - Redondance : ρ= R i, ce qui se simplifie si le code est bivalent. Tous ces paramètres sont relatifs à l entropie de la source... Entropie d une source Soit une source (S) à symboles (s à s ) définie par les probabilités suivantes : p i H(S) log (V ) l moy, la limite théorique S s s s 3 s 4 s 5 s 6 s 7 s 8 s 9 s s p i..5....8.7.6.4.3.... Calculer l entropie de la source. 3

S p i -log (p i ) - p i log (p i ) s..84.48 s.5.737.4 s 3. 3.59.367 s 4. 3.84.35 s 5. 3.3.33 s 6.8 3.644.9 s 7.7 3.837.69 s 8.6 4.59.44 s 9.4 4.644.86 s.3 5.59.5 s. 5.644.3 H(S) = 3.97 sh... Que vaudrait l entropie si tous les symboles étaient équiprobables? Dans le cas de l équiprobabilité : p i = et H(S) = log ( ) = 3.459 On constate bien que l entropie est supérieure dans le cas de l équiprobabilité des symboles..3. Codage de Shannon Les symboles s i sont codés par un nombre l i d éléments unitaires tel que log ( p i ) log (V ) l i < log ( p i ) log (V ) +.3.. Donner un code de Shannon binaire pour la source ci-dessus. Une méthode simple consiste à calculer la longueur de chaque mot de code puis à construire un arbre binaire respectant ces longueurs 4

S p i l i l i p i Code proposé s..84 l < 3.84 3.66 s.5.737 l < 3.737 3.45 s 3. 3.59 l 3 < 4.59 4.48 s 4. 3.84 l 4 < 4.84 4.44 s 5. 3.3 l 5 < 4.3 4.4 s 6.8 3.644 l 6 < 4.644 4.3 s 7.7 3.837 l 7 < 4.837 4.8 s 8.6 4.59 l 8 < 5.59 5.3 s 9.4 4.644 l 9 < 5.644 5. s.3 5.59 l < 6.59 6.8 s. 5.644 l < 6.644 6. l moy = 3.83.3.. Calculer les caractéristiques de ce code : longueur moyenne, rendement et redondance. l moy = 3.83 R =.835 ρ = 6.5%.4. Codage de Fano-Shannon Il s agit de construire un arbre en équilibrant à chaque fois au maximum les sous-arbres droit et gauche..4.. Donner un code binaire pour la source ci-dessus en appliquant la méthode de Fano-Shannon. s. s.5 s 3. s 4. s 5. s 6.8 s 7.7 s 8.6 s 9.4 s.3 s..49.5..7.9..5...8.3.9..8.7.6.4.5.3. Le codage obtenu est le suivant : 5

S s s s3 s4 s5 s6 s7 s8 s9 s s code.4.. Calculer les caractéristiques de ce code. S s s s 3 s 4 s 5 s 6 s 7 s 8 s 9 s s p i..5....8.7.6.4.3. l i 3 3 3 4 4 4 4 4 5 5 l i p i.44.45.36.33.4.3.8.4.6.5. l moy = 3.3 l moy = 3.3 R =.99 ρ = %.5. Codage de Huffman L algorithme consiste à construire un arbre V-aire à partir des feuilles (symboles d origine) vers la racine :. Ordonner les symboles suivant les probabilités croissantes.. Rassembler* les V symboles les moins probables en un super-symbole dont la probabilité est la somme des probabilités des symboles intervenant. Adjoindre à chacun des V symboles un élément différent de l alphabet. 3. Si la nouvelle source comporte plus d un symbole, aller en sinon fin de l algorithme. Le code de Huffman des symboles de source s obtient par un parcours de la racine vers les feuilles. *Attention : Pour V >, si r = (n ) mod (V ) alors au premier passage à l étape, rassembler r+ symboles..5.. Donner un code binaire pour la source ci-dessus en appliquant la méthode de Huffman. Par convention, on choisira de coder les symboles ou super-symboles de plus faible probabilité par. 6

s. s.3 s 9.4 s 8.6 s 7.7 s 6.8 s 5. s 4. s 3. s.5 s..5.9.3.7..5.3.43 Le codage obtenu est le suivant :.57 S s s s3 s4 s5 s6 s7 s8 s9 s s code.5.. Calculer les caractéristiques de ce code. S s s s 3 s 4 s 5 s 6 s 7 s 8 s 9 s s p i..5....8.7.6.4.3. l i 3 3 3 3 4 4 4 5 6 6 l i p i.44.45.36.33.3.3.8.4..8. l moy = 3. l moy = 3. R =.993 ρ =.7%.5.3. Soit la séquence interprétée par un décodeur en bande de base, à quel message correspond cette séquence? La séquence correspond au message s 4 s 6 s s s 7..5.4. Un code quaternaire trouve son application dans le cadre d une transmission en bande de base d un codage de valence 4. Donner un code quaternaire en appliquant la méthode de Huffman en faisant attention à la note plus haut. Quel code préfèrera-t-on (binaire ou quaternaire)? 7

s. s.3 s 9.4 s 8.6 s 7.7 s 6.8 s 5. s 4. s 3. s.5 s..5 3. 3 Le codage obtenu est le suivant :.4 3 S s s s 3 s 4 s 5 s 6 s 7 s 8 s 9 s s code 33 3 3 3 3 R = S s s s 3 s 4 s 5 s 6 s 7 s 8 s 9 s s p i.. 5... l i 3 3 l i p i.. 5. 4.. H(S) l moy log (V ) R = 3.97 *.68 =.95. 8. 6. 7. 4. 6.. 4. 8. 3. 9.. 6 l moy =.68 l moy =.68 R =.95 ρ = 4.8% Code binaire R =.993 ρ =.7% Code quaternaire R =.95 ρ = 4.8% Les caractéristiques des codes montrent que le codage binaire est mieux adapté à la source que le codage quaternaire..6. Comparaison de l efficacité des codes.6.. Conclure sur l efficacité des codes binaires. L un de ces codes est-il absolument optimal? Résumé : Shannon Fano- Shannon Huffman H(S) = l min = 3.97 l moy = 3.83eb l moy = 3.3eb l moy = 3.eb 8

R =.835 R =.99 R =.993 ρ = 6.5% ρ = % ρ =.7% On note que les trois codes binaires sont efficaces (l moy < H(S)+), et de plus en plus efficace suivant leur ordre de présentation. Aucun de ces codes n est absolument optimal puisque leur longueur moyenne (l moy ) est supérieure à la longueur minimum théorique (l min ) 3. CODAGE PAR BLOC DE SYMBOLES 3.. Rappels L objectif d un codage par bloc de symboles est d améliorer l efficacité d un codage par symbole (non optimal) pour se rapprocher de la borne inférieure théorique. 3.. Exercices On considère sources S A et S B, chacune constituée de 3 symboles et définies par leurs probabilités : S A s s s 3 P(S A = s i ).38.34.8 S B s s s 3 P(S B = s i ).5.5.5 3... Calculer l entropie des deux sources. S A p i -log (p i ) - p i log (p i ) s.38.396.53 s.34.556.59 s 3.8.837.54 H(S A ) =.573sh S B p i -log (p i ) - p i log (p i ) s.5.5 s.5.5 s 3.5.5 H(S B ) =.5 sh 3... Quel est, parmi les codages de Shannon, Fanno-Shannon et Huffman, le codage le plus efficace pour chacune des deux sources? Comparer leur efficacité. Pour la source S A Les méthodes de Fanno-Shannon et Huffman sont équivalentes. Un code possible est s (), s (), s 3 (). La redondance du code est de 7.3%. 9

Pour la source S B Les méthodes de Shannon, Fanno-Shannon et Huffman sont équivalentes. Un code possible est s (), s (), s 3 (). La redondance du code est nulle. Conclusion : Les méthodes de codage sont moins efficaces quand les probabilités p i des symboles à coder ne sont pas des puissances négatives de la valence V (V = dans l exemple). 3..3. Montrer que le codage de Huffman est optimal si les probabilités p i des symboles à coder sont des puissances négatives de la valence V du codage. Les probabilités sont donc p = -, p = -, p 3 = -3,, p n = -n, p n+ = -n. Avec la méthode de Huffman, s sera codé par, s par, etc. La longueur moyenne est donc égale à l entropie. On se propose de coder les symboles par. Cela revient à définir une nouvelle source qui émet un bi-symbole. On applique cette transformation à la source S A en supposant que la probabilité d un bisymbole est le produit de la probabilité des symboles le composant. 3..4. Donner pour cette nouvelle source S A, le codage le plus efficace. Conclure sur l efficacité du codage par bloc? S A p i -log (p i ) - p i log (p i ) s s.44.796.43 s s.9.955.38 s s.9.955.38 s s.6 3.8.36 s s 3.6 3.38.343 s 3 s.6 3.38.343 s s 3.95 3.396.33 s 3 s.95 3.396.33 s 3 s 3.8 3.644.9 H(S A ) = 3.5sh Pour la source S A Les méthodes de Fanno-Shannon et Huffman sont équivalentes. Un code possible est s s (), s s (), s s (), s s (), s s 3 (), s 3 s (), s s 3 (), s 3 s (), s 3 s 3 (). La redondance du code est maintenant de.8%. Le codage par bloc est plus efficace. 4. CODAGES AVEC PREDICTION POUR LES IMAGES 4.. Rappels La procédure de modulation par impulsions codées différentielles (MICD) ou Differential Pulse Coding Modulation (DPCM), consiste à calculer d abord la différence entre le signal d entrée x et une valeur de prédiction p. En pratique, p est une combinaison linéaire de x et de ses voisins. Différentes combinaisons existent pour déterminer la valeur de prédiction p. Si x i,j est le pixel considéré alors p peut être défini par x i-

,j ou x i,j- (valeur du pixel précédent sur la même ligne ou sur la même colonne) ou par une les relations suivantes : x i-,j-, x i,j- +x i-,j x i-,j-, x i,j- +(x i-,j x i-,j- )/, x i-,j +(x i,j- x i-,j- )/, (x i,j- +x i-,j )/ Cette valeur de prédiction est connue du décodeur. L erreur «x p» est ensuite quantifiée à l aide d une matrice de quantification et l on obtient e q. On code alors en mots binaires ces valeurs par indexation. On reconstruit simplement la valeur codée en ajoutant e q à la valeur de prédiction. Lors de la décomposition, la connaissance des pixels reconstruits permet de calculer les valeurs de prédiction d indices supérieurs, et en leur ajoutant les erreurs de prédiction quantifiées, on reconstruit les pixels de l image. Exemple de table de quantification (optimisée par le CCETT) Erreur de prédiction Valeur quantifiée de e : e q Erreur de prédiction Valeur quantifiée de e : e q - 55 e -7-8 9 e 8-69 e - 5-58 9 e 3 5-49 e -33-4 33 e 47 39-3 e - 9-5 48 e 64 55-8 e - 9-65 e 83 73-8 e - 3-4 84 e 4 93 - e 5 e 7 5 3 e 8 4 8 e 55 4 La forme la plus simple du codage prédictif est appelé «linéaire Modulation» ou Delta Modulation. Le prédicteur est une fonction dépendant simplement de la valeur de la donnée précédente, et on utilise un quantificateur sur bit ce qui permet une représentation sur bit du signal. On peut également utiliser une DPCM bidimensionnelle, comme le fait JPEG en mode sans perte. L erreur de prédiction n est pas quantifiée. 4.. Exercices Si l on considère que la valeur de prédiction pour les indices i,j est obtenue par p = (x i,j- + x i-,j ) / pour i et j >. Si i (ou j) = ( ère ligne ou colonne respectivement) p = x i,j- ( resp. x i-,j ), et x, est transmis tel quel. On utilise la table de quantification précédente, la transmission des indexes est codée sur 4 bits (au lieu de 8 pour les données). Matrice originale 6 9 98 4 7 8 9 98 7 76 84 9

4... Calculer la matrice de prédiction avec les règles énoncées plus haut. 4... Calculer la matrice d erreurs de prédiction. Matrice de prédiction 6 3 98 98 85 9 96 7 76 84 9 Matrice d erreurs de prédiction 4-4 - -8-5 - 4..3. Quantifier la matrice d erreurs de prédiction à l aide la table de quantification précédente. La transmission des indexes est codée sur 4 bits au lieu de 8 pour les données (il y a seulement 6 valeurs possible d erreurs quantifiées). Matrice des erreurs quantifiées 4 - -5-4 4..4. Reconstruire l image (en arrondissant à l entier supérieur). Quelle est l erreur moyenne? Image reconstruite L erreur moyenne est 35/6 =,875. 4 9 97 75 84 93 95 75 8 87 9 5. CODAGE EN GROUPE 5.. Rappels Le block truncation coding ou codage en groupe est une méthode très simple à mettre en œuvre qui opère sur des blocs d images. On calcule pour chaque bloc la moyenne X et l écart type σ. Ces deux valeurs sont transmises ainsi qu une matrice de signes, qui indique pour chaque point du bloc s il se trouve au dessus ou en dessous de la moyenne. La valeur reconstruite sera (X + σ) ou (X - σ) selon le cas.

Cette technique peut être améliorée en schématisant un quantificateur sur un bit. On calcule donc pour chaque bloc n n = m, la moyenne et l écart type. X = x i, j X = x i, j σ = X X m i, j m i, j Pour une valeur de seuil particulière il attribue la valeur a (resp. b) pour le bloc reconstruit si la valeur correspondante du bloc d origine est supérieure au seuil (resp. inférieure). Dans le cas particulier où le seuil est la moyenne, les valeurs de a et de b sont calculées en résolvant les équations suivantes : m X = ( m q) a + qb m X = ( m q) a + qb Où q est le nombre de pixels du bloc supérieur au seuil, ce qui donne finalement : a = X σ q ( m q) b = X + σ ( m q) q Alors chaque bloc est défini par les valeurs de la moyenne, de l écart type et d un plan de nxn bits constitué de et de, indiquant si les pixels sont au dessus ou au dessous du seuil. Cette méthode est utilisé pour la compression d images en niveaux de gris et réduit le nombre de niveaux. 5.. Exercices Soit le bloc 4x4 suivant : x i, j 37 = 6 43 4 5 56 47 7 47 55 69 5 5... Calculer la moyenne, l écart type et q. X = m i, j x i, j = 98,75 σ = 9,95 q = 7 5... En déduire a et b (en arrondissant au plus proche), puis le plan de bits 4x4 et le bloc reconstruit. a=6,7 7 et b=4, 4 le plan de bits est : le bloc est reconstruit en : 3

4 7 7 7 4 4 7 7 7 4 7 7 7 4 4 4 5..3. Que préserve cette méthode? La variance et la moyenne sont préservées aux arrondis près. 6. AUTRES CODAGES 6.. Le codage à base de dictionnaires (Lempel-Ziv-Welch) Initialisation : un dictionnaire est créé, typiquement avec tous les caractères du code ASCII. Les caractères sont lus un par un (c) et stockés dans un buffer (B) : - Si B+c est dans le dictionnaire alors B=B+c - Sinon B est envoyé, B+c est ajouté dans le dictionnaire, B=c A la fin le buffer est renvoyé s il n est pas vide (il correspond forcément à un mot du dictionnaire). 6.. Exercices 6... Choisir un mot quelconque contenant des répétitions de groupes de lettres et le coder avec l algorithme LZW (par exemple le mot «DAD DADA DADDY DO»). Caractère Buffer Emission Index dans le dictionnaire Nouvelle chaine du dictionnaire D D / / / A DA D 56 DA D AD A 57 AD _ D_ D 58 D_ D _D _ 59 _D A DA / / / D DAD 56 6 DAD A DA / / / _ DA_ 56 6 DA_ D _D / / / A _DA 59 6 _DA D AD / / / D ADD 57 63 ADD 4

Y DY D 64 DY _ Y_ Y 65 Y_ D _D / / / O _DO 59 66 _DO / O O / / 6... Proposer un algorithme de décodage et l appliquer. La chaine lue est D ;A ;D ;_ ;56 ;56 ;59 ;57 ;D ;Y ;59 ; Sortie D, puis A (ajout DA dans le dico avec 56), puis D (ajout AD dans le dico avec 57), puis _ (ajout D_ dans le dico avec 58), puis DA (ajout _D avec 59), puis DA (ajout DAD avec 6), etc. 6..3. Quel est l inconvénient de cette méthode, comment y remédier? Pour être efficace il faut coder les émissions sur le nombre minimum de bits (8 au début) puis augmenter ce nombre au fur et à mesure des besoins. On peut garder un code pour dire que le nombre de bit est augmenté de. 6.3. Le codage arithmétique Le principe de cette méthode est de calculer les fréquences d apparition des symboles puis d associer à chaque symbole un intervalle réel compris entre et. Par exemple si on a la chaîne «abbc», on associe les intervalles suivants : - a : fréquence ¼ : intervalle ] ;.5[ - b : fréquence ½ : intervalle ].5 ;.75[ - c : fréquence ¼ : intervalle ].75 ; [ Par la suite on lit les lettres une par une et on encode : a : intervalle ] ;.5[, que l on découpe en 4 : le premier quart pour a, les deux suivants pour b, le dernier pour c suivant le principe précédent. b : intervalle ].65 ;.875[ que l on découpe à nouveau en 4. b : intervalle ].9375 ;.565[, etc. Une fois terminé le traitement de la chaine, il suffit d envoyer un réel quelconque dans l intervalle. 6.4. Exercices 6.4.. Encoder la chaine cbacbbba avec le codage arithmétique. min max taille int int int int3,5,75 c,75,5,75,85,9375 b,85,9375,5,85,84375,965,9375 a,85,84375,35,85,835,8359375,84375 c,8359375,84375,785,8359375,8378965,84796875,84375 5

b,8378965,84796875,3965,8378965,83886788,84833,84796875 b,83886788,84833,9535,83886788,839355469,84333,84833 b,839355469,84333,976563,839355469,83959969,848789,84333 a,839355469,83959969,444,839355469,8394654,839538574,83959969 Il suffit de prendre n importe quelle valeur entre.839355469 et.83959969 6.4.. Proposer une méthode de décodage. De manière symétrique, le nombre est compris entre.75 et, la première lettre est donc un c, puis il est compris entre.85 et.9375 donc la deuxième lettre est un b, etc. 6.4.3. Quel(s) inconvénient(s) voyez-vous à cette méthode? Précision en nombre réels sur une machine implique de compresser des chaînes courtes. Nécessité d avoir la même représentation des flottants sur les différentes machines. 6