1 Les images en couleur

 

Comment l’ordinateur « voit » et manipule un image en couleur ?

 

Récupérez d'abord le fichier coquelicots.bmp (clic droit et "Enregistrer la cible du lien sous...")

 

Enregistrez l’image et regardez-la en double-cliquant dessus dans l’explorateur de fichiers. Vous devriez voir en zoomant qu’elle est constituée d’une multitude de pixels organisés en lignes (y) et colonnes (x), tout comme le sont les images en niveaux de gris.

Pour représenter assez finement pour l’œil humain un pixel en niveaux de gris, on n’a besoin que d’une seule valeur entre 0 et 255 (0: noir, 255: blanc). Dans une image couleur, on indique pour chaque pixel un mélange de 3 couleurs: rouge, vert, bleu. Chaque couleur est donnée par un nombre entre 0 et 255, on a donc besoin de 3 nombres (qu’on représente chacun sur un octet). Ce codage s’appelle R G B pour Red Green Blue et où pour chacune de ces couleurs :

  • la valeur 0 indique qu’on met 0% du « pot de cette couleur ».
  • la valeur 255 indique qu’on met 100% du « pot de cette couleur ».

 

Pour illustration, voici un zoom sur l’image coquelicots.bmp qui montre quelques valeurs associées aux pixels:

 

 

 

Voici quelques exemples pour bien comprendre le codage des couleurs sur 24 bits:

 

couleur

R

G

B

Octet 1

Octet 2

Octet 3

 

0

0

0

00000000

00000000

00000000

 

255

255

255

11111111

11111111

11111111

 

255

0

0

11111111

00000000

00000000

 

0

255

0

00000000

11111111

00000000

 

0

0

255

00000000

00000000

11111111

 

245

203

31

11110101

11001011

00011111

 

 

La structure d'un fichier bitmap est :

En-tête du fichier (file header) : diverses informations sur le fichier (nature, taille, …) sur 14 octets

En-tête de l’image (information Header) : diverses informations sur l’image (taille de l’entête elle-même, dimension, compression, résolutions …)

Palette de l’image : nécessaire seulement si l’on n’utilise pas les 224 couleurs comme en 24 bits (3 x 8 bits) et permet de donner une table de correspondance entre, par exemple, les 256 couleurs en 8 bits et les niveau RVB correspondant.

Codage de l'image : Le codage de l'image se fait en écrivant successivement les bits correspondant à chaque pixel, ligne par ligne en commençant par le pixel en bas à gauche : les images en 2 couleurs utilisent 1 bit par pixel, en 16 couleurs 4 bits par pixel, en 256 couleurs 8 bits par pixel et en couleurs réelles 24 bits par pixel

 

2. Les images en couleur et Python

 

Attention !!! : l'image à modifier est coquelicots.bmp. Cette image et votre programme doivent être sauvegardés dans le même dossier

 

 

Dans l’environnement Python, on charge en mémoire l’image (fonction open) puis on l’affiche (fonction show) de la façon suivante:

 

from PIL.Image import * /* Importe toutes les fonctions du module PIL.Image  */

variableImage = open("coquelicots.bmp")

Image.show(variableImage)

 

On peut ensuite récupérer les niveaux des 3 couleurs (lumière) primaires R,G,B de n’importe quel pixel de coordonnées (x,y) (le point (0;0) est en haut à gauche) de l’image stockée dans variableImage grâce à la fonction variableImage.getpixel((x,y)) qui renvoie les 3 entiers correspondant à R,G et B. On pourra ensuite modifier ces valeurs, et donc modifier la couleur du pixel.

 

1. Tester dans Edupithon : importer la bibliothèque PIL.Image, ouvrir l'image dans une variable j (j=….), afficher l'image « j », récupérer dans des variables rouge, vert et bleu les 3 composantes de couleur du pixel en ligne 10 et colonne 42, afficher ces trois composantes

 

 

Pour modifier la couleur d’un pixel, on peut utiliser la fonction Image.putpixel, comme ceci:

 

i.putpixel((x,y),(rouge,vert,bleu)) /* Modifie la couleur du pixel en colonne x et ligne y en fixant les 3 niveaux de couleur à rouge, vert et bleu qui sont 3 entiers fixés par l'utilisateur.*/

 

2. Écrire une fonction InfoImage qui prend comme variable une image stockée dans la variable img, affiche l'image et  le nombre de pixels de l'image après l'avoir calculé. Écrire également une fonction SupRouge qui prend comme variable une image stockée dans la variable img, supprime toute la couleur rouge de chaque pixel puis affiche l'image modifiée.

Aide : (largeur, hauteur)= i.size /* Stocke dans les variables largeur et hauteur les dimensions d'une l'image stockée dans une variable i */

   Tester ces 2 fonctions dans un programme pour l'image coquelicots.bmp

 



 

3. Créer d'autres fonctions (noms au choix) sur le même modèle pour obtenir un maximum d'images modifiées parmi celles proposées ci-dessous. Testez-les également dans votre programme.

 

 

 

 

 

 

Free Joomla! template by L.THEME