Académique Documents
Professionnel Documents
Culture Documents
1 Introduction
Le traitement d’images est une discipline de l’informatique et des mathématiques appliquées qui étudie
les images numériques et leurs transformations, dans le but d’améliorer leur qualité ou d’en extraire de
l’information.
Une image numérique désigne, dans son sens le plus général, toute image qui a été acquise, traitée et
sauvegardée sous une forme codée et représentable par des valeurs numériques.
Le terme d’image numérique désigne, dans son sens le plus général, toute image qui a été acquise,
traitée et sauvegardée sous une forme codée représentable par des nombres (valeurs numériques).
La numérisation est le processus qui permet de passer de l’état d’image physique (image optique par
exemple) qui est caractérisée par l’aspect continu du signal qu’elle représente (une infinité de valeur
dans l’intensité lumineuse par exemple), à l’état d’image numérique qui est caractérisée par l’aspect
discret (l’intensité lumineuse ne peut prendre que des valeurs quantifiées en un nombre fini de points
distincts). C’est cette forme numérique qui permet une exploitation ultérieure par des outils logiciels
sur ordinateur.
2 Types d’images
2.1 Image en niveaux de gris
Une image numérique en niveaux de gris est représentée par une matrice à deux dimensions. Chaque
élément de la matrice est appelé : pixel. Chaque pixel contient un nombre entier compris entre 0 et 255.
Le nombre 0 correspond au noir, le nombre 255 correspond au blanc, et chacun des autres nombres 1,
2, 3,..., 253, 254 correspond à un niveau de gris entre le noir et le blanc. Ainsi l’image est codée sur 256
niveaux de gris.
Cette couleur est représentée par un triplet de nombres entre 0 et 255 (3 octets) : un nombre pour
chaque couleur primaire rouge, vert et bleu ; c’est le format RGB (Red, Green, Blue). La couleur
Programmation Python 1 fouadnafis@gmail.com
Fouad NAFIS Filière : MP
définitive de chaque pixel est obtenue par addition de ces couleurs primaires.
Une image couleur est en réalité composée de trois images, afin de représenter le rouge, le vert, et
le bleu. Chacune de ces trois images s’appelle un canal. Cette représentation en rouge, vert et bleu
mime le fonctionnement du système visuel humain. On peut coder l’intensité de chaque couleur avec
une profondeur plus ou moins grande allant de quelques centaines à quelques millions de couleurs.
Couramment, on choisit 256 niveaux d’intensité pour une couleur et on la code sur 8 bits, de 0 (le plus
sombre) à 255 (le plus clair). Dans ce cas, un pixel couleur est donc un vecteur à dimension 3 contenant
3 entiers non signés sur 8 bits généralement encodés un uint8.
Une image couleur img est donc un tableau de dimension (largeur, hauteur, 3). L’accès à l’élément
img[i,j] renvoie un vecteur de taille 3
Nous allons opter dans nos manipulations aux deux bibliothèques matplotlib et PIL.
PIL (Python Imaging Library) est une bibliothèque open-source Python, qui prend en charge l’ouverture,
la manipulation et l’enregistrement de nombreux formats de fichiers d’image différents. Pillow est une
extension de PIL activement développée et plus facile à installer.
Il s’exécute sur tous les principaux systèmes d’exploitation et prend en charge Python 3. La bibliothèque
contient des fonctionnalités de traitement d’image de base, notamment des opérations ponctuelles, un
filtrage avec un ensemble de noyaux de convolution intégrés et des conversions d’espace colorimétrique
2. Définissez la matrice :
0 1 0 1
1 0 0 0
0 1 0 1
1 0 1 1
1 M = np . array ([[0 , 1 , 0 , 1] ,[1 , 0 , 0 , 0] ,
2 [0 , 1 , 0 , 1] ,[1 , 0 , 1 , 1]])
9. L’afficher.
1 plt . imshow ( im )
2 plt . show ()
Avec n bits on peut représenter les entiers non signés de 0 à 2n − 1 donc 2n − 1 = 255
Ceci veut dire que 2n = 256 donc n=8
12. En déduire en Ko la taille de l’image ”plage.jpg” ou l’image que vous avez chargé?
Dons notre cas il s’agit d’une image 300 × 450 donc sa taille est : 300 × 450 = 135 000
Octets
Ce qui fait : 135 000 / 1000 ≃ 135 Ko ou exactement 135000/1024 = 131.84 Ko
3.4 Transformations
3.4.1 Négatif d’une image
Pour inverser les niveaux de gris d’une image, on remplace la valeur de chaque pixel MIJ par
la valeur de la différence 255 - Mij. Ainsi, les régions sombres deviennent claires, le noir devient
blanc, et vice versa.
14. Écrire une fonction negatif(M) qui crée le négatif d’une image représentée par une matrice M.
Pour augmenter (ou diminuer) la luminosité d’une image, il suffit d’augmenter (ou diminuer) la
valeur de tous les pixels de l’image, en ajoutant un nombre entier v positif (ou négatif) à chaque
pixel. Attention toutefois à ce que les valeurs des pixels MIJ restent bien comprises entre 0 et 255
:
- Si MIJ + V > 255 alors, MIJ ←− 255 ;
- Si MIJ + V < 0 alors, M IJ ←− 0.
15. Écrire la fonction luminosité (M, v) qui reçoit en paramètre une matrice M qui représente une
image, et un entier v (positif ou négatif). La fonction ajoute le nombre v à chaque pixel de l’image
M.
Dans une image en niveaux de gris, les valeurs des pixels sont comprises entre 0 et 255. L’histogramme
Programmation Python 4 fouadnafis@gmail.com
Fouad NAFIS Filière : MP
de cette image associe à chaque niveau do gris k le nombre de pixels ayant la même valeur k.
16. Écrire la fonction occurrences (M) qui reçoit on paramètre une matrice M qui représente une
image en niveaux de gris. La fonction retourne une liste C de taille 256 : pour chaque niveau de
gris k, I élément C[k] contient le compte des pixels de l’image M, ayant la même valeur k.
17. Écrire la fonction histogramme (C) qui reçoit en paramètre la liste C des occurrences d’une
image en niveaux de gris. La fonction retourne une liste H de tuples, qui représente l’histogramme
de l’image M : Chaque tuple de H est composé de deux éléments : le premier élément est la valeur
d’un niveau de gris k qui existe dans l’image M, le second élément est le compte des pixels de M
ayant la même valeur k.
Si l’image est en couleur, le tableau contient des triplets d’entiers, chacun représentant l’intensité
en rouge (R), vert (G) et bleu (B).
20. Extraire les images (niveau de gris) représentant les composantes rouge, verte et bleue.
22. Adapter quelques unes des fonctions de la partie précédente au cas d’une image couleur.
4 Le module PIL
Question
Combien de couleurs différentes est-il possible de créer avec le système RVB ?