0% ont trouvé ce document utile (0 vote)
26 vues5 pages

Image Processing-1

Ce document présente une introduction au traitement d'image en Python, en détaillant les bibliothèques clés comme Matplotlib, NumPy et SciPy. Il couvre des sujets tels que le chargement, l'affichage, la conversion en niveaux de gris, les transformations d'images, le filtrage et l'évaluation de la qualité d'image. Des exercices pratiques et des ressources supplémentaires sont également fournis pour renforcer l'apprentissage.

Transféré par

---
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues5 pages

Image Processing-1

Ce document présente une introduction au traitement d'image en Python, en détaillant les bibliothèques clés comme Matplotlib, NumPy et SciPy. Il couvre des sujets tels que le chargement, l'affichage, la conversion en niveaux de gris, les transformations d'images, le filtrage et l'évaluation de la qualité d'image. Des exercices pratiques et des ressources supplémentaires sont également fournis pour renforcer l'apprentissage.

Transféré par

---
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction au Traitement d’Image en Python

Document de Référence et Exercices

Naoum Mohamed
29 mars 2025

Table des matières


1 Introduction et Bibliothèques Clés 2
1.1 Bibliothèques Utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Formats d’Image et Représentation des Données . . . . . . . . . . . . . . . 2

2 Chargement et Affichage d’Images 2


2.1 Lecture d’Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Affichage et Sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Conversion en Niveaux de Gris 2


3.1 Méthode par Moyenne Simple . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 Conversion Conditionnelle en Niveaux de Gris . . . . . . . . . . . . . . . . 3

4 Transformations d’Images 3
4.1 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 Redimensionnement (Réduction et Agrandissement) . . . . . . . . . . . . . 3
4.3 Autres Opérations de Transformation . . . . . . . . . . . . . . . . . . . . . 4

5 Filtrage d’Images 4
5.1 Flou par Filtre Uniforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

6 Évaluation de la Qualité de l’Image 4


6.1 Mesure de Variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

7 Bonnes Pratiques et Concepts Généraux 5

8 Exercices Pratiques et Ressources Supplémentaires 5


8.1 Exercices Proposés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
8.2 Ressources Supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 5

9 Conclusion 5

1
1 Introduction et Bibliothèques Clés
1.1 Bibliothèques Utilisées
— Matplotlib : Pour la lecture, l’affichage et la sauvegarde d’images via plt.imread(),
plt.imshow() et plt.imsave().
— NumPy : Pour la manipulation des tableaux d’images (calcul de moyennes, trans-
position, redimensionnement, etc.).
— SciPy : Pour l’application de filtres avancés, comme le flou via ndimage.uniform_filter().
— Alternatives : La bibliothèque Pillow (PIL) est également mentionnée pour l’ou-
verture d’images. Pour des traitements plus avancés, OpenCV peut être exploré.

1.2 Formats d’Image et Représentation des Données


— Les images sont généralement stockées aux formats JPEG ou PNG.
— En Python, une image est représentée comme un tableau NumPy où chaque pixel
est souvent codé par trois valeurs correspondant aux canaux rouge, vert et bleu
(RGB).
— La compréhension du type de données (entiers, flottants) est essentielle car elle
influence les opérations de traitement.

2 Chargement et Affichage d’Images


2.1 Lecture d’Images
— La lecture se fait via plt.imread("image.jpg"), qui convertit l’image en un ta-
bleau NumPy.

2.2 Affichage et Sauvegarde


— Utilisation de plt.imshow() pour visualiser l’image.
— plt.show() pour afficher la fenêtre graphique.
— plt.imsave() pour sauvegarder les images traitées (ex. : "gray.jpg", "newGray.jpg").

(Voir 00_simple_openImg.py et autres.)

3 Conversion en Niveaux de Gris


3.1 Méthode par Moyenne Simple
Concept : Calcul de la moyenne des trois canaux (R, G, B) pour obtenir un pixel en
niveaux de gris.
— Implémentation : Utilisation de np.average(img, axis=2) ou img.mean(2).
Réaffectation de cette valeur moyenne aux trois canaux.

2
1 M = np . average ( img , axis =2)
2 im = img . copy ()
3 im [: , : , 0] = M # rouge
4 im [: , : , 1] = M # vert
5 im [: , : , 2] = M # bleu
Listing 1 – Exemple de conversion par moyenne simple
(Voir 00_simple_grey.py.)

3.2 Conversion Conditionnelle en Niveaux de Gris


Concept : Appliquer la conversion seulement sur certains pixels selon une condition
(par exemple, convertir en gris si le pixel n’est pas majoritairement rouge).
— Implémentation : Parcourir chaque pixel avec des boucles et appliquer la condi-
tion.
1 for i in range ( len ( img ) ) :
2 for j in range ( len ( img [ i ]) ) :
3 r , g , b = img [i , j ]
4 if not ( r > 1.5 * b and r > 1.5 * g ) : # conversion si le pixel
n ’ est pas t r s rouge
5 avg = sum ( img [i , j ]) // 3
6 img [i , j , :] = [ avg ] * 3
Listing 2 – Exemple de conversion conditionnelle
(Voir 00_openImg.py.)

