Compression d'images
Cette page présente quelques algorithmes courants de compression d'images.
Contents
Pourquoi compresser?
Pour comprendre en quoi la compression des images est nécessaire en informatique , nous allons faire un rapide retour sur la structure d'une image numérique[1].
Une image en informatique est une liste de pixels stockée en 1 dimension et lue bloc par bloc pour en faire une surface.
Sur le disque dur, une image est organisée comme ceci:
Les premiers bytes du fichiers contiennent un manuel d'utilisation, expliquant quelles sont ses dimensions, l'emplacement des différentes zones de mémoires et éventuellement une signature caractéristique du type de compression (codec) utilisée. Une fois dépassé, le reste des bytes du fichiers contient les informations de couleur qui permettront d'allumer les pixels de l'écran. La tâche d'un logiciel d'affichage et/ou de traitement d'image est de lire le manuel et de convertir les informations en une grille de pixels. Après cette opération, l'image est affichable sur un écran 2D[2].
Le stockage de chaque pixel dans une liste occupe beaucoup de place en mémoire. Pour pouvoir visualiser et manipuler l'image, il est courant de la décompresser dans la RAM. Cette mémoire étant optimisée pour cet usage (l'accès en lecture et en écriture est très rapide), elle permet de manipuler les images sans qu'elles soient compressées. Sa capacité est par contre beaucoup plus réduite que celle des disques durs, et elle se remplit très vite puisqu'elle utilise les fichiers non compressés.
Le stocakge en ROM n'a pas les mêmes performance que la RAM. La ROM est lente mais par contre permet de stocker de grosses quantité de données. C'est en grande majorité pour améliorer ROM que la compression a été mise au point en image.
- Son premier rôle est de réduire la quantité de mémoire utilisée pour un fichier. Si une compression diminue par 10 le poids des fichiers sur le disque dur, il pourrat donc en contenir 10x plus!
- Son deuxième rôle est d'accélérer l'accès au fichier. En comparaison de la RAM, un disque dur est lent en lecture. Si un fichier compressé contient 10x moins d'informations que son équivalent non-compressé, la lecture de ses informations sera plus rapide. Le facteur 10 n'est pas nécessairement vrai ici. Dans le cas de petits fichiers, la différence n'est pas aussi marquante puisqu'il faut ajouter au temps de lecture le temps que l'OS prend à le retrouver dans le disque.
Comment compresser?
Il existe de multiple manière d'enlver de l'ormation dans un fichier, avec ou sans perte d'information.
Les schémas ci-dessous explique deux approches différentes avec perte d'information: celle du GIF[3] et celle du JPEG[4].
GIF
La compression utilisée dans les GIF est une des plus simple à comprendre et se base sur le même principe que les images à colorier.
- On définit une palette de couleurs numérotées à utiliser.
- On retire l'information de couleur des pixels et on la remplace par un nombre correspondant à la couleur de la palette.
Le choix des couleurs est déterminant pour conserver l'aspect général de l'image. Les dégradés sont typiquement évacuées au profit de plage de couleurs unies. Le poids du fichier est fortement diminué: d'un fichier contenant 16 blocs de 24 bits, on passe à un fichier ne contenant plus que 4 blocs de 24 bits et 16 blocs de 2 bits dans ce cas. Les blocs de 2 bits sont les pixels, contenant un nombre de 0 à 4, permettant de retrouver la bonne couleur à appliquer.
JPEG
https://en.wikipedia.org/wiki/Image_compression
https://en.wikipedia.org/wiki/Image_file_formats
https://en.wikipedia.org/wiki/Comparison_of_graphics_file_formats
https://en.wikipedia.org/wiki/Data_compression
Comparaison
Original | JPEG 20% | GIF 12 couleurs |
---|---|---|
![]() |
Photos
- original, 417.2 kB
PNG
- 1.9 MB
JPEG
Le JPEG utilise une compression spaciale des informations de l'image.
- qualité à 60% - 163 kB
- qualité à 40% - 157.5 kB
- qualité à 20% - 140.8 kB
- qualité à 3% - 73.2 kB
GIF
- palette de 256 couleurs - 1.1 MB
- palette de 102 couleurs - 970.7 kB
- palette de 12 couleurs - 651.9 kB
Graphique
- original, 30.3 kB
JPEG
- qualité à 60% - 14.5kB
- cqualité à 20% - 11,3kB
- qualité à 3% - 5.6kB
GIF
- palette de 20 couleurs - 40.1kB
- palette de 5 couleurs - 37.3kB
- palette de 20 couleurs - 21.2kB
Références
- ↑ La notion fondamentales de l'image en informatique sont expliquée sur cette page: les unités en informatique, le pixel est .
- ↑ Les informations stockées dans une image sur le disque ne sont en rien différentes de celle d'un fichier son, d'une vieo, d'un programme ou d'un driver. C'est ce header et/ou à l'extension de fichier qui vont permettre de lire correctement un fichier.
- ↑ GIF: Graphics Interchange Format, voir wikipedia.
- ↑ JPEG: Joint Photographic Experts Group, voir wikipedia.