Cours/TD 5 Codage Shannon Codage arithm etique : Elias
Cours/TD 5 Codage Shannon Codage arithm etique : Elias 5 1 De l’algorithme de Fano et Shannon au codage arithm ethique Si NX 1 j=0 2 l j
Notes de cours Codage arithmétique
Dans le codage arithmétique un identificateur ou une étiquette unique est générée pour la séquence à encoder Cette étiquette correspond à une fraction binaire à partir de la quelle on obtient le code binaire de la séquence En pratique la génération de l’étiquette et du code
Principes du codage sans perte - Codage dHuffman, Lempel-Ziv
Codage arithmétique Codage adaptive et basé contexte Plan 1 Principes 2 Codage optimale Huffman Codage arithmétique Codage adaptive et basé contexte 3 Autres Techniques Lempel-Ziv Run Length JBIG 4 Quantification avec contrainte entropique M Cagnazzo Codage sans perte 24/55
Notes de cours Implémentation entière du codage arithmétique
codage arithmétique Édition Hiver 2012 IFT-4003/7023 Compression de données Mohamed Haj Taieb, Exemple m=6: Application de E 3 l(n)
Principes généraux de codage entropique dune source
Exemple : Codage arithmétique d'une source On considère la source S={a,b,c,d,e} avec les probabilités respectives d'occurrence des symboles suivantes : P(a)=0 3, P(b)=0 25,P(c)=0 20, P(d)=0 15, P(e)=0 1 On souhaite coder la séquence bdcea Pour coder cette séquence on divise l'intervalle [0,1[ en 5 sous-intervalles, puis on
Systèmes de numération, Codes et Arithmétique binaire
I 2 1 Codage d'un nombre: Le codage d'un nombre N est la conversion de celui-ci du système décimal vers un système non décimal de base B Il s'obtient en divisant successivement le nombre N par la base B jusqu'à ce que le quotient devienne nul Le nombre recherché sera obtenu en regroupant de droite à gauche les restes
Codage des nombres en mémoire
3 Codage des entiers relatifs (ou signés) Dans l’arithmétique classique, ces nombres sont précédés d’un signe moins, mais c’est ici impossible car on ne peut mettre que des bits dans une case mémoire Il faut donc trouver une écriture, une représentation des nombres négatifs, utilisant les bits disponibles
Représentation des nombres flottants
•Exemple: •+ 59,4151 * 10-5 => Normalisé: +0,594151 * 10-3 •Avec 2 digits réservés au codage de l’exposant avec un excentrement égal à 50 10
Exercicesbac--2011-2016--arithmétique
TS-spe Exercicesbac--2011-2016--arithmétique E2 correction Antilles2011 Candidatsayantchoisil'enseignementdespécialité 1 Onconsidèrel'équation(E):11x−7y =5,oùx ety sontdesentiersrelatifs
[PDF] codage de shannon fano exemple
[PDF] codage de huffman exercice corrigé
[PDF] codage arithmétique pdf
[PDF] codage arithmétique algorithme
[PDF] représentation des nombres signés exercices corrigés
[PDF] exercice de systeme de numeration
[PDF] système binaire informatique
[PDF] calcul nombre binaire
[PDF] cours sur le calcul binaire pdf
[PDF] codage et représentation de l'information exercices corrigés
[PDF] le codage informatique
[PDF] exercice corrigé codage source
[PDF] combien d'information sont représentées par 15 bits
[PDF] virgule fixe et virgule flottant pdf
Cours/TD 5 Codage Shannon.
Codage arithmetique : Elias
5.1 De l'algorithme de Fano et Shannon au codage
arithmethique Si N1X j=02 lj<1 l'inegalite de Kraft-McMillan est veriee, alors il existe un code uniquement decodable et m^eme prexe, qui admette l1;l2;:::;lN1comme distribution de longueurs. Un algorithme simple qui donne un code
prexec1;:::;cN1a partir d'une distribution de longueursl1;l2;:::;lN1veriant l'inegalite de Kraft-McMillan est :a chaque mot de codeci(a trouver) on associe le nombre= 0;c i2 [0;1[dont les decimales de l'ecriture en base 2 est formee des bits deci. On noteIil'intervalle I i= [c i;c i+ 2li[.Exemple.ci= 010donnec
i= 0;010 = 14 . etIi= [0;010;0;011[= [14 ;38 [est l'ensemble des nombres de[0;1[dont les decimales en base 2 commencent parci. Le mot codecidetermine uniquement l'intervalleIi: tronquer le developpement binaire de la limite gauche de l'intervalle (de longueurli) a log21l ibits pour retrouverci. La condition de code prexe deviennent : lesIisont des intervalles disjoints. Donc l'inegalite de Kraft- McMillan dit que la somme des longueurs desIiest strictement plus petite que 1. S'ils sont disjoints, on peut donc les mettre bout-a-bout en restant dans le segment [0;1[. Ainsi un algorithme de construction du code instantane sera : On met bout-a-bout les intervallesIi, classes par longueurs decroissantes (licroissantes) dans le segment [0;1[ en partant de la gauche.I1 I2 I3 ....
||{I|||{I||{I||||{ 0.0 0.10 0.110 0.111Au debutc
0= 0:0:::0. En general a chaque etape on rajoute aci1un 1 et on obtientc
il' extremite droite deIi. On peut completer avec des zeros si necessaire pour obtenir une longueurli+1> li. 1 Exemple.Soit une source discrete sans memoire codee avec des mots code avec de longueurs l il icode1 0 2 10 3 1105 11100
5 11101
5 11110
6 111110
6 111111
Noter qu'avec cet algorithme on detecte automatiquement si si les li ne verient pas l'inegalite de Kraft-McMillan : on "depasse" alors l'extremite droite du segment[0;1[, et on ne peut plus continuer comme dans : l icode1 0 2 10 3 1104 1110
5 11110
5 11111
6Erreur
1=2 + 1=4 + 1=8 + 1=16 + 1=32 + 1=32 + 1=64>1
Soit une source discrete et sans memoire produisant (independament) des symboles (lettres/mots) d'un alphabeta0;a1;;aN1selon la distribution de probabilitep= (p0;p1;:::;pN1) . Supposons que les symboles de l'alphabet sont deja ordonnes par probabilite decroissante. p0p1 pN1.
Idee naturelle (Shannon et Fano) etait d'associer aux symboles de notre alpha- bet des mots code binaires dont la longueur est egale au contenu d'information des symboles a coder. Pour un symbolajavec une probabilites d'apparitionpjqui n'est pas une puissance binaire ce contenu d'information estI(aj) =log2pjet Shannon demande que la longueur de bits necessaires soitlj=dI(aj)e=dlog2pje. L'interpretation geometrique de l'algorithme de Fano : Par la suite d'une dichotomie binaire reitteree sur [0, 1 [l'algorithme de Fano trouvait une partition d'intervalles. La dichotomie d'un interval s'arr^etait quand l'intervalle [Aj;Aj+1[ avait la longueur egale a la probabilite 2 ljde ( la production de ) du symbolaj(i.e. un seul 2 2/8 [1/20 11 1001
4/8 6/8
110111
7/82/4 3/41/4
5/83/81/8)Figure5.1 { Arbre partiel de dichotomie binaire reitere de [0;1) pourp=12
;14 ;18 ;18 element par intervalle). Le mot code etait le developpement binaire ni de la borne inferieure A jde cet intervalle. La precision de ce mot etait exactementlj=log2pj{ voir gure 5.1. L'algorithme simplie de Fano peut ^etre lui aussi generalise mais le code produit n'est pas unique, ni optimal.1. ordonner les symboles de l'alphabet sur une colonne par probabilite decroissante.
2. diviser l'ensemble des symboles en deux sous-ensembles de probabilites cumulees presque
egales.3. coder avec "0" (resp. "1") les elements du premier (resp. deuxieme) sous-ensemble
4. continuer de maniere recursive jusqu'au moment ou tous les sous-ensembles ne com-
portent plus qu'un element D'une maniere plus generale l'algorithme de Shannon associe aussi d'une maniere biuni- voque : { aux symboles de l'alphabet une partition d'intervalles dans [0;1[ { a un symbol un mot code qui est un nombre reel dans l'intervalle correspondant.5.2 Algorithme de Shannon
L'interpretation geometrique de l'algorithme de Shannon est de trouver une partition d'intervalles avec la propriete que la longueur de chaque intervalle [Aj;Aj+1[ est egale a la probabilite de ( la production de ) du symbolaj:pj= A j+1Aj, 0jN1. A 0= 0 A 1=p0 A2=p0+p1
3 A3=p0+p1+p2...
AN=p0+p1++pN1= 1
Un mot codecjest associe a l'intervalle [Aj;Aj+1[[0;1[ de la maniere suivante : c(Aj;Aj+1) =12:::lj()A= 0:12:::lj( debut du developpement binaire du nombre reelAj), avec l j=dlog2(pj)e. On prend autant de bits de ce developpement que le "contenu d'information de l'intervalle" l jle dicte. Maintenant pour assurer la correspondance biunivoque il faut prouver que le mot code associe a un intervalle [Aj;Aj+1[ est unique. Plus on peut montrer que : Lemme1.Le code Shannon est prexe, i.e. le mot codecj=c(Aj;Aj+1)ne peut pas^etre un prexe du motcj+1=c(Aj+1;Aj+2), pour0jN2. Preuve.Supposons que le codage binaire deAja la longueurlj=dlog2pje.Reecrivons les conditions de Shannon :
l j1Algorithme de Shannon1. ordonner les symboles de l'alphabet sur une colonne par probabilite decroissante.
2. calculerA0= 0 etAj+1=Aj+pj
3. pour chaque 0jN1 ecrire le developpement dyadiqueA= 2Ajjusqu'au
l j=dlog2pje"decalage de la virgule " { siA1, alors1= 1 etA= 2A1 { siA1, alors1= 0 etA= 2A4. acherAj= 0:1234:::lj
Exemple.Trouver le developpement binairea= 0:1234:::dea=111 42a=211
<1 =)1= 0, 4a=411 <1 =)2= 08a=811
<1 =)3= 0, 16a=1611 = 1 +511 =)4= 1 a (4)=511 = 0:567:::, 2a(4)=1011 <1 =)5= 04a=2011
= 1 +911 =)6= 1 a (6)=911 = 0:789:::, 2a(6)=1811 = 1 +711 =)7= 1 a (7)=711 = 0:8910:::, 2a(7)=1411 = 1 +311 =)8= 1 a (8)=311 = 0:91011:::, 2a(8)=611 <1 =)9= 04a(8)=1211
= 1 +111 =)10= 1 a (10)=111 = 0:111213=a. Le developpement binaire ( 10-periodique ) dea=111 = 0:0001011101Exercice.Trouver les mots codec(A;B)suivants :
1.c111
;15 2.c38 ;123.c112
;78 4.c35 ;34 5.c17 ;161.c111
;15 Premier pas :Determiner la precision du developpement dyadique. La longueur du codage est donnee par l'information qui correspond a l'intervalBA=15 111=655 . Doncdlog2556 e=
4, parce que 8<556
<16. 111= 0:1234 Deuxieme pas :Obtenir le developpement binaire du nombreA=111 qui est entre 0 et 1.
Donc111
= 0:0001=)c111 ;15 =1234= 0001 2.c38 ;12 Premier pas :Determiner la precision du developpement dyadique. La longueur du codage est donnee par l'information qui correspond a l'intervalBA=18 . Donc log28 = 3. 38= 0:123 5 Deuxieme pas :Obtenir le developpement binaire du nombreA=38 qui est entre 0 et 1. 238
=1:23 238
=68 <1 =)1= 0 et68 = 0:23 268
=2:3 268
=128 = 1 +48 = 1 +12
1 =)2= 1 et12
= 0:3 212=3 212
= 1 =)3= 1 =)c38 ;12 =123= 011 Exercice.Determiner tous les intervalles[A;B[tels quec(A;B) = 10101. ( Chercher d'abord l'intervalle le plus naturel determine par10101, puis re echir dans quelle mesure ceci est "deformable" sans eet sur le mot code ). Exercice.Considerons la source qui produit les huit lettresa0;a1;:::;a7selon la distribution de probabilitep= (p0;p1;:::;p7)avecp0=12 ,p1=14 ,p2=p3=116 ,p4=p5=p6=p7=132
Trouver le code de Shannon associe.
Exercice.Notre source sans memoire qui produit les huit lettres A, B, C, D, E, F, G, H selon la distribution de probabilitep= (p(A);p(B);:::;p(H)), avecp(A) =2764 ,p(B) =p(C) =316 p(D) =116 ,p(E) =p(F) =364 ,p(G) =132 ,p(H) =1641. Trouver le code de Shannon associe.
2. Calculer la longueur moyenneldes mots code.
5.3 Coder plusieurs symboles successifs en m^eme temps
Pour le codage Human nous avons deja vu que le codage par blocs densymboles permet de prendre en compte plusieurs symboles en m^eme temps. C'est un codage vectoriel (en dimensionn) qui remplace la source initiale par une "extension d'ordren" ayant comme symboles des vecteurs densymboles successifs de la source initiale. Le theoreme de Shannon pour le codage de source sans pertes propose de realiser un codage vectoriel en grande dimension pour toute source. pour s'approcher de l'entropie. Pour coder une source discrete sans memoire sur un alphabet aNsymboles en dimensionn l'alphabet de l'"extension d'ordren" augmente exponentiellement avecn. Donc, le codage vectoriel en grande dimension est d'un inter^et purement theorique. 6 Pour resoudre ces problems d'autres systemes de codage de source sans pertes ont ete proposes. Ils permettent aussi de prendre en compte les dependances temporelles (d'un sym- bole a l'autre) de la source (avec memoire). Ces systemes de codage permettent de coder une source quelconque sans conna^tre a priori ses statistiques (c'est ce qu'on appelle du codage "universel"). Les plus connus sont les systemes de codage de Lempel-Ziv (1976)et de codage arithmetique (1982). Le codage arithmetique est probablement le plus important dans les applications et les normes actuelles. Il est une extension iterative d'une technique de codage connue depuis les annees 50, appelee codage d'Elias (ou de Shannon-Fano-Elias).5.4 Le codeur d'Elias
Le codeur d'Eliasetait, a l'origine, considere comme une construction purement academique. Sa premiere presentation ( tardive ) date de 1968. C'est entre 1976 et 1979 ( Pasco, Jones, Rubin ) que l'on decouvrit son inter^et pratique de sa variantebinaire!binaire. Le codeur d'Elias code optimalement, c.ad. il approche l'entropie de la source :H(p)ln
< H(p) +1n Soit une source binaire ( sans memoire ), produisant selon la distribution de probabilite p= (p0;p1), avecp0p1. Le codeur d'Elias construit un arbre binaire d'intervalles, obtenu parp0-dichotomie. Soit les intervalles [Ak;Bk[ les intervalles [Ak+1;Bk+1[ sont calcules :D=Ak+p0(BkAk)
A k+1=Ak;Bk+1=D(code avec 0) etAk+1=D;Bk+1=Bm(code avec 1)Lesnpremiers bitsaj1aj2:::ajnd'un
ot source binaire sont interprete commeche- mindans cet arbre. Le chemin pointe sur un intervalle [A;B[. Le motcode d'Elias c(aj1aj2:::ajn) est le mot code de l'intervalle [A;B[, c.a.d. le developpement dyadiqueA jusqu'aul=dlog21BAe"decalage de la virgule " Exemple.Soit une source binaire ( sans memoire ) produisant selon la distribution de probabilitepdonnee parp0=34 ,p1=14 Trouvez le mot code d'Elias de la sequence 001 produite par la source, c.a.d. de l'intervalle 2764;916 Premier pas: Pour le codage, il faut trouver dans l'hierarchie de l'arbre dep0dichotomie le chemin ("poupee russe") d' intervallesembo^tesqui correspond a la sequencesproduite par la source. Calcul deD=34 = 0:11 s