MANIPULATIONS D`IMAGES AU FORMAT

publicité
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...
Téléchargement