Compression avec perte
Objectifs
Réduction de dimensions;
Découvrir la transformée de Fourier discrète.
Le TP doit être fait en binôme.
Codeur: Responsable pour l'implementation.
Navigateur: Responsable pour veiller à la qualité du code (?)
Sprint 1
Sprint 2
Sprint 3
10
60
110
120
170
180
0
40min
10min
On bosse
On discute
Le binôme doit alterner les rôles de codeur et de navigateur à chaque sprint
Transformer
une message M dans
une message codée M'
Description
Réduction de symboles/transmission
Buts
Compression
Cryptographie
Taille variable:
UTF-8;
Taille dynamique
Code Huffman.
Caracteristique clé
non-ambiguïté
Code Préfixe
LZ78
Code par dictionnaire
Le code d'un symbole peu fréquent a la même taille que le code d'un symbole très fréquent.
Le code de symboles plus fréquents ont une taille plus petites que ceux moins fréquents. Le dictionnaire est variable par chaque message
On accorde les symboles le plus souvent utilisés et on crée un dictionnaire (fixe) que assigne un code plus petite aux symboles les plus fréquents.
C'est pas l'homme qui prend la mer
C'est la mer qui prend l'homme.
267 bits
608 bits
Strophe
Chanson
2x Chanson
10x Chanson
17696 bits
32080 bits
113136 bits
11713 bits
23426 bits
117130 bits
Dès que le vent soufflera, Renaud
Code Huffman x LZ78
As for me, I am tormented with an everlasting itch for things remote. I love to sail forbidden seas, and land on barbarous coasts.
Moby-Dick; or, The Whale, Herman Melville
5961040 bits
5589354 bits
LZ78/Huffman = 1.07
Code Huffman x LZ78
ta_tata_tati
a_tata_tatit
_tata_tatita
tata_tatita_
ata_tatita_t
ta_tatita_ta
a_tatita_tat
_tatita_tata
tatita_tata_
atita_tata_t
tita_tata_ta
ita_tata_tat
ta_tata_tati
a_tata_tatit
_tata_tatita
tata_tatita_
ata_tatita_t
ta_tatita_ta
a_tatita_tat
_tatita_tata
tatita_tata_
atita_tata_t
tita_tata_ta
ita_tata_tat
9aatttttia__a
1 2 3 4 5 6 7 8 9 101112
Transformée de Burrows Wheeler
As for me, I am tormented with an everlasting itch for things remote. I love to sail forbidden seas, and land on barbarous coasts.
Moby-Dick; or, The Whale
5961040 bits
5589354 bits
LZ78/Huffman = 1.07
5476976 bits
LZ78/Huffman = 0.98
avec BWT
Code Huffman x LZ78
Peu de perte est admissible
Aucune perte est admissible
Image
Audio
Texte
Executable
Quand c'est acceptable?
Moyenne par bloc
[10,20,30,20,70,50,20,30,90,60]
[40,40,40,40,40,40,40,40,40,40]
somme: 400
taille du bloc: 10
Objectifs: Questions 1, 2, 3 et 4
Traverse de listes:
Le dernière élément:
liste[ début : fin : pas ]
liste[-1]
Initialization de listes:
liste = [0]*5
#[0,0,0,0,0]
Somme
sum( [1,2,3] ) #6
Ajouter des elements
l=[1,2] + [3,4] # [1,2,3,4]
l.extend( [5,6] ) #[1,2,3,4,5,6]
l.append( 7 ) #[1,2,3,4,5,6,7]
s="Taille: {} octets".format(42)
#Taille: 42 octets
Formatation de strings:
Quiz
L'arbre de Huffman d'une message M est montrée dans la figure ci-dessous.
C'est quel le symbole plus fréquent?
A) f
B) a
C) e
D) space
Le resultat d'une compression moyenne par bloc en utilisant un bloc de taille 3 est le suivant
[ 100 100 100 200 200 200 100 100 100 ]
B) [ 200 50 50 300 200 100 300 0 0 ]
C) [ 80 80 140 150 150 300 70 70 160 ]
D) [ 100 100 100 200 200 200 100 100 100 ]
A) Pas possible à dire
C'était quelle l'image original?
Considère les bases B1 et B2 d'un espace bi-dimensionnelle ci-dessous
B1 = { (1,0) ; (0,1) }
B2 = { (-1,2) ; (3,0) }
B) (-2,6)
C) (-2,0)
D) (2,2)
A) (4,4)
Soit v = (2,2) un vecteur dans la base B1. Le point pv que représente ce vecteur dans le plan cartésienne c'est
pv = 2*(1,0) + 2*(0,1) = (2,2)
Soit v un vecteur avec les mêmes coordonnées que v , i.e.,
(2,2), mais dans la base B2. Quelle point représente-t-il?
B1
B1
B1
B2
B1
Considère les bases B1 et B2 d'un espace bi-dimensionnelle ci-dessous
B1 = { (1,0) ; (0,1) }
B2 = { (-1,2) ; (3,0) }
B) (1,1)
C) (-2,1)
D) (1,-2)
A) (2,2)
Soit v = (2,2) un vecteur dans la base B1. Le point pv que représente ce vecteur dans le plan cartésiennes c'est
pv = 2*(1,0) + 2*(0,1) = (2,2)
B1
B1
B1
B2
B1
Quelles sont les coordonnées qui doit avoir v tel qu'il représente le même point que v , i.e., pv = (2,2) ?
B2
Exemple: Logements sur Airbnb à Paris
Réduction de dimension
Exemple: Logements sur Airbnb à Paris
Réduction de dimension
Réduction de dimension
Exemple: Logements sur Airbnb à Paris
Réduction de dimension
Exemple: Images
Transformée de Fourier Discrète
La base TFD pour une space de 100 dimensions (e.g. image 10x10)
Objectifs: Questions 5, 6, 7 et 8
Enumerate
enumerate( ["a","b","c"] )
#[ (0,"a"), (1,"b"), (2,"c") ]
Zip
zip( [0,2,4], [1,3,5] )
#[ (0,1), (2,3), (4,5) ]
Initialisation par expression
l=[ round(x/3) for x in range(0,10) ]
#[0,0,1,1,1,2,2,2,3,3]
Quiz
Considère les points en 4 dimensions ci-dessous:
(1,1,1,1); (2,2,2,2); (3,3,3,3); (4,4,4,4); (5,5,5,5)
B) Deux dimensions
C) Trois dimensions
D) Pas possible de réduire la dimension
A) Une dimension
On peut representer le même ensemble en utilisant
Normalement, combien de valeurs on doit garder pour représenter les 15 points noirs dans la figure ci-dessous?
B) 30
C) 2
D) 45
A) 15
Si on sait que la courbe rouge peut être ecrit comme
F(x) = Ai*sin(bix), 1 <= i <= 6,
les valeurs Ai, bi donnés. Ça veut dire que chaque point pi peut être écrit comme
pi = ( ci,F(ci) ).
Combien de valeurs on doit garder pour représenter les mêmes 15 points?
B) 30
C) 6
D) 90
A) 15
Objectifs: Questions 9, 10, 11 et 12
Peer Review (?)
Application de réduction de dimension a reconnaissance facial
Faces qu'on veut reconnaître
(peut être des milliers)
K vecteurs le plus représentatif de l'ensemble