La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction à la compression des données

Présentations similaires


Présentation au sujet: "Introduction à la compression des données"— Transcription de la présentation:

1 Introduction à la compression des données
La quantité d’information augmente plus vite que la capacité de stockage. On a besoin de compresser les données aussi durant le transfert ! (flot vidéo, acquisition des données scientifiques, médicales, industrielles, téléphonie, etc.) Donc, le domaine a une longue vie devant soi. Des nouveaux importants algorithmes naissent tous les ans. 1

2 Il existe exactement 2N fichiers de cette taille.
Méthodes idéales (universelles et sans pertes) n’existent pas. Supposons l’existence d’une technique capable de comprimer tous les fichiers de taille N (bits). Il existe exactement 2N fichiers de cette taille. Le résultat de compression est une collection de fichiers de taille 0, 1, 2, 3, …, (N-1). Dans cette collection on peut donc avoir au total : fichiers différents. Mais cette somme vaut 2N-1 – 1, donc au moins un fichier ne subira aucun rétrécissement. Des mauvaises surprises sont donc toujours possibles. Cependant, les usagers d’habitude n’en ont pas peur. Une règle pratique est considérée comme universellement valide: 2

3 Ce, qui ne se comprime pas (ou très mal) c’est le chaos, une « structure sans structure », un document aléatoire, sans régularités, sans redondances. Or, de tels documents sont rarement comprimés, voire même utiles… Ceci dit, il faut faire attention ! Plusieurs documents possèdent une certaine aléatoirité, ils sont bruités, ou leur structure même implique l’existence des formes irrégulières (ceci par exemple est pertinent à la plupart des documents visuels – images du monde réel…) Rien de fabuleux… Mais c’est un fragment d’une image dont le contenu a plus de sémantique… 3

4 De telles images peuvent également se comprimer mal
De telles images peuvent également se comprimer mal. Parfois un peu de « nettoyage » préalable peut être utile. Toute compression cherche à éliminer la redondance, soit par une structuration différente, mais réversible, permettant de restaurer l’original (compression sans pertes), soit en supprimant une partie d’information considérée inutile, ou sans importance (méthodes avec pertes, irréversibles). Les méthodes irréversibles offrent un taux de compression beaucoup plus élevé que méthodes sans pertes ! Bien sûr, parfois il est hors de question de perdre l’information. Ceci dit, les critères d’évaluation des techniques de compression sont très variés, on ne peut se baser uniquement sur le taux. 4

5 Critères de classification des techniques de compression :
Taux de compression. Vitesse de compression. Vitesse de décompression. Usage des ressources (en moyenne et maximal). Rapport qualité/taux (pour les méthodes avec pertes). Sécurité et robustesse. Universalité, adaptativité. Finalement — c’est carrément idiot, mais inéluctable : le coût d’implémentation/usage dû à la présence de très nombreux brevets… Parfois le choix est dicté par les contraintes économiques et assi-milées 5

