Représentation des images
numériques
Pour démarrer
Python doit utiliser un module supplémentaire pour faciliter la manipulation des images.
Un module est un ensemble de fonctions que l’on peut importer dans python comme par exemple le
module random que nous avons déjà utilisé.
Le module de manipulation d’images que nous allons utiliser s’appelle PIL. Elle propose un ensemble de
fonctions définies sous le nom “Image”. Ce module est installé par défaut avec
Vous devez donc, au début de votre programme, importer la bibliothèque avec les instructions : “from PIL
import Image”:
Ensuite, il suffit d’ouvrir un fichier image et de demander à l’afficher à l’aide des instructions
“Image.open(nom_de_fichier)” et “.show()”:
Remarquer que le chemin du fichier contient des " \\ ", car dans une chaine de caractère, le caractère « \ » est un
caractère spécial. Ainsi il est doublé afin de préciser que c’est bien le caractère « \ » que nous voulons utiliser.
Utilisation d’images exemples :
Enregistrer dans un même répertoire (par exemple : TPImages) les deux fichiers
images: couleurs.png et duck.jpg.
Mission 0 :
A l’aide du code exemple ci-dessus, ouvrir les deux images, l’une après l’autre.
Codage numérique d'une image – Les instructions de base
● Consulter la page wikipedia http://fr.wikipedia.org/wiki/Synthèse_additive
● Ouvrir l'image couleurs avec le logiciel Paint.
● Décrire succinctement les caractéristiques de l'image et expliquer le codage numérique
des couleurs.
➔ Bien noter qu’une image est composée de points positionnés à l’aide de coordonnées et que
la donnée stockée est un point avec une couleur précise codifiée selon 3 composantes (entre
parenthèses) : (R, G, B) : R : rouge, G : vert et B : bleu.
En python: Introduction aux instructions des images
Que renvoie la commande couleurs.size ? Quelle instruction permettrait de ne récupérer que la
largeur de l’image ? que sa hauteur ?
Réponse: …………………………………………………………………………………………
La commande couleurs.size permet de trouver les dimensions d'une image
Pour ne trouver que la largeur, on utilise couleurs.width et pour trouver la hauteur couleurs.height
………………………………………………………………………………………………………
Dans la commande pixel[i,j], que représente la valeur i ? la valeur j ? Que renvoie la commande
pixel[i,j] ?
Réponse: …………………………………………………………………………………………
La valeur i et j donne les coordonnées du pixel. Et la commande pixel[i,j] donne la
………………………………………………………………………………………………………
couleur selon le code RVB ou RGB
En vous aidant du tableau de couleurs (ou du lien suivant : https://htmlcolorcodes.com/fr/ ), indiquer
quels triplets codent la couleur rouge ? verte ? bleue ? noire ? blanche ?
Rouge : 255, 0, 0 Vert : 0,128,0 Bleu : 0,0,255 Noir : 0,0,0 Blanc : 255,255,255
Réponse: …………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
Comment code-t-on les nuances de gris ? Conjecturez en utilisant le tableau.
On code la couleur gris en ayant autant de vert que de rouge et de bleu.
Réponse: …………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
En explorant le tableau de couleurs, expliquer comment se font les mélanges de couleurs ?
Réponse: …………………………………………………………………………………………
Les mélanges de couleurs se font grâce à la superposition de vert, de rouge et de bleu.
………………………………………………………………………………………………………
Mission 1 : Le Canard se barre
Il est possible de modifier le tableau de pixels d’une image; Pour cela il suffit d’affecter à la bonne case
du tableau de pixels, un triplet correspondant à la couleur souhaitée:
1. Écrire un programme qui trace une ligne bleue sur la
première ligne de pixel de notre image.
2. Que faut-il modifier dans le programme précédent
pour colorer en bleu tous les pixels de la 1ère colonne de
cette image. Testez votre programme.
3. En vous aidant des deux programmes précédents,
coloriez en bleu TOUS les pixels de l’image
Mission 2 : Canard-Caméléon
Charger l'image 'duck.jpg'. Écrire un programme qui
transforme ses pixels jaunes en pixels bleus.
Mission 3 : Sans dessus-dessous
On souhaite créer une deuxième image qui représente le canard à
l’envers, le principe est le suivant:
● On crée une nouvelle image “vierge” (voir Indication)
● On recopie, sur cette image vierge, les pixels du canard à
l’endroit de façon à dessiner, pixel par pixel, le canard à
l’envers. On fera attention aux choix des nouvelles
coordonnées.
Indication: pour créer une nouvelle image “vierge” (par défaut, elle ne contiendra que des pixels noirs) il suffit
d’utiliser les instructions:
nouvelleImage = Image.new(“RGB”, (largeur,hauteur) )
Mission 4 : « Coucou, qui voilà ? »
Charger l'image 'duck.jpg'. Écrire un programme qui
décale tous les pixels de l'image de 100 pixels vers
gauche.
Mission 5 : Ville fantôme: Faîtes disparaître les véhicules !
On a décomposé une vidéo de circulation à l’entrée d’une ville en plusieurs captures d’images:
Vous pouvez récupérer les 11 captures d’images effectuées dans le dossier habituel:
Écrire un programme qui renvoie l’image de cette scène sans les véhicules.
Indication: on pourra réaliser une nouvelle image dont chaque pixel résulte de la moyenne des couleurs des
pixels de toutes les captures d’images
1. Expliquez pourquoi le calcul de la moyenne a permis de masquer les véhicules.
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
…………………………………………………………………………………………………………..
2. Essayez d’améliorer l’affichage en testant d’autres méthodes de calculs sur les pixels (l’utilisation de la
moyenne est peu pertinente, trouvez une nouvelle fonction qui donne moins de poids aux valeurs
exceptionnelle).