Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSerge Croteau Modifié depuis plus de 6 années
1
Introduction à la vision artificielle Traitement des images
Patrick Hébert Génie électrique et génie informatique Université Laval *collaboration Éric Samson (Revisité par A. Bendada en 2013 et D. Laurendeau en 2017
2
Introduction à la vision artificielle Traitement des images Mise en contexte dans le cadre du cours de Design III
3
Mise en contexte… Qu'est-ce que la caméra embarquée permet au robot de faire ? Reconnaître les objets sur la table. (Tableaux, obstacles, zone de dessin, etc.) Raffiner l’estimation de la position des objets sur la table pour l’évitement de collision et la planification de trajectoire. Qu'est-ce que la caméra externe permet de faire ? Estimer la position et l’orientation du robot sur la table et planifier la trajectoire Estimer la position (et l’orientation) des objets sur le terrain (obstacles, zone de dessin, etc.)
4
Mise en contexte Ces deux étapes s'inscrivent dans le cycle global "perception/action" du processus de vision Perception initiale de l'environnement Formation des images/acquisition Traitement des images et reconnaissance Repérer les objets de l'aire de travail dans l'image Analyse des données Calculer la position des objets et du robot Planification et prise de décision Déterminer la prochaine commande à transmettre au robot Exécution Transmission de la commande au robot
5
Introduction à la vision artificielle Traitement des images Plan de la formation en vision artificielle
6
Plan de la présentation
Modèle de caméra Espaces des couleurs Traitement des images : Introduction Filtrage Segmentation Extraction de régions Extraction de contours Détection de coins Conclusion
7
Modèle de caméra
8
À 1 référentiel Formation d’image: sténopé (pinhole) et projection de perspective À 2 référentiels
9
Modèle complet avec tous les référentiels
10
Espaces des couleurs
11
Absorption de la lumière par les
Espaces des couleurs… En général, on représente la couleur à l'aide de 3 valeurs Espace en 3 dimensions L'espace le plus connu est RGB (Red, Green, Blue) Lié au système visuel humain L'œil perçoit la couleur à l'aide de trois types de capteurs (cônes) sensibles à trois plages de longueurs d'onde. Absorption de la lumière par les cônes de l’œil humain *tirée de Gonzales & Woods 11
12
Principe de la caméra couleur…
13
Principe de la caméra couleur…
14
Principe de la caméra couleur…
15
Image numérique couleur
Sortie d’une caméra couleur Image numérique couleur Mosaïque à filtres de Bayer Matrice 3D
16
Espaces des couleurs… L'espace RGB (suite)
Largement utilisé en informatique (moniteurs) Cube de couleurs RGB Cube RGB 24-bits Teintes de gris R=G=B le long de la diagonale Génération de couleurs 24 bits: couleurs. Axes normalisés à 1 pour les fins des explications
17
L’espace RGB n’est pas intuitif pour l’utilisateur (e.g. Photoshop)
Espaces des couleurs… Problème: L’espace RGB n’est pas intuitif pour l’utilisateur (e.g. Photoshop) Exemple: On veut baisser la saturation du disque orange de 50% Comme on le verra dans quelques instants, la saturation est la caractéristique qui définit la “pureté” d’une couleur (i.e. le niveau de`”blanc” qu’on y mélange. Beaucoup de blanc: faible saturation, peu de blanc: grande saturation. Ces valeurs semblent aléatoires
18
HSV Hue (H), Saturation (S), Value (V)
Espaces des couleurs… HSV Hue (H), Saturation (S), Value (V) Séparation de la teinte, de la saturation et de l'intensité Plus intuitif pour identifier et spécifier les couleurs Traitement des ombrages plus facile lors de la segmentation Ombrage même teinte mais intensité différente. V (intensité): une hauteur entre 0 (noir) et 1 (blanc) La teinte est contenue dans H (Hue) : un angle (0 360°) S (Saturation = pureté): un rayon entre 0 et 1: S = niveau de gris S = couleur pure Il y a plusieurs façons de représenter les couleurs. Celle que nous présentons est très pratique, intuitive et relativement simple sur les plans conceptuel et calculatoire. Hue: teinte Saturation: saturation Value: intensité (similaire au niveau de gris pour les images en noir et blanc). Espace HSV
19
Espaces des couleurs… HSV
- Le modèle HSV est particulièrement utilisé dans les applications graphiques. - La teinte est sélectionnée sur la région circulaire; la saturation et l’intensité sont sélectionnées a posteriori sur un triangle. Désavantage de cette représentation des couleurs: le rouge est encode par des petits ou des grands angles (i.e. deux teintes voisines sont éloignées en valeur d’angle). Nous verrons ce que ça implique quand nous verrons la conversion de la representation RGB vers la representation HSV. Exemple: On veut baisser la saturation du disque orange de 50% Roue de couleurs HSV
20
Passage RGB HSV : Formules
Espaces des couleurs… Passage RGB HSV : Formules Pré-calculs 3 2 1 Référence sur les conversions:
21
Espaces des couleurs…
22
Espaces des couleurs…
23
Traitement des images
24
Plan de la présentation
Espaces des couleurs Traitement des images : Introduction Filtrage Segmentation Extraction de régions Extraction de contours Détection de coins Conclusion
25
Traitement des images : introduction
Le traitement simple des images peut se faire en 2 étapes: Traitement sur les pixels Filtrage Regroupement en régions Détection de contours Détection de points d'intérêt (coins) Interprétation Reconnaissance basée sur les modèles Est-ce que ce groupe de pixels "jaunes" peut correspondre à une balle sphérique ou à une cible rectangulaire? Dans notre cas en Design III, les modèles sont les couleurs et les formes des objets d’intérêt: trésors, îles, etc.
26
Traitement des images : introduction
Plusieurs facteurs influencent le traitement et l'interprétation des images Éclairage variable Heure du jour, éclairage naturel ou artificiel Arrière-plan (circulation autour de la table!) Points de vue différents Un objet peut présenter des formes très différentes selon le point de vue La simple projection d'un espace 3D à 2D pour un objet opaque La réflectance des matériaux Bruit du capteur … Eclairage: bien que nous ne ferons pas exprès pour que l’éclairage soit difficile, il faut prévoir des fluctuations, ce qui implique d’ajouter de la robustesse à vos traitements (i.e. tester votre système dans plusieurs conditions d’éclairage (par exemple, si vous travaillez le soir (ou la nuit), assurez-vous que vos algorithmes fontionneront pendant le jour car la compétition a lieu le jour et l’éclairage ambiant peut avoir un impact sur les performances de votre système. Point de vue: exemple de cylinder observe dans une vue fortuite (i.e. dans la direction de son axe principal).
27
Traitement des images : introduction
Pour éviter des résultats indésirables (e.g. fausse détection, manque), il faut que le traitement et l'interprétation soient robustes aux variations des facteurs hors de votre contrôle Robustesse au niveau du traitement (ex. Seuillage adaptatif) "et/ou" Robustesse au niveau de l'interprétation Nous allons voir plus loin ce que l’on entend par seuillage adaptatif (ex. Confirmation de la reconnaissance en utilisant un 2e traitement (différent)).
28
Filtrage des images
29
Plan de la présentation
Espaces des couleurs Traitement des images : Introduction Filtrage Segmentation Extraction de régions Extraction de contours Détection de coins Conclusion
30
Convolution de l'image avec un masque (noyau) fixe
Filtrage linéaire Convolution de l'image avec un masque (noyau) fixe La convolution est une opération linéaire: commutative A * E = E * A associative A * (B * E) = (A * B) * E Exemple de masque Équation de convolution On essaie évidemment de choisir m impair (voir cvSmooth dans OpenCV)
31
Filtrage passe bas
32
Exemple de filtre : Le filtre de moyennage
Filtrage linéaire Exemple de filtre : Le filtre de moyennage Chaque pixel de l'image résultat prend comme valeur la somme des pixels voisins dans le masque.
33
Filtrage linéaire : Attention aux effets de bord !
les ignorer image résultat plus petite on peut ajouter des valeurs constantes sur les bords mais … on peut considérer l'image comme étant périodique mais … on peut considérer le bord de l'image comme un miroir mais … Dans le cas où on ignore les oixels des bords, l’image résultante est plus petite. Evidemment, quand on prend une image d’un objet d’intérêt dans la scène, on ne fait pas par exprès pour qu’il soit sur le bord de l’image: distorsion de la lentille, vignettage, etc.
34
Filtrage linéaire passe bas
1. Filtre moyenne Image d’origine Evidemment, plus le filter est large, plus on élimine le bruit local mais plus l’image résultante est floue. Par consequent, il faut choisir un compromis entre réduction du bruit et netteté de l’image. Comment définir ce compromise: en faisant des experiences. m x m = 5 x 5 m x m = 9 x 9 m x m = 15 x 15 m x m = 35 x 35
35
Filtrage linéaire passe bas
2. Filtre Gaussien… * Meilleur comportement fréquentiel. Préserve mieux les arêtes. On choisit la taille du filtre w (en pixel) tel que Exemple
36
Filtrage linéaire passe bas
2. Filtre Gaussien… Attention: Plus la gaussienne est large, plus le flou est marqué. En général, un sigma est utilisé pour réduire le bruit. Comment construire le filter gaussien: 1- échantillonner la densité normale ayant le sigma désiré. 2- normaliser le plus petit coefficient à 1 3- mettre les autres coefficients à l’echelle 4- une fois la convolution avec le masque effectuée, diviser le résultat de la somme de produits par la somme des points du masque pour conserver le gain à 1. Image non filtrée
37
Filtrage linéaire passe bas
2. Filtre Gaussien Propriété du filtre gaussien Filtre séparable Filtrer l'image avec le filtre gaussien 1D vertical Filtrer le résultat avec le filtre gaussien 1D horizontal Exemple Autre avantage: moins grande complexité algorithmique si on sépare le filtre. Par exemple: filtre 5 x 5: non=-séparé: 25 multiplications et additions = 49 operations par pixels Séparé: 5 multiplication + 4 additions par pixel x 2 filtres: 18 opérations Filtre 1D vertical : Filtre 1D horizontal :
38
Filtrage passe haut
39
Filtrage linéaire passe haut
Principe des filtres de rehaussement d’arêtes f(x) Une arête est une discontinuité entre deux zones relativement uniformes de l’image
40
Filtrage linéaire passe haut
Effet du bruit sur les filtres de rehaussement d’arêtes Filtre Gradient Filtre Gradient
41
Filtrage linéaire passe haut
1. Filtre Gradient (Masque de Prewitt) Gradient horizontal : Gradient vertical : Attention : la dérivée est sensible au bruit. Faire un filtrage gaussien avant de l'utiliser ou bien appliquer un masque de Sobel. À noter :
42
Filtrage linéaire passe haut
2. Filtre Laplacien… Arêtes aux passages par zéro Plus sensible au bruit LOG : Laplacien d’une gaussienne Ne permet pas de déterminer la direction du gradient Note: pas facile de détecter zéro en programmation. Il faut donc définir une intervalle.
43
Filtrage linéaire passe haut
2. Filtre Laplacien Utilisé aussi en renforcement des contours Image filtrée par le laplacien Image originale Simple somme de l’image originale avec l’image filtrée Image avec contours renforcés Image avec contours renforcés *Tirée de Gonzales & Woods
44
Filtrage non-linéaire
45
Note sur le filtrage non-linéaire
Le résultat n'est pas une combinaison linéaire des pixels de l'image à traiter mais plutôt une fonction non-linéaire telle qu'un min, un max ou la médiane.
46
Opérateurs morphologiques
La segmentation consiste à détecter les arêtes par exemple (ou les régions, ou les zones de texture uniforme). Nous verrons en details plus loin de quoi il s’agit. Tiré de Alain Boucher - IFI
47
Érosion Fonction dans OpenCV : erode.
48
Dilatation Fonction dans OpenCV : dilate.
49
Exemples : Érosion, Dilatation
50
Ouverture – Fermeture... (Fonctions dans OpenCV : Open, Close) 50
51
Ouverture – Fermeture Ouverture: - Les petits détails sont supprimés.
- Les objets « massifs » retrouvent leurs formes. Fermeture: - Les petits trous ou les fentes fines sont bouchés. - Les objets « massifs » retrouvent leurs formes.
52
élimine le bruit impulsionnel préserve mieux les discontinuités
Filtre médian élimine le bruit impulsionnel préserve mieux les discontinuités plus coûteux en calculs** 1- trier les valeurs 2- extraire la médiane *tirée de Efford **S. Perreault et P. Hébert, IEEE Trans. On Image Proc., Vol. 16, No. 9, 2007 proposent une implantation en temps constant. (utilisée dans OpenCV)
53
Filtre médian Filtre passe bas Remarquez l'effet sur le fond
*tirée de Efford
54
Segmentation
55
Plan de la présentation
Traitement des images : Introduction Espaces des couleurs Filtrage Segmentation Contours Points d'intérêt : coins Régions
56
Exploitation des contours Retour au filtrage passe haut
Intérêt Moins sensibles que les régions aux variations d'éclairage Difficultés Contours incomplets (par parties) Il faut regrouper les contours d'un même objet
57
Filtre très répandu pour la segmentation des arêtes: filtre de Canny
58
Extraction de contours (Filtre de Canny)
Calculer les gradients horizontal et vertical (EX et EY) EX EY
59
Extraction de contours (Canny)
Calculer les gradients horizontal et vertical (EX et EY) Calculer les images : EX EY ES
60
Extraction de contours (Canny)
Calculer les gradients horizontal et vertical (EX et EY) Calculer les images : Éliminer les réponses non-maximales Un pixel a une réponse maximale si ses deux voisins, situés dans l'axe de sa normale, ont une réponse inférieure. Un pixel non max est mis à zéro
61
Extraction de contours (Canny)
Calculer les gradients horizontal et vertical (EX et EY) Calculer les images : Éliminer les réponses non-maximales Un pixel a une réponse maximale si ses deux voisins, situés dans l'axe de sa normale, ont une réponse inférieure. Un pixel non-max est mis à zéro. Le seuillage par hystérésis est une exemple de seuillage adaptatif Seuillage par hystérésis (2 seuils) Si réponse du pixel > Seuil 1 Contour Suivre le contour tant que la réponse des pixels rencontrés soit > Seuil 2
62
Extraction de contours (Canny)
5. Sortie du détecteur de contours de Canny : Image de contours (binaire) Exemple sur l’impact du seuillage et l’effet de l’ombrage A 2009 Design III / GEL-3004 (voir aussi : OpenCV : les fonctions canny et findContours)
63
Segmentation : détection des coins
64
Plan de la présentation
Traitement des images : Introduction Espaces des couleurs Filtrage linéaire Segmentation Contours Points d'intérêt : coins Régions
65
Détecteur de coins et points isolés
Détecteur de Harris Constat: les détecteurs d'arêtes se comportent moins bien près des coins Proposition: détecter les endroits où le gradient est fort dans plus d'une direction Réalisation: détecteur de Harris Voir aussi dans Open CV la fonction : Good features to track
66
Détecteur de coins et points isolés
Détecteur de Harris Image originale Coins de l’image originale Image bruitée Coins de l’image bruitée Extrait de : Patrick Labatut (
67
Segmentation : extraction de régions
Théoriquement, une région devrait être délimitée par des discontinuités. Malheureusement, à cause du bruit, chacune n’est pas complémentaire de l’autre. Il est parfois prudent de segmenter en arêtes (ou discontinuités) et de segmenter ensuite en régions (ou l’inverse) et de comparer les résultats pour voir s’ils sont complémentaires et s’ils se renforçent.
68
Plan de la présentation
Traitement des images : Introduction Espaces des couleurs Filtrage Segmentation Extraction de contours Détection de coins Extraction de régions
69
Segmentation en régions
Découper l'image en régions de mêmes caractéristiques Exemples de caractéristiques sur lesquelles on peut segmenter Couleur (caractéristique d'un pixel) Texture (caractéristique de voisinage) Mouvement inter-images (caractéristique de voisinage) Segmentation simple (basée sur les caractéristiques des pixels) 3 étapes Classifier chaque pixel Ex. : 0 Noir 1 Blanc 2 Jaune 3 Rouge 4 Autre Regrouper par régions Regrouper les pixels connexes de même classe. 3. Étiqueter les régions
70
Segmentation en régions
Étape 1 – Classifier chaque pixel… Chaque pixel est caractérisé par la valeur de ses paramètres Paramètres : H, S et V si on désire segmenter sur la couleur Modèle : Intervalle sur les paramètres 1 classe Ex. : Jaune Comment choisir les intervalles pour que les régions soient représentatives ? Ex. : On désire mettre en évidence des objets d'une couleur distincte Mesure directe (un modèle basé sur un ensemble d'images) Analyse d'histogramme (pour adaptation automatique d'intervalles)
71
Segmentation en régions
Étape 1 – Classifier chaque pixel… Analyse d'histogramme On tente de séparer les différents modes de l'histogramme Cette procédure peut être automatisée: Des commandes existent pour calculer automatiquement le seuil (e.g. Matlab : Graythreshold) Histogramme d'une image en niveaux de gris (Ex: canal V dans HSV) Un histogramme représente la distribution du nombre de pixels ayant une propriété commune donnée (niveau de gris, couleur, etc.) Seuil
72
Segmentation en régions
Étape 1 – Classifier chaque pixel… Analyse d'histogramme Seuillage adaptatif (Efficace pour ombrage ou éclairage non uniforme) Seuil Seuil *Tirée de Pratt Dans OpenCV, voir les fonctions threshold et adaptive threshold.
73
Segmentation en régions
Étape 1 – Classifier chaque pixel… Autre option efficace pour ombrage ou éclairage non uniforme: Fonction morphologique TOP HAT (Image d’origine – Son ouverture) Ouverture: érosion suivie d’une dilatation Ici, avec top hat (avec grand élément structurant pour l’erosion et la dilatation), on élimine les objets, on conserve le fond et on le soustrait de l’image avec top hat *Tirée de Gonzales and Woods Éclairage non uniforme Dans OpenCV, voir la fonction tophat.
74
Segmentation en régions
Étape 1 – Classifier chaque pixel… Analyse d'histogramme On tente de séparer les différents modes de l'histogramme Cette procédure peut être automatisée Histogramme des couleurs (Canal H dans HSV)
75
Segmentation en régions
Étape 2 – Regrouper par régions... Regrouper les pixels connexes de la même classe pour former des régions.
76
Segmentation en régions
Étape 2 – Regrouper par régions Regrouper les pixels connexes de la même classe pour former des régions. Définition de la connexité (voisinage) p p Connexité à 4 voisins Connexité à 8 voisins *Tirée de Efford p et q sont connexes-4 si q est dans N4(p) p et q sont connexes-8 si q est dans N8(p)
77
Segmentation en régions
Étape 3 – Étiqueter les régions... On désire donner une valeur commune (étiquette) pour les pixels d'une région. On désire avoir une valeur différente pour chaque région.
78
Segmentation en régions
Étape 3 – Étiqueter les régions...
79
Segmentation en régions
Étape 3 – Étiqueter les régions...
80
Segmentation en régions
Étape 3 – Étiqueter les régions...
81
Segmentation en régions
Étape 3 – Étiqueter les régions
82
Segmentation en régions
Exploitation du résultat de la segmentation Pour une étiquette donnée, récolter diverses informations : Nombre de pixels, largeur, hauteur, centre, point de contact avec le sol, etc. Définir des critères pour éliminer les régions sans intérêt Par exemple : On cherche la ligne rouge. On n'est pas intéressé par le rouge sur le chandail en arrière-plan. Exemples de critères Rapport Hauteur/Largeur Un cercle couvre (p/4)*100% de la surface de son "bounding box"; Un rectangle, près de 100% Position du centre de gravité etc. (Il s’agit souvent des critères empiriques, soyez inventifs !)
83
Conclusion Considérations calculatoires: le traitement d'images sur les pixels est très coûteux. Quel est le temps raisonnable de calcul ? Est-il acceptable de travailler à mi-résolution ? Références intéressantes sur la vision: OpenCV : Digital image processing (Gonzales and Woods)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.