MATH202 TP #3
Compression avec perte
Objectifs
- Comparer les différentes méthodes de codage/compression;
- Discerner quand utiliser la compression avec pertes:
-
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 (?)
Organisation
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
Encodage
Transformer
une message M dans
une message codée M'
Description
Réduction de symboles/transmission
Buts
Compression
Cryptographie
- Taille fixe:
- ASCII.
-
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.
Comparaison compression
C'est pas l'homme qui prend la mer
C'est la mer qui prend l'homme.

Huffman
267 bits
LZ78
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
Huffman
LZ78
5961040 bits
5589354 bits
LZ78/Huffman = 1.07
Comparaison compression
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
Comparaison compression
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
Huffman
LZ78
5961040 bits
5589354 bits
LZ78/Huffman = 1.07
5476976 bits
LZ78/Huffman = 0.98
avec BWT
Comparaison compression
Code Huffman x LZ78
Compression avec perte
- On échange un peu d'information pour gagner beaucoup en compression;
- La compression avec perte n'est adapté qu'a certain types de documents
Peu de perte est admissible
Aucune perte est admissible
Image
Audio
Texte
Executable
Quand c'est acceptable?
Compression avec perte
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
Sprint #1
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:
Mini-Activité
Quiz
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

Quiz:
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?
Quiz:
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
Quiz:
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
Compression avec perte


Exemple: Logements sur Airbnb à Paris
- Data disponible sur insideairbnb.com;
- Plusieurs attributs sont quantifiées
- Prix;
- Pieds carré;
- Avis positifs;
- Taux d'occupation;
- ...
- Parfois, il y a des attributs qui sont redondant, or qui peuvent être estimée a partir d'autres.
Réduction de dimension
Compression avec perte

Exemple: Logements sur Airbnb à Paris
- Normalement, on a besoin de trois quantités pour représenter un valeur 3D;
- Cependant, on peut constater visuellement que l'ensemble peut être bien estimée par un plan;
- Si on assume l'erreur d'estimation, on peut utiliser deux valeurs au lieu de trois pour représenter chaque point de l'ensemble.
Réduction de dimension
Compression avec perte

Réduction de dimension
Exemple: Logements sur Airbnb à Paris
- Dans la langage de l’algèbre linéaire, on avait fait deux choses:
- Changement de base: Au lieu du vecteurs canoniques (1,0,0); (0,1,0); (0,0,1) on utilise les vecteurs u,v,w, où u et v sont vecteurs dans le plan jaune et w c'est son vecteur normale, i.e., w = u x v.
- On abandonne le vecteur w, et on utilise seulement u et v pour représenter l'ensemble de données.
Compression avec perte
Réduction de dimension
Exemple: Images
- Dans les images il y a aussi de redondance et de valeurs qui peuvent être estimée a partir de autres;
- Néanmoins, les images sont exemples de objets multidimensionnelles (chaque pixel c'est une dimension) et trouver la meilleur base c'est pas un problème triviale;
- Mais il y a des bases "standard" qui sont bien adaptés pour la représentation d'images et aussi de son digitales, comme par exemple, cela donnée par la Transformée de Fourier Discrète.
Compression avec perte
Transformée de Fourier Discrète
La base TFD pour une space de 100 dimensions (e.g. image 10x10)

Sprint #2
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]
Mini-Activité
Quiz
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
Quiz:
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

Quiz:
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

Sprint #3
Objectifs: Questions 9, 10, 11 et 12
Mini-Activité
Peer Review (?)
Eigenfaces
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

Références
Math202 - TP3
By Daniel Martins Antunes
Math202 - TP3
Compression avec perte
- 220