Page: 1-Ali Walid Gestion de fichiers. Codage et decodage arithmetique Compression et decompression arithmetique
Page: 2-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ Les variables: RANGE LOW HIGH LR (LowRange) HR (High Range)
Page: 3-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6
Page: 4-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6
Page: 5-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6 P (C) = 1/6
Page: 6-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6 P (C) = 1/6 00,5 10,83
Page: 7-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6 P (C) = 1/6 00,5 10,83 Range = [0, moins que 0,5] LR = 0 HR = 0,5
Page: 8-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6 P (C) = 1/6 00,5 10,83 Range = [0,5 moins que 0,83] LR = 0,5 HR = 0,83
Page: 9-Ali Walid Gestion de fichiers Le codage arithmetique La chaine a coder est: ‘ABCBAA’ P (A) = 3/6 P (B) = 2/6 P (C) = 1/6 00,5 10,83 Range = [0,83 moins que 1] LR = 0,83 HR = 1
Page: 10-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW Tant qu’il y a des symboles ‘a lire
Page: 11-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = 1 – 0 = 1 Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 12-Ali Walid Gestion de fichiers Le codage arithmetique. 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6
Page: 13-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A B C B A
Page: 14-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = 1 – 0 = 1 Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 15-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1-0 = 1 B C B A 1
Page: 16-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = 1 – 0 = 1 Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 17-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1-0 = 1 0+ (1*0) B C B A 10
Page: 18-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = 1 – 0 = 1 Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 19-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1-0 = 1 0+ (1*0) 0+(1*0,5) B C B A 100,5
Page: 20-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A
Page: 21-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5
Page: 22-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 23-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5-0 = 0,5 0,5
Page: 24-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 25-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5-0 = 0,50+0,5*0,5 0,25
Page: 26-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 27-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5-0 = 0,50+0,5*0,5 0, ,5*0,83
Page: 28-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415
Page: 29-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5 Lire B 0,250,41666
Page: 30-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 31-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415 0,165 0, ,415
Page: 32-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5 Lire B 0,250,41666 Lire C 0,386950,41666
Page: 33-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 34-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415 0,165 0, ,415 0, , ,
Page: 35-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5 Lire B 0,250,41666 Lire C 0,386950,41666 Lire B 0, ,
Page: 36-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 37-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415 0,165 0, ,415 0, , , , , ,
Page: 38-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5 Lire B 0,250,41666 Lire C 0,386950,41666 Lire B 0, , , , Lire A
Page: 39-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 40-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415 0,165 0, ,415 0, , , , , , , , ,
Page: 41-Ali Walid Gestion de fichiers Le codage arithmetique Lire A 010,50,1666…0,3333…0,6666…0,8333… 0/61/62/63/66/64/65/6 00,5 Lire B 0,250,41666 Lire C 0,386950,41666 Lire B 0, , , , Lire A 0, , Lire A
Page: 42-Ali Walid Gestion de fichiers Le codage arithmetique La compression Initialiser les variables: LOW = 0 HIGH = 1 RANGE = [0..1] Iterer Lire le symbole et determiner son intervalle RANGE = HIGH (precedent) – LOW (precedent) LOW = LOW (precedent) + (RANGE * LR du symbole courant) HIGH = LOW (precedent) + (RANGE * HR du symbole courant) Fin iterer La valeur retournee est LOW
Page: 43-Ali Walid Gestion de fichiers Le codage arithmetique Symbole RANGE LOW HIGH rien A 1 0 0,5 B C B A 0,5 0,25 0,415 0,165 0, ,415 0, , , , , , , , , ,400975
Page: 44-Ali Walid Gestion de fichiers Le codage arithmetique La valeur 0, ou ou la valeur binaire correspondante ‘a ( ) sera stockee dans un fichier dit fichier de compression (ce fichier est le resultat de la compression).
Page: 45-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference Tant qu’on na pas atteind la fin du numero de codage
Page: 46-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 47-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD...0,400975
Page: 48-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 49-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5..0,400975
Page: 50-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 51-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A.0,400975
Page: 52-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 53-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,5-00, ,5
Page: 54-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 55-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, (0, )/0,5 0,80195
Page: 56-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, ,80195
Page: 57-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 58-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83
Page: 59-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 60-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B
Page: 61-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 62-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B0,83-0,5 0,33
Page: 63-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 64-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33
Page: 65-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 66-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915
Page: 67-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 68-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915 0,83..moins 1 C 0,16 0,53125
Page: 69-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 70-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915 0,83..moins 1 C 0,16 0, ,5..moins 0,83 B 0,33 0,
Page: 71-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 72-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915 0,83..moins 1 C 0,16 0, ,5..moins 0,83 B 0,33 0, moins 0,5 A 0,5 0,
Page: 73-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 74-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915 0,83..moins 1 C 0,16 0, ,5..moins 0,83 B 0,33 0, moins 0,5 A 0,5 0, moins 0,5 A 0,5 0,
Page: 75-Ali Walid Gestion de fichiers Le decodage arithmetique. La decompression Initialiser les variables: VALUE = Valeur lue du fichier de decompression Iterer Determiner la valeur VALUE appartient ‘a quel intervalle RANGE Retourner (afficher) le symbole de cet intervalle RD = HR – LR VALUE = (VALUE - LR)/RD Fin iterer Avec: RD : RangeDifference
Page: 76-Ali Walid Gestion de fichiers Le decodage arithmetique VALUE RANGE SYMBOL RD 0..moins 0,5 A 0,50, , ,5..moins 0,83 B 0,33 0,915 0,83..moins 1 C 0,16 0, ,5..moins 0,83 B 0,33 0, moins 0,5 A 0,5 0, moins 0,5 A 0,5 0, moins 0,5 A 0,5
Page: 77-Ali Walid Gestion de fichiers Le decodage arithmetique Probleme: On a depasse la chaine originale (le fichier ‘a compresser), one ne sait pas quand le decompresseur s’arrete. Solution 1: Coder un caractere special indiquant la fin de la caine de caracteres. Solution 2: Coder la taille de la chaine ‘a compresser (le fichier ‘a compresser) au debut du fichier de compression. Les deux solutions ajoutent des extra-bits.
Page: 78-Ali Walid Gestion de fichiers..