Conception d’images dans un éditeur hexadécimal¶
Cette activité, prévue pour deux périodes de 45 minutes en salle d’informatique, tourne autour de la conception d’images au format BMP
.
La manipulation des images se fait au travers d’un éditeur hexadécimal et ne demande pas de connaissances en programmation.
Caractéristiques
Nom : Conception d’images dans un éditeur hexadécimal
Durée :
Thème : Représentation de l’information
Objectifs d’apprentissage : L’objectif général de la leçon est que les élèves soient capables de concevoir des fichiers au travers d’un éditeur hexadécimal et en suivant un format de données spécifié. Voir ci-dessouspour des objectifs détaillés.
Notions fondamentales :
Approche pédagogique : Débranchée, mais pourrait aussi être faite en Python avec une librairie comme Pillow
Matériel : voir ci-dessous
Niveau :
à compléter
Mots-clés :
à compléter
Dynamique (groupe / individuel) :
à compléter
Taille du groupe :
à compléter
Pré-requis : La notion de bit et d’octet / Les fichiers en tant que séquences d’octets.
Objectifs détaillés¶
Les objectifs spécifiques sont les suivants:
Les élèves sont capables d’expliquer que les fichiers, peu importe leur type, sont constitués de séquences de bits regroupés en octets.
Les élèves sont capables de lire et d’écrire des octets en notation hexadécimale.
Les élèves sont capables de concevoir des images au format
BMP
étant donné un fichier modèle.Les élèves sont capables de déchiffrer des couleurs exprimées au format
BGR
/RGB
.Les élèves sont capables d’expliquer les principes généraux de la compression de données sans pertes.
Les élèves sont capables de concevoir des images au format
BMP
utilisant une palette de couleur étant donné un fichier modèle.
Matériel¶
Éditeur¶
Cette activité nécessite l’usage par les élèves d’un éditeur hexadécimal. Dans ce document, nous conseillons l’utilisation de l’éditeur Hexed.it, une application web qui ne nécessite aucune installation.
Il existe d’autres solutions, notamment l’éditeur Hex Fiend sur Mac OS X, qui offre une interface minimaliste suffisante pour le travail des élèves.
Fichiers¶
Fichier modèle 4 pixels par 4 pixels: files.modulo-info.ch/bmp/petit.bmp
Fichier modèle 8 pixels par 8 pixels: files.modulo-info.ch/bmp/grand.bmp
Fichier modèle 8 pixels par 8 pixels, avec palette de couleurs: files.modulo-info.ch/bmp/palette.bmp
Resources¶
Sélectionneur de couleurs BGR: files.modulo-info.ch/bmp/couleurs.html
Références théoriques pour l’enseignant·e¶
L’activité nécessite l’utilisation d’un éditeur hexadécimal par les élèves, ce qui suppose une introduction à la notation hexadécimale. L’article Wikipédia sur le sujet est très complet.
Le format d’image utilisé dans le cadre de cette activité est le format BMP
.
Une bonne introduction au format est disponible sur Wikipédia.
Au besoin, la version anglaise de l’article entre dans plus de détails du format au travers d’exemples.
Déroulement
Double lecture des fichiers (5 mn) où il s’agit de faire comprendre qu’une image peut être affichée en tant qu’image ou lue en tant que séquence d’octets.
Introduction à la notation hexadécimale (10 mn) où l’enseignant·e explique la notation hexadécimale utilisée dans l’éditeur.
Prise en main de l’éditeur et découverte du format BMP (10 mn).
Formalisation (20 mn) des divers algorithmes de tri.
Exercices (10-15 mn) d’application des algorithmes.
Conclusion (5-10 mn) en bouclant la boucle sur l’archivage informatisé et les pratiques (positives et négatives) qu’il permet.
Double lecture des fichiers¶
Durée : 5 mn
L’enseignant·e invite les élèves à télécharger le premier fichier utilisé à l’adresse: files.modulo-info.ch/bmp/petit.bmp.
Puis, l’enseignant·e invite les élèves à ouvrir le fichier à l’aide d’une visionneuse d’image (par exemple Aperçu
sur Mac OS X).
Il est à noter qu’il faut bien zoomer pour voir l’image étant donné sa petite taille.
L’enseignant·e montre qu’il s’agit d’une image de 4 par 4 pixels, tous de couleur blanche. Il ou elle en profite pour donner une définition du terme “pixel”.
Le pixel est plus petit élément qui compose une image. Chaque pixel d’une image est un carré de couleur qui occupe une place dans la grille de l’image. Le terme provient de l’anglais picture element.
Après cela, l’enseignant·e invite les élèves à ouvrir l’image dans un éditeur hexadécimal (par exemple Hexed.it). L’enseignant·e explique aux élèves ce qu’ils ont sous les yeux: la séquence d’octets qui représente l’image. L’enseignant·e souligne deux façons différentes de visualiser le même fichier:
Son interprétation en tant qu’image dans la visionneuse d’image, et
Son interprétation en tant que séquence d’octets dans l’éditeur hexadécimal.
S’il est possible de le faire dans l’éditeur, l’enseignant·e montre les bits qui se cachent sous la notation hexadécimale des octets. Dans Hexed.it, les bits d’un octet sont affichés dans la colonne de gauche de l’éditeur.
Introduction à la notation hexadécimale¶
Durée : 10 mn
L’enseignant explique la notation hexadécimale utilisée dans l’éditeur.
Alors que la notation binaire est basée sur la base 2, la notation hexadécimale est basée sur la base 16.
Les symboles utilisés pour représenter les 10 premiers chiffres sont les mêmes qu’en base 10: 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
et 9
.
Pour représenter les chiffres suivants, la notation fait appel à des lettres: A
, B
, C
, D
, E
et F
.
La lecture et l’édition d’octets dans cette notation est en effet bien plus rapide qu’en notation binaire. À la place d’une série de 8 symboles en notation binaire, il suffit de 2 chiffres. De plus, chacun de ces chiffres correspond exactement à 4 bits, ce qui fait que chaque symbole peut-être converti en bits de manière indépendante.
Symbole |
Valeur |
Séquence de bits |
---|---|---|
|
0 |
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
L’enseignant peut proposer aux élèves un exercice de conversion entre base 2 et base 16. Par exemple :
Convertir
00
depuis la notation héxadécimale au binaire en binaireConvertir
11111111
en hexadécimalConvertir
3C
en binaireConvertir
00010010
en hexadécimal
Prise en main de l’éditeur et découverte du format BMP¶
Durée : 10 minutes
L’enseignant·e présente ensuite une introduction au format BMP au travers du petit fichier d’exemple (petit.bmp
) sur l’éditeur.
L’enseignant·e indique que les 54 premiers octets du fichier constituent l’entête du fichier. Cette entête contient notamment des informations sur les dimensions du fichiers, les couleurs utilisées, et ainsi de suite.
Les 48 octets suivants représentent les pixels de l’images.
Chacun des 16 pixels est encodé sur 3 octets (au format Bleu-Vert-Rouge
).
Initialement, tous les octets sont à FF
, et donc tous les pixels sont blancs.
L’enseignant·e indique que l’on utilise FFFFFF
pour dénoter un pixel blanc, et indique
aux élèves de remplacer les octets du premier pixel par 000000
puis de télécharger le fichier et de l’ouvrir dans la visionneuse afin d’observer les changements.
Le résultat attendu est le suivant.