4 Transformations d’Images
4.1 Rotation
Concept : Faire pivoter l’image, par exemple de 90°.
— Implémentation : Utilisation de np.transpose(img, (1, 0, 2)) pour échanger
les axes des lignes et colonnes.
1 image_rotatee = np . transpose ( img , (1 , 0 , 2) )
Listing 3 – Exemple de rotation

4.2 Redimensionnement (Réduction et Agrandissement)


Réduction :
— Utiliser le slicing pour prendre un pixel sur deux, par exemple img[::2, ::2].
Agrandissement :
— Utiliser np.repeat() pour dupliquer les pixels le long des axes souhaités.
1 # R duction 50%
2 image_reduite = img [::2 , ::2]
3
4 # Agrandissement avec des facteurs fL ( lignes ) et fC ( colonnes )
5 image_temp = np . repeat ( img , fC , axis =1)
6 image_aggrandie = np . repeat ( image_temp , fL , axis =0)
Listing 4 – Exemple de redimensionnement

3
(Voir 00_openImg.py et 00_simple_openImg.py.)

4.3 Autres Opérations de Transformation


— Découpage (Cropping) : Extraire une partie spécifique de l’image en sélection-
nant une sous-partie du tableau.
— Miroir/Retournement (Flipping) : Inverser l’image horizontalement ou verti-
calement à l’aide de slicing inversé (ex. : img[::-1]).
— Seuil (Thresholding) et Détection de Bords : Même si non présent dans
les scripts actuels, ces opérations permettent de transformer l’image en binaire ou
d’extraire les contours (Sobel, Canny).
— Ajustement du Contraste : Modifier la luminosité et le contraste pour améliorer
ou altérer l’apparence de l’image.

5 Filtrage d’Images
5.1 Flou par Filtre Uniforme
Concept : Le flou permet de réduire le bruit et les détails en lissant l’image.
— Implémentation : Utilisation de scipy.ndimage.uniform_filter() avec une
taille de fenêtre définie.
1 from scipy import ndimage
2 image_floue = ndimage . uniform_filter ( img , size =(50 , 50 , 1) )
Listing 5 – Exemple de flou
(Voir 00_openImg.py.)

6 Évaluation de la Qualité de l’Image


6.1 Mesure de Variance
Concept : La variance des intensités de pixels sert d’indicateur de netteté : une
variance faible peut signifier une image floue.
— Implémentation : Calcul avec np.var(img) et comparaison avec un seuil (ex. :
5000).
1 variance = np . var ( img )
2 if variance > 5000:
3 print ( " L ’ image n ’ est pas floue . " )
4 else :
5 print ( " L ’ image est floue . " )
Listing 6 – Exemple de mesure de variance
(Voir 00_openImg.py.)

4
7 Bonnes Pratiques et Concepts Généraux
— Copies Profondes vs. Copies Superficielles : Utiliser deepcopy pour éviter
de modifier l’image originale lors des traitements.
— Modularité du Code : Organiser le code en fonctions ou modules afin de favoriser
la réutilisation et la lisibilité.
— Performances : Optimiser le traitement pour des images de grande taille, par
exemple en privilégiant les opérations vectorisées avec NumPy plutôt que des
boucles imbriquées.
— Visualisation Comparative : Utiliser plt.subplot() pour afficher côte à côte
l’image originale et les versions traitées pour une comparaison immédiate.

8 Exercices Pratiques et Ressources Supplémentaires


8.1 Exercices Proposés
— Convertir une image en niveaux de gris en utilisant la méthode de la moyenne.
— Appliquer un filtre de flou et mesurer la variance pour évaluer la netteté.
— Implémenter une rotation et un redimensionnement de l’image.
— Réaliser un découpage et une inversion horizontale de l’image.
— Explorer l’utilisation d’un seuillage pour transformer l’image en binaire.

8.2 Ressources Supplémentaires


— Documentation Matplotlib
— Documentation NumPy
— Documentation SciPy
— Tutoriels et exemples sur OpenCV pour aller plus loin dans le traitement d’images.

9 Conclusion
Ce document offre une base solide pour comprendre le traitement d’image en Python.
En plus de la lecture et de l’affichage d’images, les étudiants apprendront à :
— Convertir des images en niveaux de gris (méthode simple et conditionnelle).
— Effectuer diverses transformations (rotation, redimensionnement, découpage).
— Appliquer des filtres (par exemple, flou) et évaluer la qualité d’une image à l’aide
de la variance.
En combinant ces connaissances avec les bonnes pratiques de programmation et des
exercices pratiques, ils seront bien préparés pour aborder des sujets plus avancés.

Vous aimerez peut-être aussi