0% ont trouvé ce document utile (0 vote)
3 vues43 pages

Computer Vision Python

Le document présente une introduction au traitement numérique d'images en utilisant Python et OpenCV, couvrant des concepts fondamentaux tels que la lecture, l'affichage, la manipulation et l'amélioration d'images. Il aborde également l'installation de l'environnement Python/OpenCV et les applications pratiques comme la détection d'objets et la reconnaissance faciale. Les sections incluent des manipulations d'images, l'utilisation d'histogrammes et des techniques d'amélioration du contraste.

Transféré par

Yassine Toumany
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)
3 vues43 pages

Computer Vision Python

Le document présente une introduction au traitement numérique d'images en utilisant Python et OpenCV, couvrant des concepts fondamentaux tels que la lecture, l'affichage, la manipulation et l'amélioration d'images. Il aborde également l'installation de l'environnement Python/OpenCV et les applications pratiques comme la détection d'objets et la reconnaissance faciale. Les sections incluent des manipulations d'images, l'utilisation d'histogrammes et des techniques d'amélioration du contraste.

Transféré par

Yassine Toumany
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

MST : Ingénierie des Systèmes Embarqués, Réseaux & Télécommunications ISERT

Applications avancées du
traitement numérique d’images
Pr. Ilham EL MOURABIT
Plan
01. Environnement 02. Filtrage spatial
Python et bases et amélioration
OpenCV d’image

03. Morphologie 04. Détection et 05. Reconnaissance


mathématique et reconnaissance faciale et
segmentation d’objets apprentissage

2
Chapitre I
Introduction à Python et OpenCV pour le
traitement d’images

3
Objectifs
• Comprendre la logique de Python pour le traitement d’images ;
• Savoir installer l’environnement adéquat (Anaconda + Spyder);
• Lire, afficher, convertir et sauvegarder des images ;
• Manipuler les bases (espace de couleur, redimensionnement, rotation,
histogramme)

4
Pourquoi le traitement d’images ?
• Extraire des informations à partir d’images ou de vidéos.
• Etapes clés : acquisition → pré-traitement → analyse → décision.
• Domaines d’application :
• Médical (segmentation, détection de tumeurs)
• Industriel (inspection, contrôle qualité)
• Transport intelligent (reconnaissance de panneaux, vision embraquée)
• Sécurité (surveillance, biométrie)

5
De Matlab à Python

Langage libre et multi Langage simple et


plateforme intuitif
Gratuit, Open source et Idéal pour l’apprentissage et
disponible sur Win, macOS, la recherche expérimentale
Linux.
Code concis : quelques lignes
Large compatibilité avec les suffisent pour lire, afficher ou
environnements embarqués transformer une image

Ecosystème Intégration aisée avec Communauté mondiale et


scientifique riche autres technologies ressources abondantes
OpenCV: Traitement d’images Communication fluide avec Documentation exhaustive, forums
C/C++, Matlab, Arduino, actifs, tutoriels.
NumPy: Calcul matriciel ROS …
Très utilisé en recherche, en
Matplotlib; Visualisation Adapté à la conception de industrie et dans les concours
graphique prototypes IoT, SE … IA/Vision
6
OpenCV : La boite à outils de la vision
• Bibliothèque open-source écrite en C++ avec interface Python.
• Plus de 2500 fonctions : filtrage, segmentation, détection, suivi, deep learning.
• Compatible Windows / macOS / Linux / Android / Raspberry Pi.
• Interagit avec NumPy, Matplotlib, scikit-image, TensorFlow…

7
Ecosystème Python pour le traitement
d’images

• OpenCV (cv2) : opérations d’images, vidéo, OpenCV


filtrage.
• NumPy : manipulation matricielle.
• Matplotlib : visualisation et histogrammes.
Spider/
• Spyder / Jupyter : développement et tests
Jupiter
interactifs.
Matplotlib NumPy

8
Installation et configuration de
l’environnement Python/OpenCV
Pourquoi Anaconda ?
• Installe automatiquement Python, Spyder, et les principales bibliothèques (NumPy,
matplotlib, SciPy …)
• Gère les dépendances via Conda (plus simple que pip).
• Multi-plateforme : fonctionne sous Windows, macOS, Linux.
• Permet de créer plusieurs environnements isolés (utile pour différents projets).

Anaconda = « Matlab + gestionnaire de paquets + notebook + Spyder » réunis dans un


seul outil

