• Aucun résultat trouvé

Introduction à la vision artificielle

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction à la vision artificielle"

Copied!
57
0
0

Texte intégral

(1)

Introduction à la vision artificielle

Première partie


Traitement des images"

Patrick Hébert

Génie électrique et génie informatique Université Laval

*collaboration Éric Samson

(2)

  Le robot utilise la vision pour percevoir l'environnement

Mise en contexte"

(3)

  Qu'est-ce que la caméra permet au robot de faire?

•  Localiser les objets sur le terrain, i.e. évaluer la position relative au robot

•  Évaluer sa position et son orientation sur le terrain (par rapport aux bandes, coins, à la ligne rouge)

  Que fournit la caméra?

•  Des images (d’un certain type)

  Que faut-il faire avec ces images?

•  Extraire et reconnaître des informations utiles dans les images (traitement des images)

•  les coins et les bandes de couleurs connues (régions et droites)

•  les autres objets (images d’objets rectangulaires de couleurs connues)

•  Établir la relation entre la position de ces zones d'intérêt de l'image et l'environnement (le terrain) incluant le robot Magny

•  la relation pixel  mm

Mise en contexte"

(4)

Structure du cours"

•  Le cours d'introduction à la vision couvre en particulier 2 étapes du processus de vision qui sont nécessaires à l'atteinte de ces objectifs :

1. Reconnaître les objets dans les images

Traitement des images (première partie)

2.  Calculer la position des objets par rapport au robot

Étalonnage géométrique de la caméra et du système (deuxième partie)

•   À ces deux blocs s’ajouteront quelques considérations

sur la robotique et l’intelligence artificielle

(5)

Mise en contexte"

  Ces deux étapes s'inscrivent dans le cycle global

"perception/action" du processus de vision

1.  Perception initiale de l'environnement Formation des images/acquisition

2.  Traitement des images et reconnaissance

Repérer les objets de l'aire de travail dans l'image 3.  Analyse des données

Calculer la position des objets et du robot 4.  Planification et prise de décision

Déterminer la prochaine commande à transmettre au robot 5.  Exécution

Transmission de la commande au robot

(6)

Principe de la caméra"

Caméra numérique  Plan image = Matrice de photodétecteurs

*À la leçon 2, nous verrons le détail de la formation des images

(7)

Image numérique"

Image numérique : Matrice d'illuminance

•  Chaque pixel donne la quantité de lumière reçue par le photodétecteur correspondant

•  niveau de gris

*tirée de Trucco et Verri

(8)

Image numérique couleur"

•  Les 3 couleurs primaires: RVB (ou RGB en anglais)

•  Représentation: un vecteur de 3 canaux ou une matrice de

vecteurs de dimension 3 OpenCV:entrées/sorties

(9)

Terminologie"

•  champ de vue

Comment mesurer le champ de vue?

(placer la caméra devant un mur à au moins 1 m!)

•  plage dynamique: écart entre le plus petit et le plus grand niveau

d'illuminance exemple:

256 niveaux pour une image 8 bits

**tirée de Forsyth

(10)

Plan de la présentation"

  Traitement des images : Introduction

•  Espaces des couleurs

•  Filtrage

•  Segmentation

  Extraction de régions

  Extraction de contours

  Détection de coins

•  Conclusion

(11)

Traitement des images : introduction"

•  Le traitement simple des images peut se faire en 2 étapes:

1.  Traitement de bas niveau

Opérations sur les pixels

-  Filtrage

-  Regroupement en régions -  Détection de contours

-  Détection de points d'intérêt (coins)

2.  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?

(12)

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!)

•  Point de vue différent

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 déformation de perspective

-  La réflectance des matériaux

•  Bruit du capteur

• 

(13)

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)

•   Robustesse au niveau de l'interprétation (validation)

"et/ou"

(14)

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)

•  Robustesse au niveau de l'interprétation

Attention : La robustesse implique souvent un traitement plus complexe donc plus long. Ex. Confirmer la détection en utilisant un 2

e

traitement (différent).

"et/ou"

(15)

Plan de la présentation"

  Traitement des images : Introduction

   Espaces des couleurs

•  Filtrage

•  Segmentation

  Extraction de régions

  Extraction de contours

  Détection de coins

