MANIPULATIONS D`IMAGES AU FORMAT
Transcription
MANIPULATIONS D`IMAGES AU FORMAT
Informatique TP 7 MANIPULATIONS D’IMAGES AU FORMAT MATRICIEL Images formées de pixels Pour travailler sur une image à l’aide de l’outil informatique, une méthode consiste à considérer celle-ci comme une juxtaposition de points de couleurs, appelés pixels (pour « picture elements »). Ainsi, on représente une image sous la forme d’un tableau (souvent appelé matrice) de points colorés (aussi nommé « carte de points », bitmap en anglais). Dans une telle représentation : . les dimensions du tableau correspondent aux dimensions du « quadrillage » ; . chaque élément du tableau est défini par un coefficient, qui symbolise la couleur du pixel correspondant. 1 Manipulation d’images au format PBM/PGM 1. Le format PBM (portable bitmap file format) est un format d’images bitmap en noir et blanc. On peut très facilement définir une image au format PBM dans un fichier texte. Un tel fichier comprend : • le préambule de l’image dans lequel figurent : le « nombre magique » P1 suivi d’un retour à la ligne ; la largeur de l’image en pixels (en base 10) suivie d’un espace ; la hauteur de l’image en pixels (en base 10) suivie d’un retour à la ligne. • la trame de l’image : celle-ci est décrite ligne par ligne, chaque pixel de la trame étant représenté par le caractère 0 (pour blanc) ou 1 (pour noir). Nota bene . Les espaces et les retours à la ligne figurant dans la trame ne sont pas pris en compte dans la construction de l’image. . On peut aussi faire des commentaires qui sont alors précédés d’un # : ceux-ci ne seront pas, non plus, lus dans l’image. . Aucune ligne ne doit dépasser 70 caractères. Exemple : Ci-dessous, le fichier présenté à gauche permet de définir l’image à droite. 2. Le format PGM (portable graymap file format) est utilisé pour des images en niveaux de gris. La définition d’une image au format PGM peut également se faire dans un fichier texte, qui contient : • le préambule de l’image dans lequel figurent : le « nombre magique » P2 suivi d’un retour à la ligne ; la largeur de l’image en pixels (en base 10) suivie d’un espace ; la hauteur de l’image en pixels (en base 10) suivie d’un retour à la ligne ; la valeur maximale utilisée pour coder le gris (inférieure à 65536). • la trame de l’image : celle-ci est décrite ligne par ligne, chaque pixel de la trame étant représenté par un caractère compris entre 0 (pixel noir) et la valeur maximale précédemment indiquée (pixel blanc). Chaque niveau de gris est codé par une valeur entre ces deux extrêmes, proportionnellement à son intensité. Nota bene . Le codage des différents pixels pouvant se faire à l’aide de nombres s’écrivant avec plus de deux chiffres, un caractère d’espacement devra séparer deux valeurs de pixels. . Les autres « particularités » du codage au format PBM restent valables en PGM : possibilité d’écrire des commentaires, retour à la ligne non pris en compte, taille maximale d’une ligne. Exemple : Le fichier présenté ci-dessous permet de définir une bien belle image... 2 Construction d’une image avec Python Pour un « grand » nombre de pixels Définir une image pixel par pixel comme dans les exemples précédents pose rapidement des problèmes : dès que le nombre de pixels est important, l’écriture d’un tel fichier devient fastidieuse. Il est alors légitime d’espérer pouvoir définir des lignes de pixels de façon algorithmique. Or, Python permet de manipuler un fichier texte en lecture et/ou en écriture : il suffit d’écrire ce texte au format PBM ou PGM pour construire une image de cette façon. ,→ A vous de jouer ! Définir, à l’aide de Python, l’image suivante : Il s’agit d’un carré dont chaque côté comporte 256 pixels, chaque ligne de pixels étant de niveau de gris constant, depuis le niveau 0 jusqu’au niveau 255. 3 Image cachée dans une autre Dans le dossier TP 7 des Documents en consultations se trouve un fichier nommé Igruat.pgm qui contient une belle photographie de votre professeur de physique préféré. Celle-ci a été retouchée, et « contient » une image cachée : 1. dans un premier temps, on a pris une photo de Monsieur Gruat, que l’on a converti au format PGM ; 2. on a considéré, par ailleurs, une image en noir et blanc, au format PBM, comportant le même nombre de pixels que la photo précédente ; 3. ensuite, les pixels de la photo de Monsieur Gruat ont été très légèrement modifiés : on ajoute aux pixels dont le coefficient de niveau de gris est pair la valeur du pixel situé au même endroit dans l’image en noir et blanc ; si un pixel a un coefficient de niveau de gris est impair, on lui retranche 1, puis on lui ajoute la valeur du pixel situé au même endroit dans l’image en noir et blanc. De cette manière, la modification qu’a subi la photo de Monsieur Gruat est très peu perceptible à l’œil nu, mais les coefficients des pixels qui composent l’image modifiée contiennent les informations qui définissent l’image cachée. ,→ A vous de jouer ! Découvrez ce qui se cache derrière ce beau visage juvénile...