Aller au contenu
Technologie · Seconde · Photographie Numérique et Image · 3e Trimestre

Retouche d'image avec Python

Les élèves utilisent des bibliothèques Python pour appliquer des transformations simples aux images.

Programmes OfficielsMEN: Lycee - Photographie numériqueMEN: Lycee - Langages et programmation

À propos de ce thème

La retouche d'image avec Python permet aux élèves de passer de la théorie algorithmique à la pratique concrète. En utilisant la bibliothèque Pillow (PIL), ils manipulent des objets Image, accèdent aux pixels individuels et appliquent des transformations : ajustement de luminosité, rotation, recadrage, application de filtres. Chaque ligne de code produit un changement visible, ce qui rend la programmation tangible et gratifiante.

Ce sujet s'inscrit dans le volet « Langages et programmation » du programme de SNT tout en exploitant le thème de la photographie numérique. Les élèves mobilisent des structures de contrôle (boucles for imbriquées, conditions) et des notions mathématiques (opérations sur les composantes RVB, calculs de moyennes) dans un contexte qui donne du sens à chaque concept.

L'apprentissage actif est ici naturel : la programmation est par essence une activité de construction. Travailler en binôme sur un mini-projet de filtre permet la discussion technique, le débogage collaboratif et l'appropriation des concepts par la manipulation directe.

Questions clés

  1. Comment écrire un script Python pour modifier automatiquement la luminosité et le contraste d'une image ?
  2. Quels principes mathématiques sous-tendent les opérations de modification pixel par pixel d'une image ?
  3. Comment concevoir un filtre d'image original en combinant des transformations élémentaires ?

Objectifs d'apprentissage

  • Calculer les nouvelles valeurs RVB d'un pixel après modification de la luminosité et du contraste.
  • Concevoir un script Python qui applique une transformation géométrique simple (rotation, redimensionnement) à une image.
  • Créer un filtre d'image original en combinant au moins deux transformations élémentaires et en justifiant le choix des paramètres.
  • Analyser l'impact de différents paramètres (facteur de luminosité, facteur de contraste) sur la perception visuelle d'une image.
  • Expliquer le rôle de la bibliothèque Pillow dans l'accès et la manipulation des données pixel d'une image numérique.

Avant de commencer

Bases de la programmation avec Python

Pourquoi : Les élèves doivent maîtriser les variables, les types de données simples (nombres, chaînes), les structures de contrôle (boucles for, conditions if/else) pour écrire les scripts de manipulation d'images.

Représentation des couleurs

Pourquoi : Une compréhension du modèle de couleur RVB est nécessaire pour manipuler les valeurs des pixels.

Vocabulaire clé

PixelPlus petite unité d'une image numérique. Chaque pixel possède une couleur définie par des valeurs (souvent RVB).
Composante RVBValeurs Rouge, Vert, Bleu qui, combinées, déterminent la couleur d'un pixel. Chaque composante a généralement une valeur entre 0 et 255.
LuminositéDegré de clarté ou d'obscurité d'une image. Augmenter la luminosité ajoute de la lumière à chaque pixel.
ContrasteDifférence d'intensité lumineuse entre les zones claires et sombres d'une image. Augmenter le contraste accentue ces différences.
Bibliothèque PillowUne bibliothèque Python qui permet d'ouvrir, manipuler et sauvegarder de nombreux formats d'images.

Attention à ces idées reçues

Idée reçue courantePython modifie directement le fichier image sur le disque dès qu'on change un pixel.

Ce qu'il faut enseigner à la place

Python travaille sur une copie de l'image en mémoire (objet Image). Les modifications ne sont sauvegardées que lorsqu'on appelle explicitement la méthode save(). Faire modifier puis afficher sans sauvegarder, puis comparer avec le fichier original, rend cette distinction claire.

Idée reçue couranteAugmenter la luminosité consiste simplement à ajouter une valeur à chaque composante RVB.

Ce qu'il faut enseigner à la place