•  Conclusion

(16)

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 (Rouge, Vert, Bleu)

– 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.

*Tiré de Pratt

(17)

Espaces des couleurs"

•  L'espace RGB (suite)

– Largement utilisé en informatique (moniteurs)

– Teintes de gris  R=G=B

le long de la diagonale – Couleurs additives

(18)

Espaces des couleurs"

  Autres espaces

– Couleurs soustractives – Utilisé pour l'imprimerie

•  CMY[K]

•   YIQ, YUV, YCrCb, YCC, etc (Luminance-Chrominance)

Y Luminance

Deux autres variables Définissent la couleur (tendances rouge et bleue) – Utilisé pour la transmission d'image vidéo (NTSC, PAL)

– Si vous examinez le code d’acquisition des Quickcam, vous en saisirez tout l’intérêt

Cyan, Magenta, Yellow

[K] Noir

(19)

Espaces des couleurs"

•  HSI (ou HSV)  Teinte (H), Saturation (S), Intensité(I)

–  Séparation de la teinte 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 couleur mais intensité différente.

–  I: intensité (illuminance) I=(R + V + B) / 3

–  La couleur est contenue dans H (Hue) : un angle (0  360°)

–  S (Saturation): un rayon entre 0 et 1 (pureté)

•  S = 0 -> gris

•  S = 1 -> couleur pure!

•  (ou bien entre 0 et 255)

(20)

Espaces des couleurs"

•  Passage RGB  HSI

–  Rotation du cube de l'espace RGB tel

que la diagonale est alignée avec l'axe Z

et la composante R est dans le plan XZ

(21)

Espaces des couleurs"

•  Passage RGB  HSI : Formules

• RGB to HSI (Gonzalez and Woods)

 I = 1/3(R+G+B)

 S = 1 - ( 3/(R+G+B))*a

where a is the minimum of R, G and B

 H = cos^(-1) ( (0.5*((R-G)+(R-B))) / ((R-G)^2 + (R-B)*(G-B))^(0.5) )

 If S = 0, H is meaningless.

 If (B/I) > (G/I) then H = 360 – H

 Since H is an angle in degrees we then normalise to [0,1] with H=H/360

(22)

Espaces des couleurs"

•  Passage RGB  HSV : Formules

documentation opencv : cvCvtColor

•  V=max(R,G,B)  

•  S=(V-min(R,G,B))*255/V if V!=0, 0 otherwise  

•  H = (G - B)*60/S, if V=R  

•  H = 180+(B - R)*60/S, if V=G  

•  H = 240+(R - G)*60/S, if V=B  

•  if H<0 then H=H+360 


•  The hue values calculated using the above formulae vary from 0° to 360° so they are

divided by 2 to fit into 8-bit destination format.

Autre référence sur les conversions: http://en.wikipedia.org/wiki/HSL_and_HSV

(23)

Espaces des couleurs : Exemple"

(gauche) Image originale;

(centre) diminution de 20% de la saturation (droite) augmentation de 40% de la saturation

Tirée de Stockman et Shapiro

(24)

Plan de la présentation"

  Traitement des images : Introduction

   Espaces des couleurs

  Filtrage

•  Segmentation

  Extraction de régions

  Extraction de contours

  Détection de coins

•  Conclusion

(25)

Filtrage linéaire"

•  Convolution de l'image avec un masque (noyau) fixe

–  La convolution est une opération linéaire

•  symétrique A * E = E * A

•  associative A * (B * E) = (A * B) * E

Équation de convolution Exemple de masque

lien sur traitement d'images dans opencv (voir cvSmooth)

(26)

Filtrage linéaire"

•  Exemple de filtre : Le filtre de moyennage

–  Chaque pixel de l'image résultat prend comme

valeur la somme pondérée des pixels voisins.

(27)

Filtrage linéaire"

•  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 …

(28)

Filtrage linéaire"

–  On choisit la taille du filtre (pixel) –  On prend

Exemple :

Filtres 1D :

(voir cvSmooth)

(29)

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.

(30)

Note sur le filtrage non-linéaire: 


Les opérateurs morphologiques "

•  min-max

•  élément structurant (s: forme du filtre)

•  érosion (min) et dilatation (max)