Exercice¶
L’enseignant·e présente l’ordre dans lequel apparaissent les pixels: de gauche à droite et de bas en haut. Les élèves sont ensuite amenés à reproduire un damier noir et blanc, tel que présenté sur l’image suivante.

Points d’attention¶
S’ils ne sont pas attentifs, les élèves peuvent se retrouver avec une images constituée de deux colonnes noires et deux colonnes blanches intercalées. En effet, il s’agit de l’image obtenue en alternant pixels noirs et blancs.
Les élèves peuvent se retrouver à ne plus pouvoir lire les fichiers qu’ils génèrent. En effet, une erreur dans le format peut amener à un fichier illisible. Pour résoudre ce problème, il s’agit simplement de vérifier que le fichier a bien le nombre attendu d’octets, et que les octets d’entête ne sont pas modifiés.
Les élèves peuvent obtenir des pixels aux couleurs inattendues suite à un décalage d’un ou deux octets dans l’encodage des pixels. Dans ce genre de cas, après l’erreur traitée, les élèves peuvent être amenés à documenter ce qui s’est passé: Quelle était la couleur obtenue, quel était son code ?
Étape 4 : Représentation des couleurs [5 minutes]¶
Étape 5 : Reproduction d’une image [20 minutes]¶
Étape 6 : Utilisation d’une palette de couleurs [10 minutes]¶
Étape 7 : Conception libre d’une image avec palette de couleur [30 minutes]¶
Pistes pour aller plus loin¶
Stéganographie: Utiliser les bits de poids faible des canaux de couleurs des pixels pour y cacher un message.
Compression avec codage par plage, qui est aussi supportée au format BMP.
Compression avec pertes et le format JPEG.
Images vectorielles.