Voici une séquence faite en ICN (enseignement d'exploration proposé en seconde) sur le traitement d'image. Les buts sont :

  • découvrir la manière dont sont codées les images ;
  • s'initier à l'algorithmique et la programmation ;
  • manipuler des images pixel par pixel.

Avertissement

Cette séquence est la toute première que j'ai faite dans le cadre de l'ICN, et elle est trop compliquée. J'ai reproché aux élèves de n'avoir aucune autonomie durant ce travail, mais c'était ma faute : le sujet laissait peu de liberté, et surestimait les capacités des élèves.

Les difficultés que j'ai identifiées sont :

  • ils découvrent (quasiment) la programmation et Python (et donc manipuler des algorithme non triviaux est difficile) ;
  • à la moindre erreur, le programme ne se lance même pas (et ils découvrent Python, donc il est compliqué d'identifier et corriger les erreurs) ;
  • il n'y a pas de retour visuel immédiat en cas d'erreur (si l'image obtenue n'est pas celle désirée, ça n'est pas évident de comprendre ce qui s'est passé) ;
  • les TP que je leur propose ne leur laissent que très peu de degré de liberté.

Par opposition, la séquence de HTML et CSS qui a suivi s'est beaucoup mieux passée :

  • les élèves ont choisit le thème de leur site web (donc il étaient plus intéressés) ;
  • en cas d'erreurs, Firefox affiche quand même une page web (c'est moins décourageant qu'un programme qui refuse de se lancer) ;
  • ils ont un retour visuel immédiat en cas d'erreur (il est alors plus simple d'identifier et corriger cette erreur) ;
  • je leur laisse beaucoup plus de liberté dans la forme.

Je ne pense pas que je referai ce TP en ICN l'an prochain. Je la garde sous le coude si un jour j'enseigne l'ISN en terminale : ces élèves ont alors derrière eux sept ans d'algorithmique (commencée au collège), dont trois ans en Python (qui est, si on lit le programme de math entre les lignes, le langage de programmation recommandé).

Séquence

Le but des premières séances (TP 0 à 2) est de prendre en main Python, pour apprendre les différentes notions qui seront utiles pour le logiciel de traitement d'image. Le TP 3 est à part, dans la mesure où ce n'est pas de la programmation, mais la découverte des formats d'image. Les TP suivants concernent le logiciel de traitement d'image.

Contexte technique

Les élèves ont chacun leur ordinateur tournant sous GNU/Linux. Un dossier partagé a été mis en place pour distribuer des documents numériques et que récupérer les travaux de mes élèves.

Les séances durent deux heures, toutes les semaines.

TP 0

J'ai fait cette séance au bout de quelques semaines, quand je me suis rendu compte que les élèves ne savaient pas manipuler le système de fichier : ils n'ont aucune idée de l'endroit où a été enregistré un fichier sauvegardé depuis Thonny, où aller chercher un fichier téléchargé sur internet, ils ne savent pas comment copier un fichier d'un répertoire à l'autre, etc.

TP 1

Il s'agit de la première prise en main de Python, en réalisant un quizz (questions de culture générale).

TP 2

Dans ce TP, les élèves reprennent le principe du quizz du TP précédent (questions et réponses) mais le complexifient pour en faire un programme de calcul mental : les questions sont aléatoires, puis on pose plusieurs questions, avec des niveaux de difficulté différents, le score est calculé, etc.

Sont introduites dans ce TP les notions algorithmiques de variables, conditionnelle, boucle, etc.

TP 3

Cette séance est la seule qui ne met pas en œuvre la programmation : il s'agit de découvrir les différentes manières de coder une image (en particulier le codage pixel par pixel).

TP 4

Il s'agit de la première séance de manipulation d'images numériques avec Python, principalement de la lecture et de l'écriture d'images pixel par pixel.

TP 5

  • Durée : Trois séances, que l'on peut facilement étendre à six, voire plus.
  • Sujet (source)

Enfin, le logiciel de traitement d'image est réalisé. Je leur fournis un squelette de logiciel, et ils ajoutent peu à peu de plus en plus de fonctionnalités.

Pistes d'améliorations

  • Des notions d'algorithmique et programmation n'ont pas été abordé lors des premières séances (quizz et calcul mental), et sont nécessaire lors des dernières (traitement d'image). Il s'agit de :
    • notion de fonction ;
    • manipulation (simple) de listes ou tuples ;
    • comment débugger un programme.
  • Ce travail ne contient pas assez de travail théorique : les élèves apprennent et manipulent des notions durant les TP, mais à aucun moment ne font le bilan des notions apprises. Ils ont alors du mal à les réutiliser par la suite. Au minimum, un mémo de Python est nécessaire.
  • Comme déjà dit, ce travail laisse très peu de liberté aux élèves. Je ne vois pas comment améliorer ce point à moins de changer radicalement la séquence.

Exemples de transformations d'image

Une liste de transformation d'images pixel par pixel qu'il est possible de mettre en œuvre avec les élèves (ainsi que le code Python correspondant) est disponible dans le cadre du projet Jouets.

Téléchargement

  • Les énoncés du TP sont disponibles dans la partie Séquence.
  • Sources (les utilisateurs de Windows n'arrivant pas à décompresser l'archive peuvent télécharger le logiciel libre et gratuit 7zip).
  • Il est nécessaire d'avoir la classe pablo.sty pour compiler les sujets.