Codage d'une image au format bitmap

Introduction

Nous utilisons tous des images numériques. Ce TP vous propose de comprendre comment une image numérique de type bitmap est codée sous forme de nombres pour être manipulée et enregistrée dans un fichier par un ordinateur. Pour cela nous utiliserons un image très simple et un éditeur hexadécimal.

Lancer photofiltre , et ouvrir l'image ./ressources/16x8_24bits.bmp

C'est une petite image, vous pouvez mettre le zoom au maximum pour bien la voir !

Dans le menu fichier, cliquez sur propriétés de l'image [Crtl+J]. Observer les informations de cette fenêtre et compléter le document réponse 1.
A l'aide de la pipette (barre d'outils à droite), noter les valeurs des composantes rouge, verte et bleue et les reporter sur le document réponse 1: première ligne en décimal (0 à 255) et seconde ligne en notation web hexadécimale (de 00 à FF).


Analyse du fichier d'enregistrement de cette image

Comme vous avez pu l'observer, cette image est constituée de pixels. Nous allons maintenant observer et manipuler le contenu du fichier avec un éditeur hexadécimal. On ouvre le capot !

Lancer le logiciel HxD et ouvrir le fichier 16x8_24bits.bmp

Il permet d'afficher le contenu du fichier image, octet par octet. Ce contenu n'est pas très parlant de prime abord ! Dans la suite nous allons éclaircir la signification de chaque octet mais il vous faudra ce document qui détaille la structure d'un fichier au format bmp.

Observer les deux premiers octets à partir de l'offset 0. Ils correspondent à des caractères lisibles (voir la zone à droite, même offset). Sur le document réponse 2, sur la ligne correspondante à cet offset, indiquer leur signification.
Recopier sur le document réponse 2, la valeur hexadécimale des 4 octets de l'offset 2 à 5.

Ces quatre octets forme un nombre qui indique la taille totale du fichier en octet. On va reconstituer ce nombre sachant que
  • chaque octet a un équivalent hexadécimal sur deux digits. Exemple premier octet = B6
  • Le premier octet constitue le poids faible du nombre de quatre octet. On lit donc le nombre de la droite vers la gauche.
  • On écrit le nombre en juxtaposant chaque octet en partant de la droite vers la gauche
On traduira donc: B6 01 00 00 par le nombre hexadécimal 000001B6 = 1B6

A l'aide de la calculatrice windows, convertir ce nombre hexadécimal en décimal. Comparer au résultat trouvé à la question 1.2
Compléter la ligne correspondante du document réponse 2.
Terminer de compléter la section "entête de fichier" du document réponse 2.

Remarque : l'offset de l'image correspond à la position du premier octet qui code un pixel de l'image. Tout ce qui est avant décrit le fichier et l'image. Tout ce qui est après code l'image elle même.

En suivant attentivement le document qui détaille la structure d'un fichier BMP, compléter le document réponse 2 jusqu'à atteindre le début de l'image.

Attention cette image n'utilise pas de palette d'image.

Préciser le nombre de lignes et le nombre de colonnes de l'image.
Quelle est la profondeur de couleur de cette image ?
En utilisant le document qui détaille la structure d'un fichier BMP, expliquer combien d'octets sont utilisés pour coder la couleur d'un pixel.
Combien d'octets sont consacrés au codage d'une ligne de notre image ?


Modification du fichier à la main !

HxD, enregistrer le fichier 16x8_24bits.bmp sous 16x8_24bits_Modifié.bmp
Donner le code hexadécimal sur trois octets pour coder un pixel violet.
Passer à la valeur FF les octets d'offset 38, 3B, 3E, 41, 44, 47, 4A, 4D, 50, 53, 56, 59, 5C, 5F, 62 et 65
Ouvrir ce fichier avec photofiltre . Quelle est la position dans l'image des pixels qui sont modifiés ?
Ce résultat était-il prévisible ?


Petite synthèse en conclusion

Sur votre compte-rendu, citer les quatre grandes parties qui structurent un fichier BMP.
Dans quelle partie se trouve les données des pixels de l'image?
Calculer la taille du fichier BMP contenant une image de 10 méga pixels = 10^6pixels. Exprimer le résultat en méga octets (Mo). NB: 1Mo = 1024 Ko = 1024 x 1024 octets.


Le format jpg

Ouvrir l'image de départ dans photofiltre puis l'enregistrer au format jpg sur le bureau
Ouvrir le fichier obtenu à l'aide de l'éditeur hexadécimal, que remarque t-on ?
Effectuer une recherche sur le format jpg
Quels sont les principaux formats d'images ? Quels sont les spécificités de chacun de ces formats, pour quelle utilité ?
 

Articles

Vidéos