Livre_silo 30 août 2013 16:32 Page 360
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
360
Informatique pour tous
cercle.pdf
cercle4.pdf
cercle5.pdf
Figure A.21
Représentation d’une image par une matrice de bits
Cette méthode n’ est bien sûr pas spécifique au cercle et fonctionne avec un tracé quelconque. On est donc en mesure de remplacer une image arbitraire par un ensemble fini de
pixels (10 × 10 dans cet exemple). Pour une image en noir et blanc, cet ensemble de pixels
se traduit directement en une matrice de bits, 0 pour noir et 1 pour blanc par exemple. On
parle donc de représentation bitmap des images.
Si on veut introduire plus de nuances, on peut commencer par attribuer à chaque pixel
non plus la couleur noir ou blanc, mais un niveau de gris représenté par un entier entre
0 (pour noir) et 255 (pour blanc). On choisit cette échelle car un pixel se représente alors
exactement sur un octet et cela suffit à exprimer des nuances quasi indiscernables à l’œil
nu. On verra en fin de TP comment cette représentation s’étend à des pixels colorés.
Les images seront lues et écrites dans des fichiers au moyen des commandes présentées en
annexe B.2. On travaille pour l’instant en niveaux de gris : si un objet im de type Image est
en couleurs, on peut le convertir en niveaux de gris via la méthode im.convert('L').
On suppose à partir de maintenant qu’on travaille sur le tableau numpy.array qui contient
les valeurs des pixels entre 0 et 255. On ne mentionne pas les fonctions d’ouverture, de
visualisation et d’enregistrement d’images.
A.7.1 Traitement pixel par pixel
On commence par une opération simple : effacer l’image, autrement dit rendre tous ses
pixels blancs :
def effacer(image):
for ligne in image:
for i in range(len(ligne)):
ligne[i] = 255
On peut aussi vouloir créer le négatif (au sens photographique) de l’image. Cela consiste
à inverser le blanc et le noir, le gris clair et le gris foncé, etc. Une simple fonction affine de
coefficient directeur négatif appliquée à la valeur des pixels fait l’affaire :
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
360
Informatique pour tous
cercle.pdf
cercle4.pdf
cercle5.pdf
Figure A.21
Représentation d’une image par une matrice de bits
Cette méthode n’ est bien sûr pas spécifique au cercle et fonctionne avec un tracé quelconque. On est donc en mesure de remplacer une image arbitraire par un ensemble fini de
pixels (10 × 10 dans cet exemple). Pour une image en noir et blanc, cet ensemble de pixels
se traduit directement en une matrice de bits, 0 pour noir et 1 pour blanc par exemple. On
parle donc de représentation bitmap des images.
Si on veut introduire plus de nuances, on peut commencer par attribuer à chaque pixel
non plus la couleur noir ou blanc, mais un niveau de gris représenté par un entier entre
0 (pour noir) et 255 (pour blanc). On choisit cette échelle car un pixel se représente alors
exactement sur un octet et cela suffit à exprimer des nuances quasi indiscernables à l’œil
nu. On verra en fin de TP comment cette représentation s’étend à des pixels colorés.
Les images seront lues et écrites dans des fichiers au moyen des commandes présentées en
annexe B.2. On travaille pour l’instant en niveaux de gris : si un objet im de type Image est
en couleurs, on peut le convertir en niveaux de gris via la méthode im.convert('L').
On suppose à partir de maintenant qu’on travaille sur le tableau numpy.array qui contient
les valeurs des pixels entre 0 et 255. On ne mentionne pas les fonctions d’ouverture, de
visualisation et d’enregistrement d’images.
A.7.1 Traitement pixel par pixel
On commence par une opération simple : effacer l’image, autrement dit rendre tous ses
pixels blancs :
def effacer(image):
for ligne in image:
for i in range(len(ligne)):
ligne[i] = 255
On peut aussi vouloir créer le négatif (au sens photographique) de l’image. Cela consiste
à inverser le blanc et le noir, le gris clair et le gris foncé, etc. Une simple fonction affine de
coefficient directeur négatif appliquée à la valeur des pixels fait l’affaire :