9
Installation et configuration de
l’environnement Python/OpenCV
Etapes d’installation
1. Rendez-vous sur →
[Link]
2. Téléchargez la version Python 3.10 ou
supérieure adaptée à votre système.
3. Lancez l’installation (options par
défaut).
4. Une fois terminée, ouvrez Anaconda
Navigator puis Spyder.

10
Installation et configuration de
l’environnement Python/OpenCV
Création d’un environnement dédié
Ouvrez Anaconda prompt et tapez
Conda create –n imageprocessing python=3.11 -y
Conda activate imageprocessing
Conda install –c conda-forge opencv matplotlib numpy pyqt spyder –y

Imageprocessing : nom de votre environnement (modifiable)


OpenCV : bibliothèque de vision par ordinateur
Numpy : Calcul matriciel rapide.
Matplotlib : affichage graphique
Pyqt : interface graphique nécessaire à imshow
11
Installation et configuration de
l’environnement Python/OpenCV
Vérifications
Toujours depuis la console, exécuter les commandes suivantes pour lancer Spyder :

Conda activate imageprocessing


spyder

Dans la console Spyder, copier et exécuter le script suivant :

12
Lecture, affichage et sauvegarde
d’images
Lecture d’une image

Par défaut, l’image est chargée en BGR (Blue-Green-Red), pas RGB comme en Matlab.
Pour une image en niveau de gris :

Pour vérifier que l’image est bien importée :

13
Lecture, affichage et sauvegarde
d’images
Affichage d’une image
• Méthode OpenCV

• Méthode Matplotlib

14
Lecture, affichage et sauvegarde
d’images
Conversion d’espaces colorimétriques
Il est très utile de pouvoir convertir une image entre les différents espaces de couleurs :
RGB, GRAY, HSV.
En OpenCV, la fonction [Link]() permet de réaliser cette conversion avec deux
variantes [Link].BGR2GRAY et [Link].BGR2HSV.

L’espace HSV est plus pratique pour la détection de couleurs (le canal H = teinte)
L’espace GRAY est utilisé pour la détection de contours, filtrage, etc.

15
Lecture, affichage et sauvegarde
d’images
Sauvegarde d’une image
Il est possible de sauvegarder une image après son traitement ou changements apportés
par le programme en utilisant la fonction [Link]().

Cette commande enregistre la matrice d’image (uint8) dans un fichier (format PNG, JPG,
BMP …)
Si le chemin est relatif, le fichier est sauvegardé dans le répertoire courant. Vérifiez avec:

16
Exemple
récapitulatif

17
Application
• Cahier de charges
1. Charger une image couleur de votre choix ([Link]()).
2. Afficher l’image originale avec [Link]() et/ou [Link]().
3. Extraire et afficher séparément les trois canaux R, G, B.

Pistes d’aide
• Utiliser [Link]() pour séparer les canaux.
• Rappel : OpenCV lit en BGR, donc inverser l’ordre pour affichage RGB sous Matplotlib.
Résultat attendu : Quatre affichages :L’image originale, Canal Rouge, Canal Vert, Canal Bleu

18
Manipulations de base d’images dans OpenCV
Objectifs

• Redimensionner une image (agrandissement / réduction).


• Extraire une région d’intérêt (ROI).
• Effectuer des rotations et symétries.
• Combiner ou juxtaposer plusieurs images

19
Manipulations de base d’images dans OpenCV
Redimensionnement d’image
Le redimensionnement est l’une des opérations les plus courante en traitement d’images.
On y a souvent recours :
• Pour adapter une image à une taille d’affichage (par exemple une vignette de 200x200
pixels);
• Ou pour préparer un lot d’images à un même format avant un traitement (ex.
reconnaissance d’objets)
En Matlab, on utilisait imresize() pour agrandir ou réduire une image.

20
Manipulations de base d’images dans OpenCV
Redimensionnement d’image
En OpenCV, la fonction équivalente est [Link]().
Elle permet soit de spécifier une nouvelle taille exacte, soit de définir un facteur d’échelle
pour agrandir ou réduire l’image.

21
Manipulations de base d’images dans OpenCV
Redimensionnement d’image
En OpenCV, la fonction équivalente est [Link]().
Elle permet soit de spécifier une nouvelle taille exacte, soit de définir un facteur d’échelle
pour agrandir ou réduire l’image.
L’interpolation utilisée influence la qualité :
• INTER_AREA pour réduire,
• INTER_LINEAR ou INTER_CUBIC pour agrandir.