Ajouter une constante fonctionne en première approximation, mais il faut plafonner à 255 pour éviter un dépassement (overflow). Tester sans plafonnement et observer les artefacts visuels permet aux élèves de comprendre la nécessité de la fonction min().

Idée reçue couranteLes bibliothèques Python font tout le travail, il n'y a rien à comprendre.

Ce qu'il faut enseigner à la place

Les bibliothèques automatisent les opérations, mais comprendre ce qu'elles font (parcours de pixels, calculs RVB) est indispensable pour les utiliser correctement et pour déboguer. Recoder un filtre simple sans bibliothèque, pixel par pixel, ancre cette compréhension.

Idées d'apprentissage actif

Voir toutes les activités

Liens avec le monde réel

  • Les photographes professionnels utilisent des logiciels comme Adobe Photoshop, qui s'appuient sur des principes similaires de manipulation de pixels et de valeurs de couleur, pour améliorer leurs clichés avant publication.
  • Les développeurs de jeux vidéo créent des outils internes pour générer ou modifier rapidement des textures et des éléments graphiques, en appliquant des filtres et des ajustements de couleur pour obtenir l'esthétique désirée.
  • Les ingénieurs en vision par ordinateur développent des algorithmes pour le traitement d'images dans des applications variées, comme la reconnaissance faciale ou l'analyse d'images médicales, nécessitant une compréhension fine des transformations pixel par pixel.

Idées d'évaluation

Vérification rapide

Demandez aux élèves d'écrire un court script Python qui charge une image, puis affiche les valeurs RVB des 5 premiers pixels. Posez la question : 'Comment interprétez-vous ces valeurs pour décrire la couleur de ces pixels ?'

Billet de sortie

Sur une fiche, demandez aux élèves de décrire en une phrase comment ils modifieraient le script pour rendre une image plus sombre. Ensuite, demandez-leur de nommer une transformation qu'ils aimeraient appliquer à une image et pourquoi.

Évaluation par les pairs

Les élèves travaillent en binômes sur un filtre personnalisé. Après avoir terminé, ils échangent leurs scripts et leurs images résultantes. Chaque binôme doit écrire une courte critique constructive sur le filtre de l'autre : 'Ce que j'ai aimé, c'est... et une suggestion pour l'améliorer serait...'

Questions fréquentes

Comment modifier la luminosité d'une image avec Python ?
Avec la bibliothèque Pillow, on utilise ImageEnhance.Brightness(image).enhance(facteur) où un facteur supérieur à 1 augmente la luminosité et inférieur à 1 la diminue. On peut aussi parcourir chaque pixel et ajouter une valeur à chaque composante RVB, en plafonnant à 255 avec min(). La première méthode est plus rapide, la seconde plus pédagogique.
Quelle bibliothèque Python utiliser pour la retouche d'image au lycée ?
Pillow (PIL) est la bibliothèque de référence pour le traitement d'image en Python au lycée. Elle est simple à installer (pip install Pillow), bien documentée et suffisante pour les opérations du programme de SNT : chargement, modification de pixels, filtres, recadrage et sauvegarde. Pour des usages plus avancés, OpenCV offre davantage de fonctionnalités.
Comment appliquer un filtre sépia en Python ?
Le filtre sépia transforme d'abord l'image en niveaux de gris, puis teinte chaque pixel avec des tons chauds. La formule classique applique des coefficients aux composantes : nouveau_R = min(gris × 1.2, 255), nouveau_V = min(gris × 1.0, 255), nouveau_B = min(gris × 0.8, 255). Cela donne une dominante jaune-brun caractéristique des photographies anciennes.
Pourquoi l'apprentissage actif est-il efficace pour enseigner Python et le traitement d'image ?
La programmation est une compétence qui s'acquiert par la pratique. Coder un filtre soi-même, observer le résultat, corriger ses erreurs et comparer avec un camarade crée un cycle d'apprentissage complet. Le retour visuel immédiat (l'image transformée) renforce la motivation et permet de vérifier sa compréhension sans attendre l'évaluation de l'enseignant.

Modèles de planification pour Technologie