(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Le but de cette activité est de programmer et d'appliquer des filtres sur des images :
L'application d'un filtre consiste à transformer une image en modifiant les composantes R,G,B de chacun de ses pixels.
1. Exécuter la cellule ci-dessous, qui permet :
NB: Vous pouvez réexécuter la cellule pour obtenir une autre image (choix aléatoire dans une bibliothèque d'images de la ville de Strasbourg).
# import du module permettant la gestion des images
from PIL import Image
#ouverture de l'image
from random import randint
Strasbourg = Image.open('img/Strasbourg/Strasbourg'+str(randint(1,10))+'.jpg')
#affichage du format, du type et de la dimension de l'image
print("Format:",Strasbourg.format,"\nMode:",Strasbourg.mode,"\nDimensions:",Strasbourg.size) ;
#affichage de l'image
Strasbourg
2. Pour éclaircir une image, on peut augmenter de 50% les composantes couleurs de chaque pixel.
$\;\;\;$a. Suivre la vidéo suivante, qui détaille la fonction Python eclaircissement donnée ci-dessous.
$\;\;\;$b. Exécuter les deux cellules ci-dessous, pour appliquer la fonction eclaircissement à l'image Strasbourg.
def eclaircissement(im_originale):
"""
fonction qui renvoie l'image im_originale éclaircie
"""
# récupération des dimensions de l'image originale
L,H = im_originale.size
# création d'une image vierge, de même format et même dimension que l'image initiale
im_modifiee = Image.new( mode=im_originale.mode , size=(L,H) )
# ouverture de l'accès aux pixels des deux images
pix_origine = im_originale.load()
pix_modifie = im_modifiee.load()
# on parcourt tous les pixels des images
for x in range(L):
for y in range(H):
R,G,B = pix_origine[x,y] #récupération des composantes R,G,B du pixel original
R = int(R*1.5)
G = int(G*1.5)
B = int(B*1.5)
pix_modifie[x,y] = R,G,B #écriture des composantes R,G,B du pixel modifié
# on renvoie l'image modifiée
return im_modifiee
eclaircissement(Strasbourg)
3. Pour assombrir une image, on peut diminuer de 50% les composantes couleurs de l'image d'origine.
$\;\;\;$Écrire une fonction Python assombrissement qui permet d'assombrir une image, puis tester cette fonction.
$\;\;\;$Aide : On pourra commencer par effectuer un copier/coller de la fonction eclaircissement puis l'adapter.
# Ecrire ici la fonction assombrissement
# Tester ici un appel à la fonction assombrissement
4. Le principe du filtre rouge consiste à conserver les composantes rouges des pixels de l'image et à remplacer les autres par $0$.
$\;\;\;$a. Écrire une fonction Python filtre_R qui applique le filtre rouge à une image, puis tester cette fonction.
# Écrire ici la fonction filtre_R
# Tester ici un appel à la fonction filtre_R
$\;\;\;$b. Écrire sur le même principe des fonctions Python filtre_G et filtre_B pour les filtres vert et bleu.
# Écrire ici la fonction filtre_G
# Tester ici un appel à la fonction filtre_G
# Écrire ici la fonction filtre_B
# Tester ici un appel à la fonction filtre_B
5. Dans cette question, on souhaite convertir une image couleur en image en niveau de gris.
$\;\;\;$En RGB, on obtient un pixel en niveau de gris lorsque ses 3 composantes couleur sont égales.
$\;\;\;$a. Une première méthode consiste à remplacer chacune des composantes couleur d'un pixel par la moyenne des trois composantes initiales.
$\;\;\;\;\;\;$Écrire une fonction Python gris_rapide qui effectue cette conversion.
$\;\;\;\;\;\;$Tester cette fonction.
# Écrire ici la fonction gris_rapide
# Tester ici un appel à la fonction gris_rapide
$\;\;\;$b. La perception des composantes couleur par l'oeil humain diffère selon ces couleurs.
$\;\;\;\;\;\;$Ainsi, l'organisme CIE (Commission Internationale de l'Éclairage) préconise la méthode suivante pour convertir une image en niveau de gris :
Conversion en niveau de gris :
On attribue à chaque composante couleur la valeur obtenue en additionnant :
21,25% de la valeur de la composante rouge initiale;
71,54% de la valeur de la composante verte;
7,21% de la valeur de la composante bleue.
$\;\;\;\;\;\;$Écrire une fonction Python gris_precis qui réalise cette conversion.
# Écrire ici la fonction gris_precis
# Tester ici un appel à la fonction gris_precis
6. Pour obtenir le négatif d'une image, on remplace chaque composante de chaque pixel par la différence entre 255 et cette composante initiale.
$\;\;\;$Écrire une fonction Python negatif qui renvoie le négatif d'une image.
# Écrire ici la fonction negatif
# Tester ici un appel à la fonction negatif
7. Dans cette question, on souhaite convertir l'image en noir et blanc (sans niveaux de gris).
$\;\;\;$a. Rappeler les codes R,G,B correspondant respectivement au noir et au blanc.
$\;\;\;$b. On décide qu'un pixel sera blanc si et seulement si la moyenne de ses composantes initiales est supérieure ou égale à 128.
$\;\;\;\;\;\;$Ecrire une fonction Python NB qui réalise cette transformation.
# Écrire ici la fonction NB
# Tester ici un appel à la fonction NB
Pour démarrer l'activité sur le traitement d'images n°2 (Composition d'images) : Cliquer ici
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/