22
Manipulations de base d’images dans OpenCV
Extraction d’une région d’intérêt (ROI)
Dans de nombreuses applications, on ne souhaite pas traiter l’image entière, mais
seulement une zone d’intérêt (Rehion Of Interest ou ROI).
• Détecter un visage dans une photo,
• Extraire un objet précis pour l’analyser,
• Recadrer une zone utile dans une image de grande taille.
En Python, grâce à NumPy, on peut accéder à des sous parties d’une image très facilement
à l’aide de l’indexation matricielle.

23
Manipulations de base d’images dans OpenCV
Extraction d’une région d’intérêt (ROI)
Une image étant une matrice 3D (lignes, colonnes, canaux), on peut écrire :

Où :
• y1:y2 délimitent la hauteur (verticalement)
• x1:x2 délimitent la largeur (horizontalement)

24
Manipulations de base d’images dans OpenCV
Rotation d’image
La rotation est une transformation géométrique essentielle en vision par ordinateur.
Elle permet de
• Réaligner une image prise avec un angle,
• Simuler un changement d’orientation,
• Ou corriger une capture mal cadrée.
En Matlab, la commande imrotate(I, angle) suffit.

25
Manipulations de base d’images dans OpenCV
Rotation d’image
En OpenCV, le mécanisme est plus complet :
On construit d’abord une matrice de rotation via cv2.getRotationMatrix2D(), puis on applique
cette transformation à l’image avec [Link]().
Ce procédé, bien que plus long, permet :
• de choisir le centre de rotation,
• d’ajuster l’échelle (scale) en même temps,
• et d’obtenir un contrôle précis sur l’interpolation.

26
Manipulations de base d’images dans OpenCV
Rotation d’image

• [Link][:2] renvoie (hauteur, largeur) de l’image.


• Cv2.getRotationMatrix2D(center, angle, scale) :
• Center = centre de rotation (ici le centre de l’image).
• Angle = 45° (anti-horaire)
• Scale = 1.0 taille incahngée (0.5 = zoom out, 2 = zoom in)

27
Manipulations de base d’images dans OpenCV
Rotation d’image
• Cette fonction calcule une matrice de transformation affine 2x3 :

cos 𝜃 − sin 𝜃 𝑡𝑥
𝑀 = sin 𝜃 cos 𝜃 𝑡𝑦
Où (𝑡𝑥 , 𝑡𝑦 ) déplacent le centre de rotation.
• [Link](img, M, (w, h)) applique la matrice M à chaque pixel de l’image.

28
Manipulations de base d’images dans OpenCV
Symétrie (miroir horizontal / vertical)
La symétrie, ou flip, est une opération simple mais utile :
• Pour créer des images miroir,
• Pour augmenter artificiellement une base d’apprentissage (en IA),
• Ou pour corriger une orientation inversée.
En Matlab, on utilisait flip(I,1) ou flip(I,2) selon l’axe.
En OpenCV, c’est la fonction [Link](image, flipCode) :
• Flipcode = 1 : miroir horizontal
• Flipcode = 0 : miroir vertical
• Flipcode = -1 : les deux en même temps.

29
Manipulations de base d’images dans OpenCV
Symétrie (miroir horizontal / vertical)
Cette fonction est non destructive (elle retourne une nouvelle image inversée sans modifier
l’originale).

L’opération est purement géométrique (pas de changement de couleurs).

30
Manipulations de base d’images dans OpenCV
Combinaison de plusieurs images
Dans certaines situations, il est utile de comparer visuellement plusieurs images. Par exemple,
avant /après filtrage, ou entre différentes étapes d’un traitement.
Contrairement à Matlab où [𝐼1 𝐼2 ] concatène naturellement les matrices, OpenCV s’appuie sur les
fonctions de la bibliothèque NumPy :
• [Link]() pour une combinaison horizontale,
• [Link]() pour une combinaison verticale.
Il faut toutefois s’assurer que les images ont les mêmes dimensions (même hauteur pour hstack ,
même largeur pour vstack). Au besoin en redimensionnant l’une d’elles avec [Link]().

31
Manipulations de base d’images dans OpenCV
Combinaison de plusieurs images
On redimensionne img2 avant, pour qu’elle ait la même taille que img1 :