•  ouverture (une érosion suivie d'une dilatation):

f o s

•  fermeture (une dilatation suivie d'une érosion):

f s

•  images binaires et en niveaux de gris

*utile pour du nettoyage dans l'image: Morphologie dans opencv

(31)

a) choix de l'élément structurant:

signal:

b) dilatation c) érosion

Exemple dʼune fermeture 1D"

(32)

*tirée de Efford

Ouverture et fermeture sur une image binaire"

(33)

Retour au filtrage linéaire: rehaussement dʼarêtes"

•  Calcul du gradient (dérivée première pour le rehaussement d'arêtes)

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 :

OpenCV: gradient, edges and corners

(34)

Filtrage linéaire: rehaussement dʼarêtes"

•  Laplacien (dérivée seconde pour le rehaussement d'arêtes)

Laplacien :

Arêtes aux passages par zéro

(35)

Plan de la présentation"

  Traitement des images : Introduction

   Espaces des couleurs

  Filtrage

  Segmentation

  Extraction de régions

  Extraction de contours

  Détection de coins

•  Conclusion

(36)

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

•  Illuminance, 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) 2 étapes

1.  Classifier chaque pixel

Ex. : 0  Noir 1  Blanc

2  Jaune 3  Rouge 4  Autre

2.  Regrouper par régions

Regrouper les pixels connexes portant la même étiquette.

(37)

Segmentation en régions"

•  Segmentation : Étape 1 – Classifier chaque pixel

•  Chaque pixel est caractérisé par la valeur de ses paramètres

Paramètres : H, S et I (ou V) si on désire segmenter sur la couleur

•  Modèle: Intervalle sur les paramètres 1 étiquette

Ex. : Jaune si H est en radians Attention : HSI H invalide lorsque

 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)

(38)

Segmentation en régions"

•  Analyse d'histogramme

–  On tente de séparer les différents modes de l'histogramme –  Cette procédure peut être automatisée

Histogramme d'une

image en ton de gris

(39)

Segmentation en régions"

•  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

(variable H de HSI)

(40)

Segmentation en régions"

•  Segmentation : Étape 2 – Regrouper par régions

•  Regrouper les pixels connexes portant la même étiquette pour former des régions de mêmes caractéristiques

*tirée de Efford

 Définition de la connexité

Connexité à 4 voisins

Connexité à 8 voisins

(41)

Segmentation en régions"

•  Segmentation : Étape 2 – Regrouper par régions : Algo. (1/2)

Entrée

• Image d'étiquettes

• # des étiquettes à regrouper

Sortie

• Image de régions :

Pour chaque pixel ayant l'étiquette spécifiée en entrée : le numéro de la région à laquelle il appartient.

Par exemple :

• Entrée : Étiquette à regrouper Noir

• Sortie : Pixels avec comme attributs (2) - Noir région 1

- Noir région 2 - 

- Noir région N

(42)

Segmentation en régions"

•  Segmentation : Étape 2 – Regrouper par région : Algo. (2/2)

Procédure

•  Bien qu'on puisse développer un algorithme simple sans trop de

difficultés, il est possible d'étiqueter efficacement (en une seule passe) toutes les régions connexes.

•  On suggère: cvConnectedComp

(43)

Segmentation en régions"

•  Validation du résultat de la segmentation

•  Pour une étiquette donnée, récolter diverses informations sur les différentes régions :

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

 Exemple de critères :

•  Ratio Hauteur/Largeur

•  Un cercle couvre (pi/4)*100% de la surface de son "bounding box"; Un rectangle, près de 100%

•  Position du centre de masse

•  Etc. (Ce sont souvent des critères empiriques, soyez inventifs !) Par exemple : On cherche la ligne rouge. On

n'est pas intéressé par le rouge sur le chandail en arrière-plan.

(44)

Plan de la présentation"

(45)

Exploitation des contours"

•  Intérêt:

– Moins sensibles que les régions aux variations d'éclairage

– Des primitives intéressantes: une droite se projette (en théorie) comme une droite!

•  Difficultés:

– Contours incomplets (par partie)

– Il faut aussi regrouper les contours d'un même

objet

(46)

Extraction de contours (Canny)"

1.  Calculer les dérivées horizontale et verticale (E

X

et E

Y

)

