Codage des pixels de l’image en noir et blanc

Le codage le plus simple de l’image est celui en noir et blanc. Dans ce type de codage, la couleur est encodée sur un bit (=binary digit) qui peut prendre 2 valeurs (vrai ou faux, 0 ou 1, blanc ou noir, ouvert ou fermé… etc.)

Pour une image matricielle en noir et blanc, telle que votre image initiale1.png, chaque pixel est encodé par 1 bit noir ou blanc. Le format le plus élémentaire d’image en noir et blanc est le format .pbm (Portable Bit Map).

Vous disposez du fichier carré8×8.pbm qui correspond à un carré blanc de 8 X 8 pixels. Vous allez manipuler l’image avec le logiciel EditHexa ou éditeur en ligne HexEd.it.

Télécharger l’image zippé ci dessous, pensez à la dézipper et à l’enregistrer dans votre dossier.

Vous allez créer une image en manipulant son encodage. Pour chaque étape, votre compte-rendu comportera la copie d’écran de l’encodage et l’image obtenue.

A faire vous-même 1 : le codage d’un carré blanc

Lancez le logiciel EditHexa (ou HexEd.it en ligne) et ouvrez le fichier carré8×8.pbm

Dans la fenêtre centrale, la partie encadrée contient l’encodage en octets et à droite, il y a la traduction sous forme de texte selon la norme ASCII (à un code sur 7 ou 8 bits, correspond un caractère ou une commande)

Copie d’écran de EditHexa (pour HexEd.it, c’est le même principe)

A partir de ce fichier,

Quel est le nombre d’octets qui encodent l’entête de l’image ? (astuce : cliquer sur différents octets dans la fenêtre centrale et vérifier à droite, à quelle « partie » du fichier cela correspond)

Déterminez le nombre d’octets qui encodent l’image elle-même. Quelle valeur ont-ils ?

 

Vous avez vu précédemment qu’un octet de l’image (ou du texte de l’entête) correspond à un « nombre » à 2 éléments.

Exemples : le G de GIMP correspond à 47, l’espace entre les deux 8, c’est 20 ou le point correspond à 0A.

  • Le système décimal utilise 10 symboles (de 0 à 9) : c’est notre système habituel de numération.
  • Le système binaire utilise 2 symboles (0 et 1) : utilisé car en électronique, le courant passe ou pas.
  • Le système hexadécimal utilise 16 symboles (0 à 9 et A à F) : cela permet d’écrire des nombres plus longs avec moins de symboles à avantage pour le stockage en informatique. C’est l’idéal pour les images !

Pour faire le travail suivant, il va falloir convertir un octet écrit avec 8 bits dans le système binaire (donc une série de huit 0 ou 1) en sa correspondance dans le système hexadécimal.

Prenons l’exemple de 2 octets 0000 0000 et 0011 1101. (remarque, on on écrit le nombre binaire en 2 paquets de 4 )

Pour convertir ces octets dans le système hexadécimal, on utilise le tableau de conversion ci-dessous pour chaque paquet de 4.

  • 0000 0000 du système binaire devient 00 dans le système hexadécimal.
  • 0011 1101 du système binaire devient 3D dans le système hexadécimal.
Hexadécimal Binaire
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

A faire vous-même 2 : le codage d’un carré noir et d’un damier

Modifiez les bits des octets de l’image de manière à former un carré noir. (si besoin, revoir ce qui a été fait sur le codage d’un pixel dans la section précédente)

  • Avec l’outil en ligne HexEd.it, modifiez les valeurs des octets de l’image.
  • Avec EditHexa : Utilisez menu Outils avancés > manipuler les bits ou modifiez directement les valeurs dans la fenêtre centrale.

Enregistrez votre image sous le nom carrénoir.pbm

Vérifiez votre manipulation en ouvrant le fichier avec Photofiltre ou Gimp (Par défaut, les fichiers du format .pbm sont masqués : cliquez sur le menu déroulant « images les plus courantes » puis sélectionnez « toutes les images »)

Pour obtenir un carré 8×8 à rayure, il faut par exemple que la première ligne soit noire. Ce sera donc une suite de huit bits à 1, c’est-à-dire un octet dont tous les bits valent 1 qu’on peut écrire 1111 1111 ou alors FF.
La deuxième ligne doit être blanche, donc c’est l’octet 0000 0000 ou 00 dans le système hexadécimal.
Et ainsi de suite…

Procédez de la même façon pour obtenir un damier que vous appellerez damier.pbm
astuce : au brouillon, réalisez un tableau de 8×8, coloriez les cases noires du damier que vous voulez obtenir.

A faire vous-même 3 : le codage de l’initiale

Avec Photofiltre ou Gimp, ouvrez l’image initiale2.png créée à la séance précédente. Affichez la grille de repérage avec un pas de 2 pixels.

Avec EditHexa ou HexEd.it, modifiez l’encodage de l’image carré8×8.pbm de manière à reproduire le motif de votre initiale2.png    Vous obtenez alors votre image (vérifiez avec Photofiltre) sur 8 X 8 pixels.