32
Manipulations de base d’images dans OpenCV
Zoom et rotation combinés
Les transformations plus complexes peuvent combiner plusieurs effets à la fois : une rotation , un
zoom avant / arrière, voire un décalage.
En OpenCV, tout cela est géré par la même fonction cv2.getRotationMatrix2D(), qui accepte un
paramètre d’échelle (scale), ainsi :
• Scale < 1 réduit la taille (zoom arrière),
• Scale > 1 agrandit (zoom avant),
• Angle peut être positif (rotation antihoraire) ou négatif (horaire)

33
Manipulations de base d’images dans OpenCV
Zoom et rotation combinés
c’est une approche affine complète, très utilisée dans les applications de vision industrielle et de
recalage d’images.

• angle = -30 → rotation horaire (négatif = sens inverse)


• scale = 0.5 → réduit la taille (zoom out).
• warpAffine() applique à la fois la rotation et le redimensionnement dans un seul calcul
matriciel.

34
Application
• Cahier de charges
1. Redimensionner l’image à 300×300 pixels.
2. Extraire une région d’intérêt (ROI) centrée sur l’objet principal.
3. Effectuer une rotation de 30° autour du centre de l’image.
4. Créer une symétrie horizontale de l’image.

Pistes d’aide
• [Link](), [Link](), cv2.getRotationMatrix2D() + [Link]().
• Vérifier que les indices de la ROI sont dans les bornes de l’image.
Résultat attendu : Une figure contenant 4 sous-images : originale, ROI, rotation, symétrie.
35
Histogrammes et amélioration du contraste
Introduction aux histogrammes
L’histogramme d’une image représente la distribution des intensités (ou des niveaux de gris) dans
celle-ci.
Il indique combien de pixels possèdent une certaine valeur de luminosité entre 0 (noir) et 255
(blanc).
C’est un outil fondamental pour :
• Évaluer le contraste global d’une image ;
• Déterminer si elle est trop sombre ou trop claire ;
• Concevoir des méthodes de correction ou de segmentation.

36
Histogrammes et amélioration du contraste
Introduction aux histogrammes
Pour visualiser la répartition des niveaux de gris, on calcule l’histogramme à l’aide de
[Link].
Chaque barre correspond au nombre de pixels ayant une intensité donnée.
Une image sombre aura un histogramme concentré à gauche, une image claire à droite.

37
Histogrammes et amélioration du contraste
Introduction aux histogrammes
• [img] : liste des images d’entrée.
• [0] : canal étudié (0 = gris).
• None : pas de masque.
• [256] : nombre de classes.
• [0,256] : intervalle de valeurs.

38
Histogrammes et amélioration du contraste
Histogramme d’une image couleur
Pour une image couleur, on calcule un histogramme par canal : Bleu, Vert et Rouge.
Cela permet d’analyser la balance chromatique et de détecter les dominances de couleur..

39
Application
• Cahier de charges
1. Convertir l’image en niveaux de gris.
2. Calculer et tracer son histogramme de luminance avec [Link]().
3. Calculer également les histogrammes des trois canaux pour l’image couleur.

Pistes d’aide
• Pour l’image couleur : boucle sur les canaux (0,1,2) avec couleurs 'b','g','r’.
• Pour l’image grise : histogramme unique
Résultat attendu : Deux graphiques :Histogramme en niveaux de gris ;Histogrammes
superposés des canaux couleur
40
Histogrammes et amélioration du contraste
Amélioration linéaire du contraste
Une image peut manquer de contraste lorsque ses intensités n’utilisent qu’une partie de la plage
0–255.
Une solution simple consiste à étirer linéairement ces valeurs : c’est la normalisation du
contraste.
On applique une mise à l’échelle qui redistribue les intensités sur toute la plage dynamique
(recadrage dynamique).

41
Histogrammes et amélioration du contraste
Egalisation d’histogramme
L’égalisation d’histogramme redistribue les intensités de manière à uniformiser l’histogramme.
C’est une méthode très efficace pour améliorer la visibilité des détails dans les zones sombres ou
claires.

42
Application
• Cahier de charges
1. Appliquer une normalisation linéaire des intensités.
2. Appliquer une égalisation d’histogramme globale ([Link]).
3. Appliquer une égalisation adaptative CLAHE ([Link]).
4. Afficher les trois résultats côte à côte pour comparaison.
Pistes d’aide
• Travailler sur l’image en niveaux de gris.
• Pour la CLAHE : tester différentes valeurs de clipLimit (2.0, 3.0, 5.0).
Résultat attendu : Une figure à 4 sous-images :Image originale, Normalisée, Égalisée,
CLAHE, leurs histogrammes respectifs.
43

Vous aimerez peut-être aussi