E

X

E

Y

(47)

Extraction de contours (Canny)"

1.  Calculer les dérivées horizontale et verticale (E

X

et E

Y

) 2.   Calculer les module et orientation

en chaque pixel :

E

X

E

Y

E

S

(48)

Extraction de contours (Canny)"

1.  Calculer les gradients horizontal et vertical (E

X

et E

Y

) 2.   Calculer les images :

*tirée de Trucco

  Orientation de la normale au contour

Significatif seulement lorsque ES est non-nul (i.e. aux endroits près d'un contour)

(49)

Extraction de contours (Canny)"

1.  Calculer les gradients horizontal et vertical (E

X

et E

Y

) 2.   Calculer les images :

3.   É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.

(50)

Extraction de contours (Canny)"

1.  Calculer les gradients horizontal et vertical (E

X

et E

Y

) 2.   Calculer les images :

3.   É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, on une réponse

inférieur. Un pixel non-max est mis à zéro.

4.  Seuillage par hystérésis (2 seuils)

1.  Si réponse du pixel > Seuil 1 Contour

2.  Suivre le contour tant que la réponse des pixels rencontrés soit > Seuil 2

•  Ce type de seuillage évite les contours segmentés

•  Souvent : Seuil 1 = 2*Seuil 2

(51)

Extraction de contours (Canny)"

1.  Sortie du détecteur de contours de Canny :

Image de contours (binaire) (voir aussi: OpenCV: edges)

(52)

Plan de la présentation"

(53)

•  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 OpenCV Good features to track

Détecteur de coins et points isolés"

(54)

• Détecteur de Harris

Entrée : Image d'intensité, taille N de la fenêtre de traitement (entre 2 et 10 pixels) et un seuil Sortie : Une liste de coins

Détecteur de coins et points isolés"

Procédure :

1.  Calculer les images de gradients EX et EY 2.  Pour tous les points de l'image

Estimer la matrice de covariance du gradient (dans une fenêtre 2N+1 * 2N+1) et en extraire les valeurs propres (λ1 et λ2 avec λ2 ≤ λ1).

3.  Si la valeur propre minimale (λ2 ) > seuil  coins 4.  Trier les coins dans un ordre décroissant selon λ2

5.  En parcourant les coins triés, on élimine les autres coins se trouvant dans le voisinage du coin courant

(55)

• Détecteur de Harris

–  Exemples de résultats

Détecteur de coins et points isolés"

*tirées de Trucco

(56)

• Autre méthode de détection

Utilise le résultat de l'extraction de contours

•  Ajuster des droites sur les contours de normale constante

•  Les coins sont à l'intersection des droites

Détecteur de coins et points isolés"

(57)

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 à demi- résolution?

•  Autre référence intéressante sur la vision:

–  CVonline:

http://www.dai.ed.ac.uk/CVonline

Références

Documents relatifs

Enfin, vous êtes très ennuyé car vous devez faire remarquer au metteur en scène que le maillot de l’actrice ne doit absolument pas être magenta pour être vu quand elle va

•  L'idée est toujours la même : trouver les paramètres permettant de faire le &#34;mapping&#34; entre les points de l'espace et leur position dans l'image.. Étalonnage

 On refait la même expérience avec une feuille cartonnée noire, une feuille transparente, une feuille simple blanche et une feuille cartonnée de couleur.. Note

 On éclaire en lumière blanche 6 disques colorés opaques de couleur respective vert, cyan, bleue, magenta, rouge et jaune. Voir Figure 10. 1) Si l’on applique un filtre vert sur

Ainsi, dans ce qui suit on considère un registre comme une fonction, qui a pour donnée une exécution valuée (où les écritures sont affectées d'une valeur), et dont le résultat est

Prévoir l'effet d'un filtre &#34;cyan&#34; sur la lumière blanche d'une lampe à incandescence et sur son spectre6. Prévoir l'effet d'un filtre &#34;jaune&#34; sur la lumière

On a disposé sur une table un pointeur laser de lumière rouge, un miroir et un écran blanc, selon le schéma ci-dessous. a) Indique précisément sur le schéma à quel

La zone de visibilité d’un objet est la région dans laquelle un observateur doit se trouver pour voir l’objet..