6 Des petits systèmes sans buffers demandent parfois une grande vitesse de compression/décompression. Systèmes d'acquisition des données embarqués sur les satellites : compression. Téléphones portables : les deux… Flots vidéo – d'habitude – décompression (réception en temps réel, tandis que l'émetteur peut mettre tout dans les tampons). Il ne faut pas oublier quelques aspects légaux. Cryptage, l'ajout des segments d'identification, augmentation de la sécu-rité via CRC, tout cela ajoute de la redondance et diminue la compression. Parfois les données sont critiques sur le plan physique ou juridique. Alors, même si 99.9% de l'information est quali-tative, dans l'imagerie médicale on est obligé souvent d'uti-liser les méthodes sans pertes. Malgré l'existence des méthodes dédiées, l'usage des uni-verselles est populaire à cause de maintenance. 6

7 Classification des méthodes
Techniques statistiques, basées sur le fait que les éléments (caractères, pixels, valeurs numériques) ne sont pas équipro-bables [leurs séquences non plus…]. On verra les méthodes de Huffman, le codage arithmétique, etc. Ce sont les disposi-tifs de codage sans pertes. Souvent elles complémentent d’autres méthodes, plus puissantes, car elles ne sont pas chères. Techniques structurales. Ici on élimine les redondances par un changement de représentation plus pointu. Par exemple, une plage de pixels de même couleurs est remplacée par le code du pixel et un compteur. Il existent des variantes différentielles de cette technique, des techniques prédictives, etc., populaires pour compresser les sons. 7

8 Techniques basées sur des dictionnaires
Techniques basées sur des dictionnaires. C’est une variante « structurale » des méthodes statistiques. Les items fréquents sont remplacés par leur références. LZ77, LZW, etc. Techniques sémantiques. On essaie de « comprendre » le document, de trouver son modèle. Techniques difficiles à implémenter universellement, mais très efficaces dans des contextes spécifiques. Parfois permettent de remplacer beaucoup de donnés par leur générateur. Les techniques de compression fractale peuvent – cum grano salis – être assimilées à ces méthodes. Techniques spectrales : Fourier, ondelettes, etc. Une variante de techniques structurales, adaptée aux données numériques (en particulier aux images) mesurables, où on peut décom-poser l’image en une collection de fonctions de base. Un bon choix de ces fonctions permet de représenter le document par un petit nombre de coefficients. 8

9 Méthodes statistiques, survol.
Les deux plus répandues : Huffman et arithmétique. Il faut commencer par la question : comment mesurer l’information contenue dans un document, et introduire L’entropie de Shannon qui permet d’évaluer le nombre de bits par caractère, nécessaire pour coder le document. Ce sujet sera abordé par d’autres enseignants. Supposons que le document est composé de caractères appar-tenant à l’alphabet de taille L. L’information (par caractère ; pour le document entier il est naturel d’exiger que l’information soit additive et qu’il faut multiplier le résultat par N, la taille du document…) est le nombre de questions oui/non nécessaires pour identifier l’objet. 9

10 Pour l’alphabet de taille L=2K, le nombre de questions est K, et en général on assigne : S = log2(L). Ou, si on définit p – la probabilité d’une occurrence, égale à 1/L pour les caractères équiprobables, S = -log2(p) bits si L a 256 éléments. Si les caractères ne sont pas équiprobables (p. ex. un d’eux est beaucoup plus fréquent que les autres), pour identifier le caractère on peut faire mieux que de diviser l’alphabet en deux moitiés identiques ; on doit insister d’abord sur l’hypothèse que c’est le plus fréquent qui est tiré du document. L’additivité, plus un peu de math permet de dériver la formule générale Ceci est la longueur moyenne (en bits) d’un caractère. Ils sont toujours considérés non-corrélés ! 10

11 Méthode de Huffman. A B C D E p : 0.4 0.2 0.15 0.1
Prenons p. ex., l’alphabet {A,B,C,D,E} avec des probabilités L’entropie S vaut , ce qui est inférieur à log2(5)=2.322. Et, en utilisant le codage classique, sachant que 5>4, il faudra quand même prévoir 3 bits pour le code… Méthode de Huffman. On construit d’abord une arborescence, dont les feuilles sont les caractères individuels appariés avec leur probabilités. Ensuite on groupe les caractères en groupes en sommant les probabilités – en commençant par les moins probables – et on groupe les groupes jusqu’à la réduction finale. Ici on aura : A B C D E p : 0.4 0.2 0.15 0.1 11

12 À présent, chaque caractère est codé en suivant les lignes qui le connectent à la racine (depuis la racine). A=0; B=100; C=101; D=110; E=111. La longueur moyenne par caractère dans un document conforme à la statistique a priori est 0.4*1+(0.6)*3 = 2.2. 12

13 Compression arithmétique
Ceci est mieux que le codage régulier, mais pire que le minimum théorique, car le cas n’est pas favorable. Il y a des problèmes. D’habitude on ne connaît pas les fréquences a priori dans un document arbitraire, et il faut coder la technique de Huffman adaptative, plus coûteuse. Répétons que la technique de Huffman souvent accompagne les autres, par exemple la compression spectrale JPEG se termine par l’étape statistique. Compression arithmétique On va commencer par une histoire de science-fiction. Un extra-terrestre a visité notre belle Terre. Nos représentants élus lui ont montré toutes les merveilles : 13

14 Et le gars est reparti dans sa soucoupe volante.
Le Mont St. Michel, les photos d’Estelle Hallyday à poil, un Livarot hors d’age, la collection de cigares de Bill Clinton, etc. Et le gars est reparti dans sa soucoupe volante. Les élus du Peuple étaient surpris : « mais, comment M. le ET, ou Thor, ou quiconque, vous n’allez pas prendre des photos, écrire un rapport, ou mémoriser autrement nos merveilles? » Et il répondit : « ne craignez rien, j’ai mémorisé tout : le héro-ïsme des agents de la SNCF dans leur bataille pour la retraite à 35 ans, et le nombre de bourses à l’Université de Caen, etc. ». Et, il a montré une petite baguette en diamant extragalactique, avec une petite marque au milieu. 14

15 Les questions à présent sont :
Le secret était là. La marque correspondait à un nombre réel (disons, une fraction entre 0 et 1) avec beaucoup de chiffres significatifs. On a pu coder ainsi un document très long, contenant tous les détails sur les vacances des politiciens Français pendant la canicule. Les questions à présent sont : Comment coder et décoder un document « normal »? Comment le faire de manière efficace, incrémentale. Et, naturellement, comment convaincre les gens que cela marche. (La technique est bonne, et elle a été brevetée, c’était une option pour JPEG, et continue à progresser, car les restrictions du brevet ne sont pas éternels. 15

16 On commence par représenter l’alphabet par une « baguette » divisée en segments, dont les longueurs correspondent aux probabilités de chaque caractère. Le codage marche comme suit : Si le premier caractère est, disons, C, ceci correspond à l’intervalle [0.6 – 0.75]. Cet intervalle représente le document. On « gonfle » cet intervalle, et on lit le second caractère. Disons : A. L’intervalle est raffiné à [0.6 – 0.66] (0.06 = 0.4*0.15). 16

17 Ainsi, la position et la largeur de l’intervalle correspondant à chaque caractère lu, se transforme en « mapping » qui augmente la précision du résultat. Après avoir lu caractères, la précision sera énorme, le nombre final (quelque part dans l’intervalle résultant) aura plusieurs chiffres significatifs. Ceci n’est pas encore l’algorithme du codage, puisqu’il est difficilement imaginable le stockage d’un tel nombre. Les compresseurs ne marchent pas comme ça ! On procède de manière suivante. Si un, ou plusieurs chiffres (notre présentation utilise la base décimale, mais naturellement l’implémentation se fait en binaire) sont figés, p. ex. ici, si l’intervalle est devenu [0.6 – 0.66], le premier chiffre ne bougera plus. On peut écrire « 6 » sur le flot de sortie, « renormaliser » l’intervalle restant, et continuer la procédure, jusqu’à la fin. 17

18 Le premier caractère est forcément B.
Le décodage est similaire. Supposons que le premier chiffre reçu par le décodeur est « 5 ». Ceci signifie une fraction 0.5… Le premier caractère est forcément B. Si on sait que la fraction est F=0.528…, ceci implique : F = Mais la renormalisation donne 0.128/0.2 (la longueur de B) = 0.64. Ce reste tombe dans l’intervalle « C », donc le début du document est BC… Ensuite = /0.15=0.267, c’est-à-dire, le caractère A. Les détails mathématiques ne sont donc pas difficiles, mais le codage doit être très soigneux. Si les fréquences sont bien connues, la technique arithmétique peut donner des résultats meilleurs que Huffman ; l’implémen-tation est un peu plus lente. 18

19 Techniques structurelles, RLE, LPC, et autre bazar…
La méthode RLE (Run-Length encoding) est adaptée aux images style bandes dessinées (ou illustrations pas trop ambitieuses), éventuellement aux images de synthèse, là où on peut trouver des « plages » de couleurs conséquentes et fréquentes. Si une couleur est codée comme, disons, 165, et on trouve une séquence de 80 pixels identiques, on code (80,165). Le gain est évident. Il est évident aussi que la technique ne convient pas à la compression des photos, où il a beaucoup de transitions douces, mais pas de plages. On peut cependant généraliser l’approche, et contituer plusieurs variantes de LPC (Linear predictive Coding). 19

20 En moyenne la séquence d’origine est croissante, les
L’instance la plus simple est le codage différentiel. Si l’image contient un gradient liéaire, une séquence : 45, 47, 49, 51, 53, … les différences Δi = Ci+1 – Ci sont toutes égales à 2, et RLE marche. (Il faut préserver le premier item tel quel). Dans un cas plus complexe, p. ex. pour la séquence 46, 50, 52, 49, 56, 54, … on obtient Δ = {4, 2, -3, 7, -2, …} et rien n’est évident. Cependant, on voit deux choses : En moyenne la séquence d’origine est croissante, les différences oscillent autour de zéro. 2. Elles sont plutôt petites ; on peut les coder sur un nombre moindre de bits. Sur un plan plus général, on peut – ayant les caractères C1, C2, … Cn, extrapoler (p. ex. par un polynôme) la valeur suivante, et en coder seulement la différence. Ceci est le LPC. 20

21 On peut aussi utiliser une prédiction 2-dimensionnelle, par exemple déduire la valeur d’un pixel en fonction de ses voisins : Bien sûr, la généralisation 3D est aussi possible (pour la compression des images volumiques). On voit clairement qu’ici ce qui compte ce n’est pas la fréquence d’un caractère ou pixel, mais sa relation aux autres, les possibles corrélations. Des techniques statistiques qui s’appuient sur le fait que la probabilité d’un caractère dépend de son prédéces-seur(s) existent aussi. On parle de méthodes Markoviennes. Elles ont besoin de mémoire pour stocker les probabilités conditionnelles, et ceci peut être assez onéreux. 21

22 Méthodes basées sur les dictionnaires
La structure/redondance résultante d’occurrence répétitive des séquences d’items (des mots, des éléments des motifs géomé-triques, etc.) peut être éliminée grâce aux dictionnaires, qui stockent les motifs les plus fréquents, et permettent de remplacer un « mot » fréquent par son « indice ». Les plus populaires sont basées sur les variantes de LZW [Lempel-Ziv-Welsh] (Unix compress, GIF, etc.) et LZ77 (Images PNG, gzip, etc.). La méthode LZ77 utilise le document même comme son « dictionnaire ». On prévoit une zone assez longue, disons, de 32K qui précède le point de lecture, comme une zone de recherche. Si dans son intérieur on trouve un motif (mot) identique avec le courant, on code son décalage (offset) et sa longueur. Cette fenêtre « glisse » avec la lecture. 22

23 Le bon fonctionnement de la méthode est basée sur le fait que les répétitions sont souvent locales, un mot est fréquent non pas dans le document entier et dispersé, mais dans une de ces parties. Les combinaisons de pixels (gradients spécifiques) dans des images aussi. La méthode LZW construit et utilise un dictionnaire spécial, de taille variable. Toute information émise par le codeur ce sont les indices, mais d’abord on place l’alphabet en début du diction-naire . Quand on trouve dans le document codé une séquence de M lettres, le préfixe (M-1) a été déjà vu et figure dans le diction-naire. Donc, on stocke la nouvelle séquence de manière économique. On ne sort pas directement son indice, on reste toujours « un pas en arrière ». 23

24 Quand le codeur trouve une séquence déjà vue, il continue la lecture, car la séquence connue peut être plus longue ; rien ne sort du codeur. Seulement quand la séquence devient « neuve », le codage a lieu. Le dictionnaire croît. Si au début 258 éléms suffisaient (l’alpha-bet, le EOF et un caractère spéciale : « casser le dictionnaire »), et donc 9 bits par item, on aura besoin de 10, 11, etc. bits plus tard pour chaque indice. Donc, le code est de taille variable. Ceci n’est pas grave. Le décodeur sait quand l’allocation courante ainsi que le codage débordent, car il construit le dic-tionnaire « en synchronie » avec le codeur. Si la taille du diction-naire dépasse les bornes du protocole établi (p. ex. 12 bits pour GIF), on supprime le dictionnaire, et on recommence. Ceci correspond à la localité des références. 24

25 Compression spectrale
Les photos, ou, plus généralement, les séquences numériques relativement régulières, où le passage entre les voisins est rarement abrupt, peuvent être considérées comme des fonctions régulières sur un support fini. Pour des images en niveau de gris, ce niveau est la valeur de la fonction, sinon il faut choisir un espace de couleurs, et travailler 3 plans séparément. On peut donc effectuer leur développement en série de Fourier. En fait, pour des raisons pratiques, on utilise un autre procédé, la transformation cosinus discrète, qui est une variante réelle de la méthode de Fourier. On obtiendra ainsi le nombre de coefficients égal à la taille du document. Aucune information n’est perdue. 25

26 Voici un petit fragment d’une image, où on voit la douceur des transitions (absence des fréquences très hautes). Le résultat de la transformée, à droite, dûment normalisé, est beaucoup moins structuré ! On peut espérer que cette représentation rend la redondance plus explicite. On commence donc par un peu de math : 26

27 Mais on espère qu’il soit possible de « décapiter » le résultat, de supprimer un certain nombre de coefficients (en les remplaçant par zéro), sans changer le contenu informationnel de manière significative. Plus généralement on effectue un seuillage (quantisation ou quantification) du résultat. Un tel procédé constitue la base de presque toutes les techniques de compression avec pertes. On stocke le résultat, mais avant on améliore légèrement le taux, en comprimant le résultat avec Huffman (ou cod. arith.). Le décodeur doit exécuter la transformée inverse, la IDCT : 27

28 Dans JPEG on ne transforme pas l’image entière
Dans JPEG on ne transforme pas l’image entière. Le résultat d’une telle transformation aurait accumulé des informations sur les corrélations entre les parties très distantes de l’image, ce qui n’a pas beaucoup de sens, et apporte des difficultés numériques. On coupe l’image en blocs de 8*8 pixels, la DCT et seuillage concernent un bloc. Voici la visualisation du sens des fonctions de base : 28

29 La compression finale, statistique est globale.
Le seuillage est sélectif, on n’enlève tout simplement pas les coeffs les plus petits, mais on ajoute de la pondération : fluctuations « denses » (coefficients loin du coin supérieur gauche) sont moins importantes visuellement. Donc, la sérialisation (le document est 1-dim même si l’image est 2-dimensionnelle) suit la règle visualisée à droite. C’est l’ordre de sto-ckage, et aussi un peu, l’ordre de la décrois-sance des facteurs de pondération avant le seuillage. La compression finale, statistique est globale. Mot final. En cas de transitions « dures » fréquentes, JPEG soit est inefficace, soit produit des artefacts. Ne jamais comprimez avec JPEG des documents visuels contenant des textes ! 29

30 Voici une image – original, et quelques compressions JPEG
Voici une image – original, et quelques compressions JPEG. La matrice occupe 150kB. Les JPGs : 19 et 12K. En bas, avec le taux de compression plus impressionant : 5 et 3K. Un PNG occupe 65K, mais en 16 millions de couleurs! En 256 : 29K. 30

31 Compression MPEG des images animées.
On voit que la cohérence entre les zones voisines est très importante. Passons donc au sujet de cohérence temporelle : Compression MPEG des images animées. Une séquence animée est composée de « cadres » (frames) similaires, qui visualisent une scène contiguë. À l’intérieur du chaque cadre on peut, et on effectue une compression intra-frame (typiquement une variante du JPEG), mais des gains plus importants sont possibles grâce à la relation entre les images voisines dans le temps. On choisit d’abord un percentage (typiquement 1/12) de cadres comprimés uniquement spatiellement, ce sont les cadres « I ». Le reste est transformée spécialement, une partie ce sont les cadres « P » (comme prévision). Il y aura aussi « B » pour prévision bi-directionnelle. 31

32 Pour construire un cadre « P » à partir d’un original il ne suffit pas calculer les différences, car tout mouvement écrase toute correspondance géométrique. On divise l’image en blocs (8*8, 16*16 ; la luminance est plus importante que les canaux de chrominance [teintes]). Pour chaque bloc on cherche sur le prédécesseur (un frame I ou P) le bloc correspondant le plus adéquat possible. On code le offset (le décalage) par rapport à sa nouvelle position, éventuellement la différence entre les deux blocs compactée par des techniques déjà mentionnées. Un bloc B résulte de la comparaison de l’image avec le prédé-cesseur et avec le successeur. On choisit le meilleur, mais on peut également choisir la moyenne, et aussi exploiter la méthode différentielle. 32

33 Quelques mots à son sujet :
On peut donc décoder la séquence temporelle « virtuelle » IBBPBBPBBPBBIBBPBBPB... , mais le codeur envoie les frames dans un ordre différent, le premier P doit sortir avant les premiers B (sinon, l’anticipation n’est pas possible). Les modules du décodeur peuvent travailler en parallèle, et décoder les frames dans un ordre tordu. Le nom MPEG n’est pas synonymique avec les protocoles de compression ; les standards MPEG 4 et MPEG 7 sont infiniment plus riches. En particulier, la célèbre technique MP3 de compression de la musique appartient également au domaine MPEG. Quelques mots à son sujet : 33

34 Compression MP3 des flots acoustiques.
On profite de quelques propriétés du système auditif humain, pas seulement des redondances structurelles, statistiques, etc. Nous ne pouvons entendre des sons de fréquence > 20 kHz. Donc, on peut commencer par le filtrage qui élimine des fréquences trop hautes. Ceci diminue déjà l’information contenue dans le flot. Mais il ne faut pas faire cela trop bêtement… Le flot acoustique analogue est discrétisé. Pour éviter des alias (fréquences écho, mauvaises), il ne faut pas descendre en dessous de la fréquence limite de Nyquist, égale à 2 × la fréquence maximale rendue. On utilise souvent 44 kHz. On sait que la sensibilité de l’oreille dépend de la fréquence, on entend moins bien les sons aigus. 34

35 La courbe de sensibilité normale :
35

36 Ensuite, il existe un phénomène de masquage
Ensuite, il existe un phénomène de masquage. Si un son très fort coexiste avec un autre, plus faible, de fréquence pas trop éloignée, ce second son peut devenir inaudible. On effectue donc l’analyse spectrale fenêtrée du signal, on le divise en quelques dizaines de bandes, et dans chaque bande on élimine les contributions trop faibles ou masquées. On sait qu’après avoir entendu un bruit très fort, l’inertie de notre appareil auditif nous empêche d’entendre pendant quelques dizaines de milisecondes un son comparable. On élimine de telles contributions. Curieusement, on a découvert que les signaux plus forts reçus par l’oreille, sont plus rapides dans la partie neurologique de l’appareil, que les signaux plus faibles. Ceci casse la causa-lité triviale, et ensemble avec les particularités de la neuro-psychologie de notre mémoire fait que l’on « oublie » un signal faible, si dans 4 msec on entend un plus fort ! 36

37 Tout ensemble, complété par des techniques statistiques, etc
Tout ensemble, complété par des techniques statistiques, etc., donne une excellente technique de compression. Taux 1/10 par rapport à un fichier .wav sont typiques. Cependant, tout dépend de ce que l’on veut faire avec. Pour écouter quelque fois une chanson, le taux d’échantillonnage 64 kbits/sec est suffisant. Si on veut graver un CD, il faut prévoir le double… Tout ceci montre que les spécialistes du domaine ne peuvent pas être recrutés parmi les « purs algorithmiciens », ou purs ingé-nieurs du son. Tout le domaine de compression est une affaire multidisciplinaire. L’analyse spectrale classique, avec les transformées de Fourier commence depuis quelques années à exploiter très intensement une autre base de fonctions que les sinus et les cosinus. Il faut donc savoir un peu sur : 37

38 Compression par ondelettes
La technologie des ondelettes est une catégorie très riche, il y a plusieurs bases d’ondelettes, et les gens inventent toujours des nouvelles fonctions, mieux adaptées au problème. En général, une ondelette est une fonction qui oscille (comme cosinus), mais qui possède un support fini (ou décroissant très rapidement en dehors d’un certain intervalle). (D’ailleurs, cette propriété permet de ne pas utiliser les blocs, comme en JPEG ; l’image entière subit la transformation. L’idée générale est simple : on développe le document – un flot numérique, une image, etc. en ondelettes, on quantise et par seuillage on élimine un certain nombre de coefficients, et c’est tout. Le décodeur renverse la transformée. 38

39 Imaginez une séquence numérique et son graphique :
Comment ça fonctionne? Imaginez une séquence numérique et son graphique : 15 20 25 05 30 40 10 35 Le graphique est une « fonction », en apparence représentée par une ligne contiguë, même si nous savons qu’en fait ce n’est qu’un ensemble discret de points. 39

40 On peut la représenter autrement, par exemple :
Comme fonction mathématique, notre objet est une somme de fonctions à droite, des seuils égaux à 1 entre n et n+1 et zéro ailleurs, pondérées par des valeurs appropriées (pour l’histogramme). 40

41 Un seuil de base : la fonction égale à 1 entre 0 et 1, et zéro ailleurs, s’appelle la fonction de base de Haar. Il en faut deux, entre 0 et 1, et décalée : entre 1 et 2, pour avoir deux pixels, entre 0 et 2. Mais nous pouvons changer de représentation. Construire un « macro-pixel » égal à la moyenne de deux, entre 0 et 2 : c=(p0+p1)/2, et compléter l’information par la différence : d=p0-c. Pour la manipulation cela suffit, pour la visualisation on peut supposer, que l’on combine l’original en prenant le « macropixel » deux fois plus large, et une fonction oscillante : 41

42 Cette fonction, égale à 1 entre 0 et 1 et –1 entre 1 et 2 (ou normalisée différemment : 1 entre 0 et 0.5 et –1 entre 0.5 et 1) c’est une ondelette (de Haar). La séquence de 16 nombres subit la transformation suivante : on calcule 8 moyennes : 17,5, 22,5, etc., et 8 « fluctuations »: -2,5, +2,5,.... Ensuite on répète la même procédure avec les moyennes : 4 moyennes de 4 pixels, plus 4 fluctuations. On continue encore deux fois, jusqu’à la moyenne finale. C’est la représentation en ondelettes. On garde une seule moyenne, plus les contributions oscillantes. Le reste est évident : seuillage, et suppression d’un certain nombre de coefficients. Dans la pratique on utilise la base de Haar rarement, elle est un peu misérabiliste… Souvent il faut calculer les moyennes pondérées de 4, 6, 8 etc. pixels, et les ondelettes sont des fonctions très complexes. Mais on ne les regarde pas ! 42

43 Les ondelettes de degré supérieur, par exemple celles conçues par Ingrid Daubechies, où on combine quatre éléments pour obtenir la moyenne sont des fonctions fractales, assez épouvan-tables… 43

44 Bien sûr, pour les images il faut effectuer les transformées « horizontale » et « verticale ». Il faut décider quel espace de couleurs utiliser, etc. La technique est adaptative, et très efficace. Elle constitue la base du JPEG Son implémentation n’est pas difficile, mais demande une certaine expérience dans le domaine numérique. Commentaire La quantisation (seuillage) peut intervenir dans plusieurs con-textes. On peut p. ex. diminuer le nombre de couleurs, en utili-sant une palette restreinte. Ceci est également une compression. Parfois on essaie de « bricoler » les couleurs intermédiaires par dithering, on remplace une plage orange par une mixture de pixels jaunes et rouges. Attention, ceci complexifie la structure, et rend les méthodes structurales moins efficaces !! 44

45 Compression fractale C’est une technique un peu bizarre… Elle a eu une mauvaise presse à cause du fait que son inventeur, Michael Barnsley, s’est com-porté de manière pas très ouverte, et les promesses sans justifica-tion ont précédé l’analyse (et les premières réalisations pratiques faites par Arnaud Jacquin, un étudiant de Barnsley). La technique a été un peu oubliée aujourd’hui, mais conceptuel-lement elle reste assez intéressante/intrigante. On commence par la synthèse d’une image, non pas par son traitement. 45

46 Ce n’est pas une image quelconque, mais un objet auto-similaire
Ce n’est pas une image quelconque, mais un objet auto-similaire. On peut faire des images de ce genre en utilisant une « photoco-pieuse retrécissante » avec plusieurs lentilles: plusieurs copies de l’original, mais plus petites et transformées (translation et rota-tion). Voici ce qui se passe si on itère plusieurs fois cette manipulation : 46

47 Quelle que soit l’image d’origine, si sa copie multiple est passée par la photocopieuse, le résultat aussi, etc., l’image finale n’a rien à voir avec l’original, et est conditionnée seulement par les paramètres de la copieuse. Le résultat final, le triangle de Sierpinski est l’attracteur de cette collection de 3 transforma-tions consistant d’un facteur d’échelle et 2 paramètres de translation. Au total : 9 paramètres, 9 nombres… Ainsi, quelques paramètres à peine (plus un programme univer-sel) définissent une image de complexité conséquente ! Avec plus de paramètres (5 transformations, ou une dizaine…) on peut arriver à créer des images assez impressionnantes. Par Exemple, 5 tranformations suffisent pour créer l’image de l’arbre sur la page suivante : 47

48 48

49 (L’algorithme de création de telles images peuvent utiliser la technique de « copieuse », mais plus souvent on profite d’une technique aléatoire : on commence par un point, et on applique aléatoirement une des transformations. On fait cela un certain nombre de fois sans rien afficher, et ensuite, quand les points convergent vers l’attracteur, on les dessine). Mais qu’est-ce que tout cela à voir avec la compres-sion d’images? Les vraies images ne sont pas auto-similaires ! Oui, et non… Certes, la technique est différente, mais les concepts sont similaires. Observons qu’une image peut posséder des zones similaires modulo retrécissement (parfois aussi : rotation ou changement du contraste des couleurs), et – bien sûr – translation. 49

50 Voici une vielle amie : Lena.
50

51 On parcourt l’image et on la divise en blocs (disons, de 8x8 pixels).
La description qualitative de l’algorithme de compression est dont la suivante : On parcourt l’image et on la divise en blocs (disons, de 8x8 pixels). Pour chaque bloc on cherche un macro-bloc, 2 fois plus grand, et similaire (modulo rotation de multiple de 90°, et éventuellement avec la luminosité et contraste différents). On stocke les paramètres des opérations qui transformeraient le macro-bloc, en bloc d’origine. Donc, 2 nombres qui décrivent le positionnement, deux nombres responsables du changement de contenu-couleur (si image en niveaux du gris ; pour des images couleur c’est plus compliqué), et les paramètres discrètes décrivant la rotation. Le problème est que trouver des macro-blocs très similaires est difficile, parfois impossible… 51

52 L’essentiel pour la compression est cette recherche des macro-blocs
L’essentiel pour la compression est cette recherche des macro-blocs. Plusieurs variantes ont vu le jour, afin d’accélérer la re-cherche, ou l’évaluation de la qualité de l’approximation. La compression fractale est une méthode très lente… On a exploité la division en triangles déformables, et aussi les quadtrees. De temps en temps quelqu’un propose une nouvelle technique, mais le progrès est lent. Plusieurs chercheurs ont concentré leurs investigations sur les ondelettes, et les techniques fractales ne sont plus à la mode.. Après le codage – compression, il faut préciser comment on décompresse le fichier contenant la description des paramètres des transformations des blocs. Cette procédure est rapide. On commence par une image quelconque, et on lance itérativement la « copieuse ». 52

53 Voici les itérations zéro, un, deux et dix, avec Lena comme l’original comprimé.
53

54 La représentation compressée d’une image ne contient pas – en principe - sa taille physique, on peut décompresser l’image plus grande ou plus petite (un peu étonnant…). Et alors, ce qui se passe n’a rien à voir avec la manifestation des « blocs » carrés, ou « macro-pixels ». Comparons le cas fractal avec un simple changement d’échelle du chapeau de Lena : Ainsi la décompression fractale peut « ajouter des détails », ce qui peut être utile pour rendre une forêt, une pelouse, etc. 54

55 On peut considérer que ceci est également une compression.
Actuellement les techniques basées sur les IFS (Iterated function systems) trouvent aussi quelques applications dans la re-synthèse des textures, où on représente des textures – décorations surfa-ciques des modèles 3D non pas par des images (bitmaps), mais on les engendre procéduralement. Les programmes de génération sont pilotés par des paramètres extraits des textures réelles (forêt lointaine, sable, pelouse, relief des montagnes, une surface métallique rouillée, etc.). Le résultat n’est pas identique à l’original, mais il possède les mêmes propriétés statistiques : répartition des couleurs, « rugosité », etc. On peut considérer que ceci est également une compression. À présent vous allez souffrir une bonne dose de théorie… 55

56 Merci. 56


Télécharger ppt "Introduction à la compression des données"

Présentations similaires


Annonces Google