Académique Documents
Professionnel Documents
Culture Documents
normes et recommandations
les codeurs
méthodes de compression
2. la norme DICOM
3. la quantification
- vectorielle
5. la compression video
- la norme H264
1
INTRODUCTION A LA COMPRESSION
Des données et des images
I. Définition
La compression consiste à réduire la taille physique de blocs d'informations. Un
compresseur utilise un algorithme qui sert à optimiser les données en utilisant des considérations
propres au type de données à compresser; un décompresseur est donc nécessaire pour reconstruire
les données d’origines grâce à l'algorithme inverse de celui utilisé pour la compression.
1
taux de compression=
quotient de compression
La compression physique agit directement sur les données; il s'agit ainsi de voir les données
redondantes d'un train de bits à un autre.
La compression logique par contre est effectuée par un raisonnement logique en substituant une
information par une autre qui lui est équivalente.
2
2. Compression symétrique et compression asymétrique
Dans le cas de la compression symétrique, la même méthode est utilisée pour compresser et
décompresser l'information, il faut donc la même quantité de travail pour chacune de ces opérations.
C'est ce type de compression qui est généralement utilisée dans les transmissions de données.
La compression asymétrique demande plus de travail pour l'une des deux opérations, on recherche
souvent des algorithmes pour lesquels la compression est plus lente que la décompression. Des
algorithmes plus rapides en compression qu'en décompression peuvent être nécessaires lorsque l'on
archive des données auxquelles on n'accède peu souvent (pour des raisons de sécurité par exemple),
car cela crée des fichiers compacts.
La compression avec pertes (en anglais lossy compression), par opposition à la compression sans
pertes (lossless compression), se permet d'éliminer quelques informations afin d’avoir le meilleur
taux de compression possible, tout en gardant un résultat qui soit le plus proche possible des
données origines (c'est le cas par exemple de certaines compressions d'images ou de sons).
Etant donné que ce type de compression supprime des informations contenues dans les données à
compresser, on parle généralement de méthodes de compression irréversibles. Les fichiers
exécutables par exemple ont notamment besoin de conserver leur intégrité pour fonctionner, en effet
il n'est pas concevable de reconstruire à l'à-peu-près un programme en omettant parfois des bits et
en en ajoutant là oû il n'en faut pas.
Certains algorithmes de compression sont basés sur des dictionnaires spécifiques à un type de
données : ce sont des encodeurs non adaptatifs. Les occurrences de lettres dans un fichier texte par
exemple dépendent de la langue dans laquelle celui-ci est écrit.
Un encodeur adaptatif s'adapte aux données qu'il va devoir compresser, il n’utilise pas un
dictionnaire déjà préparé pour un type de données.
3
4
NORME DICOM
I. Définition
La norme DICOM Digital Imaging and Communication in Medecine est un document qui définit une
méthode de communication pour les différents équipements d'imagerie médicale numérique.
L’objectif est d'obtenir les images du patient englobant toutes les informations associées dans un
format identique.
Cette norme est maintenant utilisée par la plupart des fabricants de matériel d'imagerie médicale.
Elle permet de prédire la possibilité de l'interconnexion des appareils à partir d'un Document de
Conformité émis par chacune des machines. Ainsi la norme permet aux équipements de
communiquer localement, à distance ou au travers un média en assurant la compatibilité des
équipements et en éliminant les formats propriétaires.
II. Format
Le format n'est pas rigide, il contient des informations obligatoires et d'autres optionnelles sous la
forme d'une suite de champs, les pixels n'étant qu'un champ particulier. Plusieurs numéros
d'identification uniques UID ("Unique Identifier") sont générés automatiquement par les machines
DICOM et obligatoirement présents dans chaque image DICOM. Il ne peut pas exister deux UID
identiques pour désigner des informations différentes, ceci quelque soit la machine et sa
localisation, ainsi l'UID d'une série d'images est spécifique à une date, un patient, une étude, un
hôpital et une machine donnée. Cette identification est nécessaire non seulement pour des raisons
médicales et médico-légales, mais aussi pour permettre aux machines la formation et la gestion de
bases de données.
DICOM : Digital Imaging and COmmunication in Medicine
5
Définition des champs :
o étiquette (tag)
o longueur de la valeur
o valeur
o étiquette (tag)
o longueur de la valeur
o valeur
Elle est représentée sous la forme hexadécimale (DEAD, BEEF) où DEAD est le numéro de groupe
et BEEF le numéro d'élément. Pour plus d'informations, voir la partie 5 du standard.
L'organisation de l'information contenue dans les fichiers DICOM est organisée sous une forme
séquentielle.
Ainsi une information élémentaire est formée par 3 champs de données successifs :
00 10 00 20 00 00 00 0A 4A 6F 68 6E 5E 48 65 6E 72 79 ,
6
8 quartets
4 quartets 4 quartets Longueur variable l,
longueur l du
balise groupe balise élément information :
champs suivant
4A 6F 68 6E 5E 48 65 6E 72 79
0010 0020 0000000A
(ici l = 10 )
Ces informations se succèdent à la suite les unes des autres dans un ordre de balises croissant, il est
ainsi possible d'ignorer certaines informations contenues dans des champs d'information et de
passer à la balise suivante , ce qui permet de " sauter " une balise dont on ne connaît pas la
signification.
CODE ASCII :
Char Code Char Code Char Code Char Code Char Code Cha Code
ASCII ASCII ASCII ASCII ASCII r ASCII
20 0 30 @ 40 P 50 ` 60 p 70
! 21 1 31 A 41 Q 51 a 61 q 71
" 22 2 32 B 42 R 52 b 62 r 72
# 23 3 33 C 43 S 53 c 63 s 73
$ 24 4 34 D 44 T 54 d 64 t 74
% 25 5 35 E 45 U 55 e 65 u 75
& 26 6 36 F 46 V 56 f 66 v 76
' 27 7 37 G 47 W 57 g 67 w 77
( 28 8 38 H 48 X 58 h 68 x 78
Y 59 i 69 y 79
7
- 29 9 39 I 49 Z 5A j 6A z 7A
* 2A : 3A J 4A [ 5B k 6B { 7B
+ 2B ; 3B K 4B \ 5C l 6C | 7C
, 2C < 3C L 4C ] 5D m 6D } 7D
- 2D = 3D M 4D ^ 5E n 6E ~ 7E
. 2E > 3E N 4E _ 5F o 6F
/ 2F ? 3F O 4F
8
Organisation du Flux de Données :
Date d'examen
Type d'examen
Fabricant de la machine
L'identification de la machine
Hôpital ou institution
Nom
Identification
Les informations sur le patient :
Date de naissance
Sexe
Bolus
Kilovolts
Les informations sur l'acquisition de
Inclinaison du statif
l'information :
Epaisseur de coupe
Série,
Orientation du patient
Commentaires
9
Largeur
Hauteur
Compression
10
Les groupes sont agencés de la façon suivante :
(0028,0010) BI S Rows
(0028,0011) BI S Columns
(0028,0030) AN M Pixel Size # rangées\colonnes en mm
(0028,0100) BI S Bits Allocated # ex. 12 bits pour la TDM
(0028,0101) BI S Bits Stored # ex. 16 bits
(0028,0102) BI S High Bit # ex. 11
(0028,0102) BI S Pixel Representation # 1 signé, 0 non signé
La façon dont les pixels sont sauvegardés peut énormément changer, bien que heureusement la
plupart des utilisateurs et des fabricants utilisent le schéma le plus simple . Par exemple 1 pixel de
12 bits est sauvegardé dans un mot de 16 bits sans essayer de le présenter sous une forme plus
compacte.
Voici quelques exemples. Notez que lorsque on y ajoute le problème de lecture little/big endian , les
permutations s'effectuent !
---------------------------
Bits Allocated = 16
Bits Stored = 12
High Bit = 15
---------------------------
Bits Allocated = 12
Bits Stored = 12
High Bit = 11
III. Conclusions
La norme DICOM est le standard de communication entre machines en imagerie médicale. Elle
facilite l’échange des images médicales entres différents services et entre différents centres.
13
Quantification scalaire et vectorielle
1. Définition
En traitement du signal, la quantification est le procédé qui permet d'approximer un signal continu (ou
à valeurs dans un ensemble discret de grande taille) par des valeurs d'un ensemble discret.
2. Introduction
L'application la plus courante de la quantification est la conversion analogique-numérique mais elle doit
le développement de sa théorie aux problèmes de quantification pour la compression de signaux
audio ou image.
Le but de la quantification, à partir d'une valeur d'entrée donnée d'un espace E, est de déterminer la
valeur la plus proche dans l'ensemble F d'arrivée. Dans le cas d'une conversion analogique-
numérique, l'ensemble E est continu, on peut prendre et l'ensemble d'arrivée est discret, de
taille finie. Cet ensemble est généralement appelé dictionnaire.
Exemple :
3. Quantification scalaire
On parle de quantification scalaire lorsque le dictionnaire est de dimension 1, c'est-à-dire ses
valeurs sont des scalaires. La quantification scalaire est la forme la plus simple de quantification, le
cas où le dictionnaire est un espace de dimension supérieure à 1 est appelé la quantification vectorielle.
Définition: Un quantifieur scalaire de taille N est une application Q de dans un ensemble discret
fini F de dimension 1 et de taille n, , .
On notera
14
Un quantifieur peut se définir comme un ensemble d'intervalles de l'espace de départ, [tk;tk + 1], où
les ti sont appelés niveaux de décision. À chaque intervalle [tk;tk + 1], on fait correspondre une
seule valeur de l'espace d'arrivée, rk, appelée niveau de reconstruction. La forme typique d'un
quantifieur est donc une fonction en escalier.
C'est le type de quantifieur le plus simple, où les intervalles sont de longueur constante.
Les niveaux de reconstructions sont aussi uniforméments répartis. Il est parfois appelé quantifieur
scalaire symétrique.
C'est un type spécial de quantifieur, où l'intervalle autour de zéro est plus large. La zone
morte ou dead-zone qualifie donc cet intervalle autour de zéro, qui permet à l'ensemble des valeurs
de source considérées comme petites, d'être quantifiées à une seule même valeur (généralement
zéro).
Ce type de quantifieur est donc non-uniforme (ou asymétrique). Toutefois, si l'ensemble des autres
intervalles sont uniformes, on qualifie généralement ce type de quantifieur d'uniforme à zone morte.
15
Ce type de quantifieur est très utilisé en compression d'image, où suite à une transformation de
l'image par ondelette ou DCT, il existe de très nombreuses valeurs autour de zéro, non-significatives,
qui pénaliseraient la suite du processus de codage. Typiquement, les valeurs comprises dans la zone
morte sont quantifiées à zéro, et ne sont donc pas considérées par le codage entropique. Il existe alors
de très nombreux coefficients quantifiés à zéro, ce qui permet d'utiliser des méthodes comme le RLE.
De manière générale, on peut répartir les niveaux de quantification de toutes les façons possibles.
Pour un signal de parole, dont la plupart des valeurs sont autour de zéro, on utilisera un quantifieur
avec beaucoup de niveaux autour de zéro et peu de niveaux ailleurs.
Bruit de quantification
Figure : Graphique du haut : signal analogique en bleu, signal quantifié sur 2 bits en rouge. Graphique du bas :
différence entre ces deux signaux (l'accumulation des erreurs de quantification représente le bruit).
La quantification est une opération destructrice d'information. Elle introduit une erreur (ou un bruit)
entre le signal quantifié et le signal source. Cette erreur est généralement mesurée par la distance
suivante :
Cette erreur de quantification est aussi appelée distorsion. En pratique, on utilise plutôt l'espérance
de la distorsion, en considérant l'ensemble du signal comme une suite de réalisations d'une variable
aléatoire X. On obtient alors la distorsion moyenne par :
Si la distance d est celle définie plus haut, D est alors l'erreur quadratique moyenne
16
Pour mesurer l'erreur de quantification uniforme E nous avons : E est un échelon ; E=2Vmax /
2puissance N (N le nombre de mot binaire) d'ou V(erreur)=E /2*racine3 -> V=Vmax /2puiN*racine
3
Pas de discrétisation
δV = ΔV/(N - 1).
En général, N est grand pour que la quantification soit « fine », on peut donc écrire :
δV ≃ ΔV/N.
En général, le signal numérisé est codé en base deux pour un stockage informatique. La
variation minimale δV correspond alors au bit de poids faible ; δV est de fait fréquemment
désigné par le sigle LSB, pour least significant bit. Si le signal est codé sur n bits, on a
alors
N = 2n
et
δV(LSB) = ΔV/2n
Quantifieur scalaire optimal
Le quantifieur scalaire uniforme est optimal si l'amplitude de la source suit une distribution uniforme.
Les signaux audio ou image ne peuvent cependant être considérés comme des sources uniformes, ce
qui a conduit à la recherche d'algorithmes permettant de générer un quantifieur optimal, pour tous
types de sources (algorithme quantifieur de Lloyd-Max).
4. Quantification vectorielle
1) définition
La quantification vectorielle (QV) est une technique de compression de données. Elle consiste à
coder des échantillons qui sont représentés par une valeur.
17
La quantification vectorielle code de manière efficace des échantillons représentés par plusieurs
valeurs (ou vecteurs).
Imaginons qu’on ait un ensemble d’échantillons, chacun représenté par un couple de valeur (x1,
x2).
On peut faire une quantification uniforme sur chaque dimension (figure ci-dessous), mais ça risque
de ne pas être optimisé…
Ce que propose la quantification vectorielle (QV), c’est une quantification optimisée : l’espace est
divisé en classes adaptées à l'ensemble des échantillons et on calcule un représentant pour chaque
classe (élément rouge sur la figure). L'ensemble des représentants est appelé dictionnaire. Pour
quantifier un échantillon (x1,x2), on lui attribue les valeurs du représentant le plus proche. On voit
bien là que la quantification est proche de la compression.
18
La quantification n’est pas qu’une simple généralisation du cas scalaire. Elle permet de prendre en
compte la corrélation entre les échantillons. C'est une technique très utilisée en reconnaissance de la
parole, compression de la parole, codage d’image.
2) principe
La QV consiste donc à coder non plus un échantillon, mais un groupe d’échantillons, ou vecteur.
Notons K sa dimension (K=2 dans l'exemple précédent). A partir du dictionnaire, composé des
représentants notés Xchapo, on choisira le meilleur représentant de chaque vecteur à coder au sens
d’une certaine distance (moindres carrés par exemple, cf. définition ci-dessous). Le vecteur X est
n=0
1) Trouver une partition de X à partir du dictionnaire Cn. Chaque partition est une cellule de Voronoï
: à chaque vecteur de X, on associe le meilleur représentant dans le dictionnaire.
19
2) Calculer la distortion moyenne pour tous les éléments de X, notée dn
3) Si la distortion est telle que (dn-1 – dn)/ dn< ε, alors Cn est le dictionnaire souhaité.
4) Recalculer les centres de chaque cellule de Voronoï pour obtenir Cn+1
5) n = n+1, retour en 1.
On prend pour d la MSE (mean square error) ou moyenne des écarts au carré.
2. Division récursive des données : il s’agit de prendre le barycentre des vecteurs, de diviser
l’ensemble, et ainsi itérativement jusqu’à ce que le nombre de vecteurs désiré (M) soit
atteint (voir détails ci-dessous).
3. Assemblage des paires des plus proches voisins (Pairwise Nearest Neighbor (PNN)
Clustering) : il s’agit de fusionner les vecteurs d’apprentissage les plus proches jusqu’à ce
que le nombre de vecteurs désiré (M) soit atteint (voir détails ci-dessous).
3. Trouver une partition des vecteurs selon y1 et y2. On a donc 2 ensembles U1 et U2.
1. Calcul de la distorsion entre chaque paire de vecteurs, pour tous les k vecteurs.
2. Les 2 vecteurs ayant la plus petite distorsion sont remplacés par un seul vecteur qui est leur
centroïde.
20
Diagramme de Voronoï
Un diagramme de Voronoï.
Définition [modifier]
On se place dans un espace euclidien E. Soit S un ensemble fini de n points de E; les éléments
de S sont appelés centres, sites ou encore germes.
On note H(a,b) le demi espace délimité par cet hyperplan contenant a, il contient alors tous les
points plus proches de a que de b. La région de Voronoï associée à a est alors l’intersection
des H(a,b)où b parcourt S\{a}.
21
Les régions de Voronoï sont des polytopes convexes en tant qu’intersection de demi espaces.
L’ensemble de tels polygones partitionne E, et est la partition de Voronoï correspondant à
l’ensemble S.
En dimension 2 il est facile de tracer ces partitions, on les appelle dans ce cas parfois diagrammes
de Voronoi. On se base sur le fait que la frontière entre les cellules de Voronoi de deux germes
distincts se situe forcément sur la médiatrice qui sépare ces deux germes. En effet, les points de
cette médiatrice sont équidistants des deux germes donc on ne peut pas affirmer qu'il se situent dans
l'une ou l'autre cellule de Voronoi. Pour un ensemble de germes, le diagramme de Voronoi se
construit donc en déterminant les médiatrices de chaque couple de germes. Un point d'une
médiatrice appartient alors à une frontière de Voronoi s'il est équidistant d'au moins deux germes et
qu'il n'existe pas de distance plus faible entre ce point et un autre germe de l'ensemble.
Histoire [modifier]
L’usage informel des diagrammes de Voronoï remonte à Descartes en 1644. Dirichlet a utilisé
des diagrammes de Voronoï en dimension 2 ou 3 dans son étude des formes
quadratiques en 1850.
Le médecin britannique John Snow a utilisé un diagramme de Voronoï en 1854 pour montrer
que la majorité des personnes mortes dans l’épidémie de choléra de Soho vivait plus près de la
pompe infectée de Broad Street que de n’importe quelle autre pompe.
Les diagrammes de Voronoï portent le nom du mathématicien russe Georgy Fedoseevich Voronoï
(ou Voronoy) qui a défini et étudié le cas général en dimension n en 1908. Les diagrammes de
Voronoi qui sont utilisés en géophysique et en météorologie pour analyser des données de
distributions spatiales (comme les mesures de chutes de pluie) sont appelés polygones de
Thiessen du nom du météorologiste américain Alfred H. Thiessen.
22
Exemple [modifier]
L'exemple suivant reprend les mêmes points que l'exemple de la triangulation de Delaunay :
23
LECTURE
Triangulation De Delaunay
IV.1 INTRODUCTION
Un nouveau type de partitionnement, qui s’adapte au contenu de l’image et qui est calculé à partir d’un
ensemble de points positionnés n’importe où sur le support de l’image, c’est le partitionnement de Delaunay.
On désigne par P un ensemble composé de n points Pi de l’espace IR2 appelés aussi sites ou
germes :
IV.2.2 Arête
On appelle polygone de Voronoï associé au site Pi la région Vor(Pi) (chaque région étant l'ensemble de points
(x,y) les plus proches à un point de P) telle que chaque point de P a pour plus proche site Pi.
On décrit le diagramme de Voronoï comme l’union des régions de Voronoï de tous les points.
24
Figure IV. 2 : Diagramme de Voronoï de l'ensemble P formé de N points.
Chaque sommet du diagramme de Voronoï est le point de rencontre de trois arêtes de Voronoï
Pour chaque sommet S du diagramme de Voronoï, le cercle passant par les trois points voisins à ce
sommet, ne contient aucun autre point de P.
Figure IV. 4 : Le cercle ne contient aucun autre point de P, c’est un diagramme de Voronoï.
Une arête de Voronoï sépare tout point de son plus proche voisin.
25
Figure IV. 6 : Une arête sépare un point de son plus proche voisin.
On peut à partir du diagramme de Voronoï, en construire le dual (figure IV.7), c’est à dire construire un
nouveau diagramme où cette fois, on relie par un segment toutes les paires de sites dont les régions de
Voronoï correspondantes sont adjacentes, c’est à dire séparées par une arête de Voronoï.
Le dual du diagramme de Voronoï est une triangulation sur l’ensemble des points.
Ce théorème est démontré en vérifiant que ce dual définit une partition du domaine intérieur à l’enveloppe
convexe de l’ensemble des points. En ayant remarqué de manière préliminaire qu’à chaque sommet de
Voronoï correspondait un triangle du dual, on vérifie pour cela que :
Pour une paire de sommets de Voronoï donnée, si les cercles associés à ces
deux sommets ont une intersection sachant qu’ils ne peuvent être l’un à
l’intérieur de l’autre, alors les deux points d’intersections qu’ils définissent
forment un segment séparant les deux triangles correspondants.
Chaque point intérieur à l’enveloppe convexe est aussi contenu dans au moins
un triangle.
26
Figure IV. 8 : La triangulation de Delaunay, duale du diagramme de Voronoï.
On peut par la dualité et non colinéarité de tous les points et non cocyclicité de quatre points déduire des
résultats portant sur le diagramme de Voronoï les propriétés suivantes:
Les cercles passant par les trois sommets de chaque triangle ne contiennent
aucun autre site en leur intérieur.
Cette dernière propriété est essentielle, et elle va être utilisée pour caractériser la triangulation de Delaunay
sans avoir à recourir à la dualité avec le diagramme de Voronoï. Elle va aussi être utilisée comme critère de
choix des triangles à construire, lors de l’exécution d’une triangulation.
Certaines applications peuvent nécessiter que des arêtes soient imposées dans la triangulation, sans que
celles-ci soient nécessairement en accord avec les arêtes de la triangulation de Delaunay. On va alors générer
une triangulation qui, tout en respectant ces
arêtes, aura par ailleurs les propriétés d’une triangulation de Delaunay normale. On parle alors
de Triangulation de Delaunay Contrainte.
On restreint le critère de validité d’un triangle de Delaunay aux points visibles de tous les sommets du
triangle vis-à-vis des arêtes de contrainte (Un point est dit visibled’un autre vis-à-vis d’un objet si on peut les
relier entre eux par un segment qui ne coupe pas l’objet). Dans le critère du cercle, cela revient à ne pas
prendre en compte l’appartenance de sommets de graphe à la partie du cercle se situant derrière cette arête
par rapport au triangle.
Une triangulation de Delaunay contrainte est une triangulation complète pour laquelle chaque contrainte est
une arête de la triangulation et que pour chaque autre arête, il existe un cercle tel que :
CONCLUSION
Nous avons décrit dans ce chapitre les notions du diagramme de Voronoï ainsi que le graphe dual de
Delaunay, chacun retournant une partition du support de l'image. L'intérêt de ces partitionnements est qu'ils
sont souples puisqu'ils sont calculés sur un ensemble de points pouvant être positionnés à peu prés n'importe
où sur le support de l'image.
Nous avons introduit les principales définitions et propriétés de ces deux modèles de partitionnement du
plan, nécessaires à la compréhension du chapitre, ainsi que différents algorithmes du partitionnement
triangulaire.
28
METHODES DE COMPRESSION
1. La concaténation de points
La concaténation de point est une méthode permettant de stocker les points d'une manière optimale,
par exemple pour une image monochrome il n'y a, par définition, que deux couleurs, un point de
l'image peut donc être codé sur un seul bit pour gagner de l'espace mémoire.
2. La compression RLE
La méthode de compression RLE (Run Length Encoding, parfois notée RLC pour Run Length
Coding) est utilisée par de nombreux formats d'images (BMP, PCX, TIFF). Elle est basée sur la
répétition d'éléments consécutifs.
Le principe de base consiste à coder un premier élément donnant le nombre de répétitions d'une
valeur puis le compléter par la valeur à répéter. Ainsi selon ce principe la chaîne
"AAAAAHHHHHHHHHHHHHH" compressée donne "5A14H". Le gain de compression est ainsi
de (19-5)/19 soit environ 73,7%. En contrepartie pour la chaîne "REELLEMENT", dans lequel la
redondance des caractères est faible, le résultat de la compression donne "1R2E2L1E1M1E1N1T";
la compression s'avère ici très coûteuse, avec un gain négatif valant (10-16)/10 soit -60%!
En réalité la compression RLE est régie par des règles particulières permettant de compresser
lorsque cela est nécessaire et de laisser la chaîne telle quelle lorsque la compression induit un
gaspillage. Ces règles sont les suivantes :
Lorsque trois éléments ou plus se répètent consécutivement alors la méthode de compression RLE
est utilisée
Sinon un caractère de contrôle (00) est inséré, suivi du nombre d'éléments de la chaîne non
compressée puis une autre fois le caractère de contrôle
Si le nombre d'éléments de la chaîne est impair, le caractère de contrôle (00) est ajouté à la fin
Enfin des caractères de contrôles spécifiques ont été définis afin de coder :
o une fin de ligne (00 01)
o la fin de l'image (00 00)
o un déplacement du pointeur dans l'image de XX colonnes et de YY lignes dans le sens de la
lecture (00 02 XX YY).
Ainsi la compression RLE n'a du sens que pour les données possédant de nombreux éléments
consécutifs redondants, notamment pour les images possédant de larges parties uniformes. Cette
méthode a toutefois l'avantage d'être peu difficile à mettre en oeuvre. Il existe des variantes dans
lesquelles l'image est encodée par pavés de points, selon des lignes, ou bien même en zigzag.
29
3. Le codage de Huffman
David Huffman a proposé en 1952 une méthode statistique qui permet d'attribuer un mot de code
binaire aux différents symboles à compresser (pixels ou caractères par exemple). La longueur de
chaque mot de code n'est pas identique pour tous les symboles: les symboles les plus fréquents (qui
apparaissent le plus souvent) sont codés avec de petits mots de code, tandis que les symboles les
plus rares reçoivent de plus longs codes binaires. On parle de codage à longueur variable (en
anglais VLC pour variable code length) préfixé pour désigner ce type de codage car aucun code
n'est le préfixe d'un autre. Ainsi la suite finale de mots codés à longueurs variables sera en moyenne
plus petite qu'avec un codage de taille constante.
Le codeur de Huffman crée un arbre ordonné à partir de tous les symboles et de leur fréquence
d'apparition. Les branches sont construites récursivement en partant des symboles les moins
fréquents. La construction de l'arbre se fait en ordonnant dans un premier temps les symboles par
fréquence d'apparition ; successivement les deux symboles de plus faible fréquence d'apparition
sont retirés de la liste et rattachés à un noeud dont le poids vaut la somme des fréquences des deux
symboles. Le symbole de plus faible poids est affecté à la branche 1, l'autre à la branche 0 et ainsi
de suite en considérant chaque noeud formé comme un nouveau symbole, jusqu'à obtenir un seul
noeud parent appelé racine.
Le code de chaque symbole correspond à la suite des codes le long du chemin allant de ce caractère
à la racine. Ainsi, plus le symbole est "profond" dans l'arbre, plus le mot de code sera long.
157 255 157 157 007 001 007 255 255 089 089 157 089 157 089
Les codes correspondants à chaque caractère sont tels que les codes des caractères les plus fréquents
sont courts et ceux correspondant aux symboles les moins fréquents sont longs :
Nb_répètio
5 4 3 2 1
n
30
valeur 157 089 255 007 001
Les compressions basées sur ce type de codage donnent de bons taux de compressions, en
particulier pour les images monochromes (les fax par exemple). Il est notamment utilisé dans les
recommandations T4 et T5 de l'ITU-T
4. La compression LZW
Abraham Lempel et Jakob Ziv sont les créateurs du compresseur LZ77, inventé en 1977 (d'où son
nom). Ce compresseur était alors utilisé pour l'archivage (les formats ZIP, ARJ et LHA l'utilisent).
En 1978 ils créent le compresseur LZ78 spécialisé dans la compression d'images (ou tout type de
fichier de type binaire).
En 1984, Terry Welch de la société Unisys le modifia pour l'utiliser dans des contrôleurs de disques
durs, son initiale vint donc se rajouter à l'abréviation LZ pour donner LZW.
LZW est un algorithme très rapide aussi bien en compression qu'en décompression, basé sur la
multiplicité des occurrences de séquences de caractères dans la chaîne à encoder. Son principe
consiste à substituer des motifs par un code d'affectation (indice) en construisant au fur et à mesure
un dictionnaire. De plus, il travaille sur des bits et non sur des octets, il ne dépend donc pas de la
manière de laquelle le processeur code les informations. C'est un des algorithmes les plus
populaires, il est notamment utilisé dans les formats TIFF et GIF. La méthode de compression LZW
ayant été brevetée par la société Unisys, c'est l'algorithme LZ77, libre de droit, qui est utilisé dans
les images PNG.
Le dictionnaire est initialisé avec les 256 valeurs de la table ASCII. Le fichier à compresser est
découpé en chaînes d'octets (ainsi pour des images monochromes - codées sur 1 bit - cette
compression est peu efficace), chacune de ces chaînes est comparée au dictionnaire et est ajoutée si
jamais elle n'y est pas présente.
31
L'algorithme parcourt le flot d'informations en le codant; si jamais une chaîne est plus petite que le
plus grand mot du dictionnaire alors elle est transmise.
Lors de la décompression, l'algorithme reconstruit le dictionnaire dans le sens inverse, ce dernier n'a
donc pas besoin d'être stocké.
5. La compression JPEG
L'acronyme JPEG (Joint Photographic Expert Group prononcez jipègue ou en anglais djaypègue)
provient de la réunion en 1982 d'un groupe d'experts de la photographie, dont le principal souci était
de travailler sur les façons de transmettre des informations (images fixes ou animées). En 1986,
l'ITU-T mit au point des méthodes de compression destinées à l'envoi de fax. Ces deux groupes se
rassemblèrent pour créer un comité conjoint d'experts de la photographie (JPEG).
Contrairement à la compression LZW, la compression JPEG est une compression avec pertes, ce
qui lui permet, en dépit d'une perte de qualité, un des meilleurs taux de compression (20:1 à 25:1
sans perte notable de qualité).
Cette méthode de compression est beaucoup plus efficace sur les images photographiques
(comportant de nombreux pixels de couleurs différentes) et non sur des images géométriques (à la
différence de la compression LZW) car sur ces dernières les différences de nuances dûes à la
compression sont très visibles.
Le format de fichier embarquant un flux codé en JPEG est en réalité appelés JFIF (JPEG File
Interchange Format, soit en français Format d'échange de fichiers JPEG), mais par déformation le
terme de "fichier JPEG" est couramment utilisé.
Il est à noter qu'il existe une forme de codage JPEG sans perte (appelé lossless). Bien que peu
utilisé par la communauté informatique en général, il sert surtout pour la transmission d'images
médicales pour éviter de confondre des artefacts (purement liés à l'image et à sa numérisation) avec
de réels signes pathologiques. La compression est alors beaucoup moins efficace (facteur 2
seulement).
La variante la plus courante de la transformée en cosinus discret est la DCT type-II, souvent
simplement appelée « la DCT ». Son inverse, qui correspond au type-III est souvent simplement
appelée « IDCT ».
Une DCT 2D comparée à une DFT. Les zones claires représentent les coefficients non-nuls
33
Applications
Les formats de compression de son avec perte AAC, Vorbis et MP3 utilisent une version
modifiée de cette technique, la transformée en cosinus discrète modifiée, TCDM (MDCT en
anglais).
La DCT est aussi employée pour la résolution de systèmes d'équations différentielles par des
méthodes spectrales.
Définition
La DCT est une fonction linéaire inversible RN → RN ou de manière équivalente une matrice
carrée N × N inversible. Il existe plusieurs légères variantes de la DCT. Voici les quatre types les
plus connus.
Le développement des algorithmes de calcul rapide des transformées DCT se basent sur la
possibilité de décomposer la matrice de définition sous forme d'un produit de matrices dont le calcul
est plus simple, et permet de réduire le nombre de multiplications scalaires, en profitant des
identités remarquables de périodicité et symétries des fonctions sinusoïdales. Ainsi, on peut
décomposer toute transformée DCT de RN en transformées plus simples en
décomposant Nen produit de facteurs premiers, et en composant des sous-transformées
dans Rn où n est l'un de ces facteurs. En particulier, de nombreuses optimisations ont été
développées quand N est une puissance de 2.
34
uniquement par leur signe) et de matrices à coefficients unitaires ou nuls (-1, 0 ou 1), ces dernières
ne nécessitant pas de multiplication.
DCT-I
On peut noter que la DCT-I n'est pas définie pour , contrairement aux autres types qui sont définis
pour tout N positif.
DCT-II
Cette variante DCT est la plus courante et la plus utilisée. Elle est généralement simplement appelée « la
DCT ». De la même manière que pour la DCT-I, on peut rendre cette transformation orthogonale en
multipliant X0 par 1/√2. Cette forme normalisée est très utilisée en pratique mais casse la correspondance
avec la DFT.
Exemple pour N = 8
Un développement optimisé de cette transformée pour le cas N=8 (utilisé dans JPEG et MPEG) est obtenu en
réécrivant la transformée sous forme matricielle et en factorisant la décomposition, pour réduire le nombre
de multiplications scalaires nécessaires. Par exemple, la décomposition suivante est utilisée pour la
factorisation par l'algorithme de Chen1 , ici orthogonalisée (voir remarque ci-dessus) :
35
La formule optimisée pour une DCT unidimensionnelle est souvent utilisée telle quelle pour son utilisation
dans l'espace bidimensionnel (par transposition et composition) ; cette formule permet de réduire de façon
spectaculaire le calcul de 1024 multiplications (formule de base) à 256 multiplications seulement dans le
traitement d'un bloc image 8×8 (deux passes de 32 multiplications pour chaque ligne de 8 valeurs) ;
cependant, des optimisations sont encore possibles en optimisant la composition elle-même des deux passes
(horizontale et verticale) pour réduire encore de 256 à 91 multiplications seulement (voire moins selon des
recherches plus récentes).
On notera aussi que la première matrice ci-dessus permet aussi une réécriture de nombreuses multiplications
communes (et donc en fait la formule ci-dessus nécessite beaucoup moins que les 32 multiplications, en fait
16 si on regroupe les sous-expressions communes). On pourrait encore décomposer facilement la première
matrice car elle est elle-même une transformée DCT dans R4, décomposable en deux sous-matrices de R2.
De nombreuses études ont montré comment cette transformée peut être optimisée en fonction des
contraintes, notamment quand la transformée est utilisée pour la compression, car la transformée permet
de concentrer l'essentiel de l'énergie dans les coefficients obtenus xi d'indice faible, les autres concentrant
peu d'énergie ont une contribution faible sur le signal spatial initial et sont réduits à zéro lors des étapes
de quantification. Ainsi, la précision nécessaire pour représenter les derniers coefficients est plus faible
voire nulle, et les coefficients constants Ci utilisés pour le calcul des multiplications scalaires peuvent faire
l'objet d'optimisation spécifique, en fixant leur précision, et en utilisant des techniques de multiplication par
un nombre réduit d'additions-décalages sans avoir besoin d'utiliser une multiplication générique.
Néanmoins, cet algorithme de calcul (présenté tel quel, il calcule la DCT unidimensionnelle à 8 points avec
16 multiplications) est à la base de toutes les optimisations suivantes par factorisation des sous-matrices.
L'algorithme de Loeffler2 est actuellement le plus efficace ayant été publié (avec 11 multiplications pour la
même DCT à 8 points au lieu de 16 avec l'algorithme de Chen, toutefois certains coefficients subissent deux
multiplications et cela pourrait rendre l'algorithme moins stable). Il a même été demontré que le nombre
minimum théorique de multiplications nécessaires pour la transformation DCT à 8 points ne peut être
inférieur à 11, ce qui fait que les algorithmes à 11 multiplications scalaires sont optimums en termes de
performance brute (ils se différencient seulement en termes de stabilité suivant l'ordre dans lequel les
multiplications sont réalisées, et la précision dès lors nécessaire pour les produits intermédiaires).
36
Cependant l'algorithme de Loeffler regroupe 8 des 11 multiplications scalaires sur les sorties, ce qui permet
de regrouper ces multiplications avec l'étape suivante de quantification (ce qui en fait tout l'intérêt) : pour
une transformée 2D 8×8, il faut 8×11 multiplications pour la transformée des lignes, et seulement 8×3
multiplications pour les colonnes, soit un total de 112 multiplications (au lieu de 256 avec l'algorithme de
Chen) si les 64 dernières multiplications scalaires sont effectuées avec la quantification. Plus de détails sont
disponibles dans les normes de compression JPEG et MPEG.
DCT-III
La DCT-III est la transformée inverse de la DCT-II. Elle est plus connue sous le nom de « DCT Inverse » et
son acronyme (anglais) "IDCT".
De la même manière que pour la DCT-I, on peut rendre cette transformation orthogonale en
multipliant x0 par √2. Cette forme normalisée est très utilisée en pratique mais casse la correspondance avec
la DFT.
Exemple pour N = 8
En reprenant l'exemple ci-dessus, on obtient une décomposition inverse (ici orthogonalisée) également
utilisée dans l'algorithme de Chen :
DCT-IV
37
La DCT-IV est une matrice orthogonale.
Grande rivale de la DCT, la technique de compression à base d’ondelettes offre une plus grande finesse au
niveau de l’analyse du signal et permet de mieux s’adapter aux propriétés locales de l’image. Il s’agit d’une
voie de recherche assez prometteuse. Les codeurs JPEG 2000 et SPIHT utilisent tous deux une
transformée en ondelettes dans leur schéma de compression. En revanche, seule JPEG 2000 est une norme.
La compression en ondelettes est en elle-même sans pertes. C'est l'introduction d'une quantification ou d'un
seuillage qui entraine la perte irréversible d'informations.
La transformation par ondelettes est une technique inventée par Jean Morlet, un ingénieur français, pour la
prospection pétrolière. Cette technique consiste à décomposer une image en une myriade de sous-bandes,
c’est-à-dire des images de résolution inférieure.
Les coefficients d'ondelettes dans les Wj mettent en évidence des informations sur les contours, les textures,
leur localisation et leur orientation. Le choix de l’ondelette mère est très important et fait toujours l’objet
d’expérimentations pour adapter l’analyse du signal image au système de perception visuelle de l’homme.
2. Quantification : les valeurs des images de détails inférieures à un certain niveau sont
éliminées, en fonction de l’efficacité recherchée. C’est cette étape qui introduit des pertes.
38
Figure 1 : schéma de compression
39
In mathematics, a wavelet series is a representation of a square-integrable (real- or complex-
valued) function by a certain orthonormal seriesgenerated by a wavelet. This article provides a
formal, mathematical definition of an orthonormal wavelet and of the integral wavelet transform.
Formal definition
for integers . This family is an orthonormal system if it is orthonormal under the inner
product
Wavelet transform
40
Here, a = 2 − j is called the binary dilation or dyadic dilation, and b = k2 − j is the binary or dyadic
position.
Wavelet compression
Using a wavelet transform, the wavelet compression methods are adequate for
representing transients, such as percussion sounds in audio, or high-frequency components in two-
dimensional images, for example an image of stars on a night sky. This means that the transient elements of a
data signal can be represented by a smaller amount of information than would be the case if some other
transform, such as the more widespread discrete cosine transform, had been used.
Wavelet compression is not good for all kinds of data: transient signal characteristics mean good wavelet
compression, while smooth, periodic signals are better compressed by other methods, particularly traditional
harmonic compression (frequency domain, as by Fourier transforms and related). Data statistically
indistinguishable from random noise is not compressible by any means.
See Diary Of An x264 Developer: The problems with wavelets (2010) for discussion of
practical issues of using wavelets for video compression.
Method
First a wavelet transform is applied. This produces as many coefficients as there are pixels in the image
(i.e.: there is no compression yet since it is only a transform). These coefficients can then be compressed
more easily because the information is statistically concentrated in just a few coefficients. This principle is
called transform coding. After that, the coefficients are quantized and the quantized values
are entropy encoded and/or run length encoded.
A few 1D and 2D applications of wavelet compression use a technique called "wavelet footprints". [2][3]
La Compression par ondelettes est une technique de compression de données, bien adaptée à
la compression d'images.
41
Le fait que l’algorithme s’adapte mieux aux propriétés locales de l’image.
On peut atteindre des taux de compression d’environ 50 contre 15 pour JPEG tout en ayant
une qualité d’image raisonnable.
Applications industrielles
Imagerie médicale.
Le cinéma numérique a adopté la norme JPEG 2000, qui utilise une transformée en
ondelettes.
7. Compression fractale
Un exemple de fractales.
Ce terme était au départ un adjectif : les objets fractals (selon un pluriel formé sur l'exemple de
"chantiers navals"). Les fractales sont définies de manière paradoxale, en référence aux structures
gigognes dont ils constituent des cas particuliers : « Les objets fractals peuvent être envisagés
comme des structures gigognes en tout point –et pas seulement en un certain nombre de points, les
attracteurs de la structure gigogne classique. Cette conception hologigogne (gigogne en tout point)
des fractales implique cette définition tautologique : un objet fractal est un objet dont chaque
élément est aussi un objet fractal »2. Malgré les apparences, ce type de définitions de
42
nature récursive n'est pas seulement théorique mais peut concerner aussi des concepts usuels : un
ancêtre est un parent ou un ancêtre d'un parent, un multiple est un composé d'un nombre ou d'un
multiple de ce nombre, un escalier commence ou prolonge un escalier, une dynastie inaugure ou
prolonge une dynastie, etc.
Caractéristiques
Ź i +1=Ź 2i + Ć
L'équation de Mandelbrot:
il est trop irrégulier pour être décrit efficacement en termes géométriques traditionnels ;
Les figures fractales n'ont pas à satisfaire toutes les propriétés mentionnées ci-dessus pour servir de
modèles. Il leur suffit de réaliser des approximations convenables de ce qui intéresse dans un
domaine de validité donné (le livre fondateur de Mandelbrot Les Objets fractals en donne une
grande variété d'exemples). La taille des alvéoles du poumon, par exemple, taille à partir de laquelle
celui-ci cesse de se subdiviser de façon fractale, est liée à la taille du libre parcours moyen de la
molécule d'oxygène à température du corps.
La dimension utilisée est celle de Hausdorff, et on observe qu'elle correspond à une caractéristique
nouvelle des surfaces irrégulières. On connait les plages de validité des dimensions de Hausdorff
observées sur Terre pour les montagnes, les nuages, etc.
43
Des exemples de figures fractales sont fournis par les ensembles de Julia et de Mandelbrot, la fractale
de Lyapunov, l'ensemble de Cantor, le tapis de Sierpinski, le triangle de Sierpinski, la courbe de Peano ou
le flocon de Koch. Les figures fractales peuvent être des fractales déterministes ou stochastiques. Elles
apparaissent souvent dans l'étude des systèmes chaotiques.
1. Les systèmes de fonctions itérées. Ceux-ci ont une règle de remplacement géométrique fixe
(l'ensemble de Cantor, le tapis de Sierpinski, le triangle de Sierpinski, la courbe de Peano,
le flocon de Koch) ;
2. Les fractales définies par une relation de récurrence en chaque point dans un espace (tel que
le plan complexe). Des exemples de ce type sont les ensembles de Mandelbrot et la fractale
de Lyapunov ;
3. Les fractales aléatoires, générées par des processus stochastiques et non déterministes, par
exemple les paysages fractals.
De toutes ces figures fractales, seules celles construites par des systèmes de fonctions itérés
affichent habituellement la propriété d'autosimilitude, signifiant que leur complexité est invariante
par changement d'échelle.
triangle de Sierpinski
tapis
de Sierpinski
Les fractales aléatoires sont les plus utilisées dans la pratique, et peuvent servir à décrire de
nombreux objets extrêmement irréguliers du monde réel. Les exemples incluent des nuages, les
montagnes, les turbulences de liquide, les lignes des côtes et les arbres. Les techniques fractales ont
aussi été utilisées dans la compression d'image fractale, de même que dans beaucoup de disciplines
scientifiques.
44
Dimension fractale
Ensemble de Julia
La dimension d'une ligne droite, d'un cercle et d'une courbe régulière est de 1. Une fois fixé une
origine et un sens, chaque point de la courbe peut être déterminé par un nombre, qui définit la
distance entre l'origine et le point. Le nombre est pris négativement s'il faut se déplacer dans le sens
opposé à celui choisi au départ.
La dimension d'une figure simple dans le plan est de 2. Une fois un repère défini, chaque point de la
figure peut être déterminé par deux nombres. La dimension d'un corps simple dans l'espace est de 3.
Une figure telle qu'une fractale n'est pas simple. Sa dimension n'est plus aussi facile à définir et n'est
plus forcément entière. La dimension fractale, plus complexe, s'exprime à l'aide de la dimension de
Hausdorff.
Quand la fractale est formée de répliques d'elle-même en plus petit, sa dimension fractale peut se
calculer comme suit :
où la fractale de départ est formée de n exemplaires dont la taille a été réduite d'un
facteur h (pour homothétie).
Quelques exemples :
45
Le triangle de Sierpinski est formé de n = 3 exemplaires de lui-même réduit d'un facteur h =
2 . Sa dimension fractale vaut :
Une liste beaucoup plus longue se trouve sous : Liste de fractales par dimension de Hausdorff.
Des formes fractales approximatives sont facilement observables dans la nature. Ces objets ont une
structure autosimilaire sur une échelle étendue, mais finie : les nuages, les flocons de neige,
les montagnes, les réseaux de rivières, le chou-fleur ou le brocoli, et les vaisseaux sanguins.
Les arbres et les fougères sont de nature fractale et peuvent êtres modélisés par ordinateur à l'aide
d'algorithme récursif comme les L-Systems. La nature récursive est évidente dans ces exemples ; la
branche d'un arbre ou la fronde d'une fougère sont des répliques miniatures de l'ensemble : pas
identiques, mais de nature similaire.
46
La surface d'une montagne peut être modélisée sur ordinateur en utilisant une fractale : prenons un
triangle dans un espace tridimensionnel dont nous connectons les milieux de chaque côté par des
segments, il en résulte quatre triangles. Les points centraux sont ensuite déplacés aléatoirement vers
le haut ou le bas, dans un rayon défini. La procédure est répétée, diminuant le rayon de moitié à
chaque itération. La nature récursive de l'algorithme garantit que le tout est statistiquement similaire
à chaque détail.
Enfin, certains astrophysiciens ont remarqué des similitudes dans la répartition de la matière dans
l'Univers à six échelles différentes. Les effondrements successifs de nuages interstellaires, dus à la
gravité, seraient à l'origine de cette structure (partiellement) fractale. Ce point de vue a donné
naissance au modèle de l'univers fractal, décrivant un univers basé sur les fractales.
Domaines d'application
Les domaines d'application des fractales sont très nombreux, on peut citer en particulier3
en biologie, répartition des structures des plantes, bactéries, feuilles, branches d'arbres,..
en astronomie avec la description des structures de l'univers, cratères sur la Lune, répartition
des exoplanètes et des galaxies...
dans les arts, art graphiques bien sur, mais aussi en littérature, en musique, au cinéma...
Dans La Dramaturgie, par exemple, Yves Lavandier démontre que la théorie fractale s’applique
à merveille aux mécanismes du récit. La forme simple protagoniste-objectif-obstacles se
retrouve à différentes échelles : la série, l’œuvre unitaire, l’acte logistique, l’acte dramatique, la
séquence, la scène, jusqu’à certains dialogues. C’est la spécificité de chaque composant et la
47
combinaison de milliers de formes simples qui donnent à chaque récit son caractère unique et
son apparente originalité.
Tous ces domaines - et bien d'autres - peuvent bénéficier de la description et d'une modélisation en
termes fractals des phénomènes associés.
Galerie de photos
Ensemble de Mandelbrot Ensemble de Julia en 0.3 + L'éponge de Menger Suite qui tend vers le flocon
0.5i de Koch
La compression fractale est une méthode de compression d'image encore peu utilisée aujourd’hui. Elle
repose sur la détection de la récurrence des motifs, et tend à éliminer la redondance d’informations dans
l'image.
C'est une méthode destructive puisque l'ensemble des données de départ ne se retrouve pas dans
l'image finale. Il existe plusieurs méthodes (subdivision de triangles, Delaunay etc.) mais la
compression par la méthode Jacquin est la plus connue.
Méthode Jacquin
(L'image utilisée pour cette compression est, selon la tradition, la photo de Lenna.)
48
La compression fractale consiste tout d'abord à réaliser deux segmentations (appelés aussi
pavages, ou partitionnements) sur une image : une segmentation de figures Sources et une
segmentation de figures Destinations.
Il s'agit alors de trouver pour chaque figure Source, quel est le meilleur couple (figure
source, figure destination) minimisant une erreur. Cette erreur est généralement calculée en
soustrayant les deux figures. Pour réaliser l'opération de soustraction, il est nécessaire d'opérer
une transformation de la figure source aux dimensions (et à la géométrie) de la figure
destination.
Une fois que tous les couples ont été trouvés, le fichier de sortie contient alors les différents
couples, ainsi que les différentes transformations effectuées (rotation, réduction de la moyenne
etc.).
Le partitionnement est l’opération qui consiste à segmenter une image en régions. Dans la
compression par la méthode Jacquin, nous avons besoin de 2 partitionnements : Source et
Destination. La méthode Jacquin utilise par exemple des figures carrées, mais d'autres formes sont
possibles (nids d'abeilles, triangles etc).
Un point essentiel dans les partitionnements Source et Destination est que le pavage
destination doit être plus petit que le pavage source. En effet, dans le cas contraire, nous serions
amenés à faire un agrandissement (et non une réduction) lors de la transposition des figures
sources vers les figures destinations. Une fractale possède un motif se répétant à l’infini, en se
rétrécissant. Aussi, nous perdons cette propriété si le partitionnement destination est plus grand
que le partitionnement source, l’image ne pourra alors pas converger.
49
Pavages triangulaires Source et Destination
50
LECTURE
--- TIFF LZW Compression
Abstract
images.
Reference
reading.
Requirements
o Must work well for images of any bit depth, including images
common now, but we should not assume that this situation will not
51
change.
than a factor of 2 or 3.
about 10K.
characteristics:
data. Smooth images also compress better than noisy images, and
in our implementation.
52
o Our implementation is written in C, and compiles to about 2K
The Algorithm
strip, and, remarkably, does not need to be kept around for the
scheme:
InitializeStringTable();
WriteCode(ClearCode);
K = GetNextCharacter();
} else {
WriteCode (CodeFromString(Omega));
AddTableEntry(Omega+K);
Omega = K;
53
}
WriteCode (CodeFromString(Omega));
WriteCode (EndOfInformation);
16, each 16-bit pixel will span two 8-bit LZW characters.
varying depths.)
in our pseudocode:
54
Omega is our "prefix string."
input stream. This will be number between 0 and 255, since our
the 0th entry in our table consists of the string <0>, with
..., and the 255th entry in our table consists of the string
right? Well, not quite, since we will reserve code #256 for a
like:
Pixel 0: <7>
Pixel 1: <7>
Pixel 2: <7>
Pixel 3: <8>
Pixel 4: <8>
Pixel 5: <7>
Pixel 6: <7>
Pixel 7: <6>
Pixel 8: <6>
First, we read Pixel 0 into K. OmegaK is then simply <7>, since Omega is
55
the empty string at this point. Is the string <7> already in the
Read Pixel 1 into K. Does OmegaK (<7><7>) exist in the string table?
with Omega to output (write <7> to output), and add OmegaK (<7><7>) to
the table as entry 258. Store K (<7>) into Omega. Note that
string.
Back at the top of the loop. We read Pixel 2 into K. Does OmegaK
Back at the top of the loop. We read Pixel 3 into K. Does OmegaK
associated with Omega (<258>) to output, and add OmegaK to the table as
Back at the top of the loop. We read Pixel 4 into K. Does OmegaK
associated with Omega (<8>) to output, and add OmegaK to the table as
Pixel 0
Pixel 2
Pixel 6
56
Pixel 7 <258> 262: <7><7><6>
out, we can use 9-bit codes, since our new string table entries
are greater than 255 but less than 512. But when we add table
entry 4094, we write out a (12-bit) Clear code. (If we wait any
Note that whenever you write a code and add a table entry, Omega is
can either write it out as a 12-bit code before writing the Clear
require that each strip begins with a Clear code, and ends with
an EndOfInformation code.
57
is assumed to be 1. The compressed codes are written as bytes,
of adaptability.
LZW Decoding
if (Code == ClearCode) {
InitializeTable();
Code = GetNextCode();
if (Code == EoiCode)
break;
WriteString(StringFromCode(Code));
OldCode = Code;
else {
if (IsInTable(Code)) {
WriteString(StringFromCode(Code));
AddStringToTable(StringFromCode(OldCode)+
FirstChar(StringFromCode(Code)));
OldCode = Code;
} else {
OutString = StringFromCode(OldCode) +
FirstChar(StringFromCode(OldCode));
WriteString(OutString);
AddStringToTable(OutString);
OldCode = Code;
58
} /* end of not-ClearCode case */
The function GetNextCode() retrieves the next code from the LZW-
the first code that it gets will be a 9-bit code. We add a table
table. The "+" sign joining the two parts of the argument to
code.
image data?
59
be quite effective, with little or no perceptible image
degradation.
Implementation
The exact structure of the string table and the method used to
Performance
But since we do not want to burden the world with too many
bilevel images, does not do well on color paint images, much less
be about average for 4-bit images, and 8-bit images are worse.
It has been suggested that the CCITT 1D scheme could be used for
data such as 8-bit images that have been "sharpened" using one of
61
information-preserving image compression. These techniques
publishing use.
LZW will very likely remain the scheme of choice for Palette
color images, and perhaps 4-bit grayscale images, and may well
Some images compress better using LZW coding if they are first
even more. However, many images do not compress better with this
62
differencing an integral part of the TIFF LZW compression scheme.
next major TIFF revision. If so, a new value will be defined for
the new "Predictor" TIFF tag. Therefore, all TIFF readers that
Acknowledgements
The original LZW reference has already been given. The use of
The idea is to make use of the fact that many continuous tone
images rarely vary much in pixel value from one pixel to the
char image[ ][ ];
*/
63
for (row = 0; row < nrows; row++)
image[row][col] -= image[row][col-1];
fashion.
samples into 16-bit words instead of 8-bit bytes seems like the
Note that we have not lost any data up to this point, nor will we
lose any data later on. It might at first seem that our
bit samples into 5-bit differences, and so on. But it turns out
64
subtracting red sample values from green sample values, green
sample values from blue sample values, and blue sample values
from red sample values, which would not give the LZW coding stage
case). In other words, we will subtract red from red, green from
green, and blue from blue. The LZW coding stage is identical to
color images and some 8-bit grayscale images do much better with
simplest way to get rid of noise is to mask off one or two low-
order bits of each 8-bit sample. On our 24-bit test images, LZW
of 1.4 to 1. When the low-order bit was masked from each sample,
was 2.4 to 1 when masking two bits, and 3.4 to 1 when masking
three bits. Of course, the more you mask, the more you risk
65
to experiment to find the best compromise for your device. For
some applications it may be useful to let the user make the final
decision.
differencing did not appear to pay off for most of our test
66
NORMES VIDEO
Principes fondamentaux des algorithmes
de compression vidéo
Les séquences vidéo contiennent une très grande redondance statistique, aussi bien dans le domaine
temporel que dans le domaine spatial.
Les algorithmes de compression vidéo de type MPEG utilisent la transformée en cosinus discrète
( DCT Discrete Cosine Transform), sur des blocs de 8x8 pixels, pour analyser efficacement les corrélations
spatiales entre pixels voisins de la même image. D'autres méthodes ont été proposées, en utilisant
les fractales, les ondelettes, ou même le matching pursuit.
Cependant, si la corrélation entre pixel dans des trames voisines est grande, c'est-à-dire, dans les cas où
deux trames consécutives ont un contenu semblable ou identique, il est souhaitable d’utiliser une technique
de codage dite Inter, par exemple la DPCM, qui utilise la prévision temporelle (prévision compensé du
mouvement entre trames).
Dans le schéma classique du codage vidéo, une combinaison adaptative entre les deux mouvements
(temporel et spatial) de l’information est utilisé pour réaliser une grande compression de donnée (codage
vidéo hybride DPCM/DCT).
La plupart des techniques de codage, font un échantillonnage et une quantification avant de coder
l’information. Le concept de base du sous-échantillonnage est de réduire les dimensions (horizontale et
verticale) de l’image vidéo et donc de diminuer le nombre de pixels à coder.
Certaines applications vidéo sous-échantillonnent aussi le mouvement temporel pour réduire le débit des
images avant de coder. Le récepteur doit donc décoder les images et les interpoler avant de les afficher.
Cette technique de compression peut être considérée comme une des plus élémentaires, qui tient en
compte les caractéristiques physiologiques de l’œil et qui enlève la redondance contenue dans les données
vidéo. Les yeux humains sont plus sensibles aux variations de la luminosité que de couleurs. À cause de ce
défaut de l'œil, la majorité des algorithmes de compression vidéo représentent les images dans l' espace
couleur YUV, qui comprend une composante de luminosité et deux de chrominance. Ensuite les
composantes chromatiques sont sous-échantillonnées en fonction de la composante de luminance avec un
rapport Y : U : V spécifique à une particulière application. (exemple: avec MPEG-2 le rapport est de 4 : 1 : 1
ou 4 : 2 : 2).
67
La meilleure prédiction d'un pixel est donnée par la prédiction de mouvement de la trame précédente. Bien
que, soit la prédiction de l'erreur que les vecteurs de mouvement sont transmis, le codage de l'information de
mouvement pour chaque pixel de l'image n'est pas nécessaire.
La technique de compression de base de MPEG-1 (et de MPEG-2) est basée sur une structure de macro-
blocs. L'algorithme code la première trame d'une séquence avec un codage Intra-frame (trame I). Chaque
trame successive est codée en utilisant la prédiction Inter-frame (trames P); seulement les données de la
trame codée juste précédemment (trames I ou P) seront utilisées pour la prédiction. Chaque couleur d'une
trame est partitionné en macro-blocs.
Chaque macro-bloc contient les données sur la luminosité et de la chrominance: 4 blocs de luminosité
(Y1,Y2,Y3,Y4) et deux pour la chrominance (U,V), chacun de 8x8 pixels; ce qui donne un rapport entre
luminosité et chrominance de 4 : 1 : 1
Fonctionnalités de MPEG-1
Pour accéder à un support média, l'algorithme MPEG-1 fut pensé pour supporter différentes fonctionnalités
comme l'accès aléatoire, la recherche en vitesse avant (FF-fast forward) et arrière (FR-fast reverse) dans le
flux vidéo, etc.
Pour incorporer ces fonctionnalités et pour tirer plus d'avantage de la compensation de mouvement et de
l'interpolation de mouvement, l'algorithme MPEG-1 introduit le concept d'images prédites et interpolées
bidirectionnellement (trames B).
Trames I : Ces trames sont codées sans aucune référence à autre image de la séquence vidéo,
comme explique avant. Les trames I permettent de réaliser l'accès aléatoire et les fonctionnalités FF/FR,
bien qu'elles ne permettent qu'un très bas taux de compression.
Trames P : Ces trames sont codées avec une référence à l'image précédente (trame I ou trame P).
Ces trames sont utilisées pour la prédiction de trames futures ou passées et elles ne peuvent pas être
utilisées pour réaliser l'accès aléatoire et les fonctionnalités FF/FR.
Trames B : Elles ont besoin des trames futures et passées comme référence pour être codées. Elles
sont utilisées pour obtenir un très haut taux de compression. Elles ne sont jamais utilisées comme
référence.
L'utilisateur peut arranger la séquence des différents types de trame selon le besoins de l'application.
Généralement une séquence vidéo codée en utilisant seulement des trames I (I I I I I . . .) donne un haut
degré d'accès aléatoire, de FF/FR et d’édition, mais un taux très bas de compression. Une séquence vidéo
codée seulement avec des trames P ( I P P P P P P I P P P P . . .) permet un degré moyen d'accès aléatoire
et de FF/FR.
68
MPEG-2
L'algorithme MPEG-2 a été dessiné pour avoir une qualité pas inférieure à celle de NTSC/PAL et plus
grande que celle du CCIR 60.
À la base, l'algorithme de MPEG-2 est identique à celui de MPEG-1 et il est donc compatible avec lui.
Chaque décodeur MPEG-2 doit être capable de décoder un flux vidéo MPEG-1 valide. Plusieurs algorithmes
ont été ajoutés pour s'adapter aux nouveaux besoins. MPEG-2 permet de traiter des images entrelacées.
MPEG-2 introduit le concept de « profils » et de « niveaux » pour être compatible avec les systèmes qui
n'implémentent pas toutes ces fonctionnalités.
Chaque niveau spécifie la plage des différents paramètres utiles pour le codage.
Le niveau principal supporte au maximum une densité de 720 pixels en horizontal et 576 pixels en vertical,
un débit d'images par seconde de 30 trames/sec et un débit de bit par seconde de 15 Mbit/s.
MPEG-4
MPEG-4, également appelé ISO/CEI 14496, est une norme de codage d’objets audiovisuels spécifiée par
le Moving Picture Experts Group (MPEG).
La norme MPEG-4 spécifie d'abord des techniques pour gérer le contenu de scènes comprenant un ou plusieurs
objets audio-vidéo. Contrairement à MPEG-2 qui visait uniquement des usages liés à latélévision
numérique (diffusion DVB et DVD), les usages de MPEG-4 englobent toutes les nouvelles applications
multimédias comme le téléchargement et le streaming sur Internet, le multimédia surtéléphone mobile, la radio
numérique, les jeux vidéo, la télévision et les supports haute définition.
La norme spécifie de nouveaux codecs audio et vidéo et enrichit les contenus multimédia, en ajoutant de
nouvelles applications comme le VRML (étendu), la prise en charge de la gestion des droits numériques et de
plusieurs types d’interactivités.
La norme est divisée en plusieurs « parts », ou parties, qui spécifient un type de codage particulier. Dans chaque
partie plusieurs « profils » (collection d’algorithmes) et « niveaux » (contraintes quantitatives) sont définis. Un
consortium industriel désirant utiliser MPEG-4 choisit une ou plusieurs parties de la norme et, pour chaque partie,
il peut sélectionner un ou plusieurs profils et niveaux correspondant à ses besoins.
Caractéristiques détaillées
H.264/AVC (MPEG-4 Part 10) comprend de nombreuses techniques nouvelles qui lui permettent de
compresser beaucoup plus efficacement les vidéos que les normes précédentes (H.261, MPEG-1,MPEG-
2, MPEG-4 Part 2/ASP) et fournit plus de flexibilité aux applications dans un grand nombre
d'environnements réseau. Ces fonctionnalités principales comprennent :
Une compensation de mouvement pondérée ((en) Weighted Prediction) par des poids et
des décalages permettant à un codeur de construire des prédictions s'adaptant au changement de
luminance et de chrominance de la scène courante. Ceci apporte en particulier un gain pour les
scènes comportant des transitions dues à des flashs ou des fondus entre scènes effectués au
montage.
Intra-prédiction ou Prédiction spatiale: sur le bord des blocs voisins pour un codage « intra » (plutôt
que la seule prédiction sur les coefficients continus présente dans MPEG-2 Part 2 et la prédiction sur les
coefficients de la transformée de H.263+ et MPEG-4 Part 2).
70
Une transformée entière effectuée sur des blocs de taille 4×4 pixels (proche de
la DCT classique). Pour les nouveaux profils issus des extensions FRExt, une transformée
supplémentaire de taille 8×8 a été ajoutée.
Un filtrage anti-blocs ou deblocking filter, effectué dans la boucle de codage et opéré sur les blocs
4×4, permettant de réduire les artefacts caractéristiques du codage avec transformation en bloc.
Une couche d'abstraction réseau ((en) NAL : Network abstraction layer) est définie pour permettre
l'usage de la même syntaxe vidéo dans de nombreux environnements réseau, ceci inclut des possibilités
71
telles que des paramètres de séquence ( (en) SPS : Sequence parameter set) et d'image
((en) PPS : picture parameter set) qui offrent plus de robustesse et de flexibilité que les conceptions
antérieures.
L'ordonnancement flexible des macroblocs ((en) FMO : Flexible macroblock ordering, alias slice
groups) et l'ordonnancement arbitraire des tranches ((en) ASO : Arbitrary slice ordering) sont des
techniques de restructuration de l'ordonnancement des régions fondamentales de l'image (macroblocs).
Typiquement utilisées pour améliorer la résistance aux erreurs et aux pertes, ces techniques peuvent
également être utilisées à d'autres fins.
Le partitionnement des données ((en) DP : Data partitioning) donne la possibilité de séparer les
éléments de syntaxe d'importance plus ou moins élevée dans différents paquets de données. Ceci
permet d'appliquer un niveau de protection inégal ( (en) UEP : Unequal error protection) aux erreurs en
fonction de l'importance des données et d'améliorer ainsi la fiabilité du flux.
Les tranches redondantes ((en) RS : Redundant slices) permettent d'améliorer la résistance aux
erreurs et aux pertes en permettant au codeur de transmettre une version additionnelle de tout ou partie
de l'image dans une qualité moindre qui pourra être utilisée si le flux principal est corrompu ou perdu.
Des images auxiliaires peuvent être utilisées pour des usages tels que le mixage par alpha channel.
Le comptage de l'ordre des images permet de conserver l'ordre des images et du son dans des
images décodées isolément des informations de minutage (ce qui permet à un système de transporter,
contrôler et/ou changer l'information de minutage sans affecter le contenu des images).
Ces techniques, ainsi que plusieurs autres, aident H.264 à dépasser significativement les standards
précédents, dans une grande variété de circonstances et dans une grande variété d'environnements
d'application. H.264 peut fonctionner souvent nettement mieux que la vidéo MPEG-2 en obtenant la même
qualité avec un débit binaire diminué de moitié, voire plus.
72
73
Cas des signaux biomédicaux
Les organes et les tissus qui composent l’être humain génèrent des grandeurs physiques et/ou
chimiques, reflet de leur état fonctionnel: potentiels électriques, pressions, températures, gaz carbonique,
produits biochimiques plus ou moins complexes, etc. Le recueil, la mesure et l’analyse de ces grandeurs,
stables ou variables dans le temps, sont à la base de l’exploration et de la surveillance du fonctionnement
de ces organes et tissus. On utilise pour ce faire une chaîne de mesure dont la spécificité dépend de la
nature du capteur qui la compose et qui a pour objet de transformer la grandeur recueillie sur le patient,
selon les cas, par voie cutanée, endocavitaire ou percutanée, en une information le plus souvent
électrique, qui, après cheminement dans la chaîne de mesure, est transcrite sur papier, par l’intermédiaire
d’une imprimante ou d’une table traçante, ou sur écran vidéo. Ainsi, l’électrocardiographe,
l’électroencéphalographe, l’électromyographe permettent, grâce à des électrodes convenablement
disposées à la surface de l’organisme, d’étudier les potentiels électriques issus du cœur (E.C.G.), du
cerveau (E.E.G.) ou des muscles (E.M.G.). De même, un capteur de pression disposé à l’extrémité d’un
cathéter, introduit dans l’organisme par voie percutanée et relié à la chaîne de mesure externe, permet une
mesure de la pression sanguine à différents niveaux du système cardio-vasculaire. On peut également, par
voie endocavitaire, mesurer au moyen de capteurs appropriés une acidité, une concentration ionique, une
pression, etc.
– pendant la contraction
isométrique ventriculaire (50 ms), la
pression intraventriculaire croît sans que la
pression aortique monte;
– pendant la période d’éjection ventriculaire (220 ms), les courbes ventriculaires et aortiques
coïncident: la pression aortique maximale peut être identifiée à la pression systolique ventriculaire;
74
cardiaque; la pression aortique décroît progressivement jusqu’à un minimum qui coïncide avec la fin de
la diastole cardiaque et pour cette raison est appelée pression diastolique.
À ces oscillations de premier ordre se superposent des oscillations de deuxième ordre en rapport
avec les mouvements respiratoires, et les oscillations dites de Traube-Hering qui surélèvent l’ensemble du
tracé à une fréquence beaucoup plus lente (W. D. Halliburton).
Modulation
Les signaux biomédicaux sont généralement compressés à partir de la technique PCM (pulse
code modulation) c’est la modulation par codage d’impulsion.
Toutes les formes de modulation par impulsions transmettent le message de façon intermittente, aussi
doit-on lui donner cet aspect avant l’émission; l’« échantillonnage » substitue au signal de
modulation continue initial une suite de valeurs instantanées. ces impulsions sont modulées en
amplitude (IMA) en fonction du signal incident; la courbe enveloppe des impulsions suit la forme du
signal.
modulation par codage d’impulsions, qui repose sur le fait que des valeurs discontinues peuvent
traduire, aussi finement qu’on le désire, les variations continues d’une onde. Selon cette méthode, le
signal est encore échantillonné, mais les amplitudes des impulsions d’échantillonnage sont ensuite
quantifiées, et les nombres représentant le résultat de la quantification sont traduits en groupe
d’impulsions selon un code déterminé.
si l’on divise en 8 parties égales, par exemple, l’amplitude A maximale, crête à crête, que peut
atteindre le signal, on pourra le représenter en remplaçant, à des intervalles de temps égaux, son
amplitude par la valeur médiane du pas de quantification le plus proche. On aura ainsi échantillonné le
signal en fonction de 8 niveaux quantifiés. Or, la désignation de ces niveaux peut être codée: si on
choisit un code d’impulsions où chaque groupe de 3 cases est caractérisé par la présence (ou
l’absence) et par la position des impulsions, on forme un système binaire dont la capacité est de 2 3=8
valeurs. En représentant par 1 une impulsion et par 0 son absence, les compositions possibles
des groupes de trois impulsions sont en effet: 000, 001, 010, 011, 100, 101, 110, 111, expressions des
nombres 0 à 7 en système binaire qui peuvent caractériser les 8 niveaux quantifiés. Il suffit de
transmettre ensuite la représentation codée de la courbe, sous forme de groupes de 3 impulsions,
pour donner une image du signal continu initial. Mais on peut aisément, par un échantillonnage plus fin,
75
se rapprocher encore plus de la courbe exacte du signal à transmettre: par exemple, un code à 7
impulsions donnera un système de codage binaire comprenant 2 7=128 valeurs, qui permettent de
caractériser les variations du signal par 128 niveaux quantifiés, etc.
On retrouve bien l’avantage du procédé par codage dans lequel le bruit (à condition qu’il ne puisse être
pris pour une impulsion du code) ne peut introduire aucune distorsion du signal.
Plusieurs techniques de compression sont possibles principalement celles basées sur les S-plines et sur
les ondelettes. Pour connaître la meilleure technique, il faut maximiser le critère CR/PRD avec :
- CR : le taux de compression
76
nombre de bits dans ladonnée d ' origine
CR=
nombre de bits dans la donnée compressée
√
∑ ( ORG ( i ) − REC ( i ) )2
i
PRD = 100 2
∑ ( ORG ( i ) )
i
77
La compression de l’information
médicale
I. L’imagerie médicale
4) Le fond d’oeil se base sur une séquence d’images délivrée par un Scanning Laser
Ophtalmoscope à la suite de l’injection d’un produit de contraste.
2) Le standard H264, qui est à l’origine le MPEG4, pour toute les vidéo.
Lorsque la reconstruction est parfaite, la MSE est nulle et le PPSNR tend vers
l’infini.
Plusieurs techniques de compression sont possibles principalement celles basées sur les S-plines et sur
les ondelettes. Pour connaître la meilleure technique, il faut maximiser le critère CR/PRD avec :
- CR : le taux de compression
nombre de bits dans ladonnée d ' origine
CR=
nombre de bits dans la donnée compressée
√
∑ ( ORG ( i ) − REC ( i ) )2
i
PRD = 100 2
∑ ( ORG ( i ) )
i
79