Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez...

19

Transcript of Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez...

Page 1: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Vision industrielle

Travaux pratiques

Localisation et tri d'objets pour la robotique

HEI 4

Domaine Energies, systèmes électriques et automatisés (ESEA)

Vandenbroucke Nicolas [email protected]

Page 2: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le
Page 3: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Sous votre répertoire de travail, créer un dossier à votre nom dans lequel vous enre-gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab.Le travail réalisé devra être remis sous forme d’un ou plusieurs fichier Matlab exé-cutable. Ces fichiers, une fois exécutés, doivent répondre à la problématique du TP.Le compte-rendu de TP sera directement rédigé sur un logiciel de traitement de texteet rendu à la fin du TP également sous forme d’un fichier PDF. Ce compte-rendu deTP devra faire apparaître :• une introduction qui précise le contexte pédagogique du TP, la probléma-

tique, les enjeux ainsi que le champ d’application ;• la présentation de l’application et des éléments matériels : les objectifs à at-

teindre doivent notamment être présentés avec toutes les images acquises àtraiter ;• Pour chaque question posée :

— une réponse claire et justifiée où les valeurs des paramètres devront enparticulier être précisées,

— la méthodologie appliquée avec une explication pédagogique des outils detraitement mis en oeuvre,

— le nom du programme Matlab correspondant avec les explications néces-saires (sans inclure le code dans le compte rendu),

— les résultats obtenus et les temps de traitement sous forme d’images et/oude tableaux synthétiques avec commentaires, interprétations et conclu-sions ;

• une conclusion qui souligne les connaissances et les compétences acquisesainsi que les axes d’amélioration avec notamment les difficultés rencontréeset les remarques personnelles.

L’objectif de ce TP consiste à localiser et trier des objets extraits d’une image par segmentation enrégions. Les objets traités sont des pièces ou jetons de couleurs, de formes et de tailles différentes. Lasegmentation d’une image consiste à isoler les différents objets présents dans une image. La méthode laplus simple pour cela est de seuiller ou binariser une image à partir des niveaux de gris des pixels ou de leurcouleur.

Les images seront acquises et analysées à l’aide du logiciel Matlab. Matlab est associé à des boitesà outils appelé TOOLBOX permettant d’accéder à des fonctions spécifiques à un domaine d’applicationcomme le traitement d’images par exemple. Les TP de traitement d’images réalisés avec Matlab nécessitentainsi la toolbox Image Acquisition et la toolbox Image Processing.

1 Rappel sur MatlabLa figure 1 montre la décomposition de Matlab en plusieurs fenêtres :• une fenêtre d’édition des commandes (Command Window),• deux fenêtres contenant un onglet de visualisation de l’espace des variables (Workspace), un onglet

de visualisation des fichiers du répertoire de travail (Current Directory) et un onglet de visualisa-tion de l’historique des commandes (Command History).• une fenêtre d’édition avec un onglet permettant de visualiser le contenu de fichiers (Editor) et un

onglet permettant de visualiser le contenu des variables (Array Editor).

TP de vision industrielle 3

Page 4: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Figure 1 – Le logiciel de calcul scientifique Matlab

Les fonctions sont éditées dans la fenêtre de commandes et exécutées en appuyant sur la touche Entrée.Le point virgule à la fin d’une fonction permet d’éviter d’afficher les données résultats de la fonction exécu-tée ou de séparer plusieurs fonctions sur une même ligne de commande. Plusieurs fonctions et commandespeuvent être saisies dans un fichier qui sera enregistré avec l’extension .m. En éditant le nom de ce fichierdans la fenêtre de commande, l’ensemble des fonctions déclarées dans ce fichier seront exécutées. L’éditionde ce fichier peut s’effectuer en sélectionnant dans le menu File : New IM-�le. Il est également possibled’y créer des fonctions en utilisant la commande function.

La fonction figure permet de générer une fenêtre graphique permettant de visualiser les données(courbes, images, ...). la fonction close permet de fermer la fenêtre active et close all permet de fer-mer toutes les fenêtres. Les fonctions title, xlabel, ylabel permettent respectivement d’afficher un titreà la figure, le nom de l’axe des abscisses et le nom de l’axe des ordonnées. La fonction subplot permetd’afficher plusieurs graphiques ou images au sein d’une même figure.

La fonction clear efface les variables mises en mémoire durant une session Matlab tandis que la fonc-tion clc efface le contenu de la fenêtre de commande. La fonction pause permet de mettre en veille lafenêtre de commandes de Matlab et les fonctions disp, display ou celldisp permettent l’affichage detextes ou de données dans la fenêtre de commandes de Matlab.

Enfin, les instructions tic et toc permettent de mesurer les temps d’exécution.

L’opérateur % permet d’introduire un commentaire tandis que l’opérateur %% constitue un séparateurdans le script (en plus du commentaire qui le suit), ce qui permet d’excécuter la partie du programme situéeentre deux séparateurs.

Chaque variable déclarée dans Matlab est stockée dans l’espace des variables à partir duquel il estpossible de consulter la taille et le type de la variable ainsi que d’éditer son contenu par un double-click surle nom de la variable. Les variables Matlab sont des objets de type structure ou des tableaux à n dimensions.

TP de vision industrielle 4

Page 5: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Ainsi, un scalaire est un tableau de taille 1× 1 ; un vecteur est un tableau à 1 dimension de taille 1× n ;une matrice est un tableau à 2 dimensions de taille m× n... Il est ensuite possible d’accéder facilement autableau, à un élément du tableau, à une ou plusieurs dimensions particulières du tableau.

Une image monochrome est donc un tableau à 2 dimensions. Si I est la variable contenant les donnéesd’une image à niveaux de gris, l’instruction I(1,1) renvoie la valeur du pixel de coordonnées (1,1). L’ins-truction I(:,1) renvoie les valeurs des pixels de la première colonne et l’instruction I(1,:) renvoie lesvaleurs des pixels de la première ligne...

Pour créer le vecteur V = [1 2 3 4 ] par exemple, il faut saisir l’instruction V=[1 2 3 4]. Pour créer lamatrice M =

[1 23 4

]par exemple, il faut saisir l’instruction M=[1 2; 3 4]...

Certaines opérations arithmétiques sur les tableaux peuvent être effectués de deux manières :• de manière matricielle avec les opérateurs : *, / ou �,• éléments par élément avec les opérateurs : .*, ./ ou .�.

2 Acquisition

2.1 Mise au point du système de visionLe matériel d’acquisition est composé de :• une caméra couleur IDS uEye de modèle UI-1245LE (voir datasheet),• un objectif Fujinon de focale f = 25 mm,• un éclairage annulaire à LEDs blanc de diamètre intérieur égal à 16 mm et de diamètre extérieur

égal à 52 mm.

La caméra est fixée sur un statif et est reliée au PC par le port USB.Un pilote Windows spécifique permet de communiquer entre le PC et la caméra.La fonction imaqhwinfo permet l’obtention d’informations sur le matériel et les pilotes installés.

L’acquisition d’une image sous Matlab peut-être réalisée de deux manières :• par la création d’un objet d’entrée vidéo en utilisant la fonction videoinput. Cette fonction affiche

également les principales propriétés de l’objet d’entrée vidéo créé.• par l’utilisation d’une interface en utilisant la fonction imaqtool.

La première méthode nécessite d’utiliser, dans un script, les instructions permettant l’acquisition d’uneimage. Elle permet d’ajouter dans ce même script les instructions qui permettent de traiter l’image dèsl’acquisition effectuée. Cette méthode est présentée en annexe (voir page 17).

La seconde méthode lance une application permettant d’acquérir une image mais oblige à enregistrercette image avant de la traiter. C’est cette méthode qui sera utilisée dans ce TP. Le lancement de cetteapplication ouvre la fenêtre de la figure 2

TP de vision industrielle 5

Page 6: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Figure 2 – Application d’acquisition d’image sous Matlab

Pour acquérir une image ou une vidéo (séquence d’images), il faut alors suivre les étapes suivantes :

1. Choisir le format d’image : on utilisera des images 1280×1024 au format RGB codées sur 3×8 =24 bits.

2. Sélectionner l’espace couleur : On choisira un codage en échelle de gris (grayscale).

3. Fixer les paramètres d’acquisition (voir figure 3) : on veillera en particulier à effectuer tous lesréglages en mode manuel, à minimiser les paramètres de gain et de contraste qui ont pour effetd’accentuer le bruit et à maximiser le temps d’exposition afin de fermer l’objectif.

4. Régler le nombre d’images à acquérir et le moment de leur déclenchement : une seule image devraêtre acquise immédiatement après l’appui sur le bouton Start Acquisition.

5. Démarrer la prévisualisation : l’appui sur le bouton Start Preview permet de visualiser l’image. Leréglage du système peut alors être effectué et les paramètres ajustés si nécessaire.

6. Acquérir l’image : l’appui sur le bouton Start Acquisition déclenche l’acquisition de l’image.

7. Enregistrer l’image : l’appui sur le bouton Export Data permet d’enregistrer l’image dans un fichier.On choisira les fichiers au format PNG.

TP de vision industrielle 6

Page 7: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Figure 3 – Paramètres d’acquisition

On suppose, dans ce TP, que plusieurs objets en vrac peuvent apparaître devant la caméra.

1) Placer 2 à 3 objets différents dans le champ de vision de la caméra en prenant soin de les séparer etde les éloigner du bord, puis, en utilisant l’application Matlab :• Prévisualiser l’image et ajuster les paramètres de réglage.• Ajuster la distance de travail de sorte à obtenir une précision P (résolution spatiale) de 0,05 mm/pixel

et mesurer cette distance.• Effectuer le réglage de la mise au point et de l’ouverture de l’objectif de la caméra. On veillera

à régler correctement la caméra et les paramètres d’acquisition afin d’obtenir une image de bonnequalité avec le minimum d’ombres et de reflets. Indiquer les valeurs de réglage. Les images serontacquise directement en niveau de gris.• Enregistrer l’image au format PNG sous le nom Image0.png.• Calculer la distance de travail D ainsi que les longueur L et largeur l du champ de vision de votre

système. Conclure par rapport aux mesures effectuées.

2.2 Acquisition et lecture d’une séquence d’image

2) Répéter les acquisitions afin de constituer une séquence de dix images qui sera utilisée pour mettreau point le programme de localisation et de tri. Chaque image doit contenir un, deux ou trois objets avec destailles, des formes et des couleurs différentes avec des cas d’objets qui ne sont pas en contact et quelques casd’objets qui se touchent mais sans de chevaucher. Chaque image portera le nom Image et sera numérotéede 0 à 9.

Dans la suite des manipulations, on mettra au point les algorithmes d’abord sur la première image

TP de vision industrielle 7

Page 8: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

uniquement avant de les tester sur l’ensemble des images de la séquence préalablement enregistrée ensuite,une fois les paramètres correctement ajustés.

Le chargement en mémoire d’une image se fait avec la fonction imread. Par exemple, la fonctionsuivante permet de lire une image et de placer son contenu dans une variable de type matrice :

I = imread ( ’ Image0 . png ’ ) ;

Cette variable est alors visible dans le Workspace (espace des variables) de Matlab. La fonction whos

permet d’afficher toutes les informations relatives aux variables en mémoire et la fonction imfinfo afficheles informations relatives à un fichier image.

L’affichage de l’image (ou de la variable) est réalisé par la fonction imshow. Ainsi les fonctions suivantesouvrent une nouvelle fenêtre pour y afficher l’image I.

f i g u r e ; imshow ( I ) ;

Les fonctions imwrite et print permettent la sauvegarde, respectivement, des images et des figuressous différents formats (tif, jpg, bmp, pcx, png, gif, emf, eps, ...).

2.3 Types des images en mémoireMatlab supporte 4 formats d’images :• les images binaires,• les images monochromes (image d’intensité ou à niveaux de gris),• les images couleur RGB,• les images couleur indexées.

Il est possible de changer de format en utilisant les fonctions suivantes :• ind2gray : indexé→ monochrome,• ind2rgb : indexé→ RGB,• rgb2ind : RGB→ indexé,• rgb2gray : RGB→ monochrome,• im2bw : monochrome, indexé, RGB→ binaire : c’est l’opérateur de binarisation. Une image binaire

peut être également obtenue en utilisant des opérateurs de comparaison et des opérateurs logiques.Par exemple, les instructions (I==seuil) ou ((I>=seuil_bas) & (I<seuil_haut)) permettentd’obtenir des images binaires par comparaison des niveaux des pixels d’une image I à des valeursde seuils.

Les valeurs des pixels de ces images peuvent être de différents types :• logique (0 ou 1 pour les images binaires),• entier non signé codé sur 8 bits (entre 0 et 255),• entier non signé codé sur 16 bits (entre 0 et 65535),• réel (entre 0 et 1).

Il est possible de changer le type des variables en utilisant les fonctions suivantes :• im2double : codage d’images en type réel,• im2uint8 : codage d’images en type entier non signé sur 8 bits,• im2uint16 : codage d’images en type entier non signé sur 16 bits,• double conversion de données en type réel,• uint8 conversion de données en type non signé sur 8 bits,• uint16 conversion de données en type non signé sur 16 bits.

TP de vision industrielle 8

Page 9: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Les images binaires sont codées en entier logique ou en réel logique et leurs pixels ont des valeursuniquement égales à 0 ou à 1. L’affichage d’une image peut se faire, soit en réel et les valeurs des pixels sontalors comprises entre 0.0 et 1.0, soit en entier et les valeurs des pixels sont alors comprises, par exemple,entre 0 et 255 pour des entiers non signés codés sur 8 bits.

2.4 Manipulation des imagesCertaines fonctions ou certains outils de Matlab permettent des manipulations interactives sur une image

contenue dans une figure ou non :• imageinfo : retourne les information de l’image dans la figure ou d’un fichier image,• zoom : zoom sur une zone de l’image de la figure,• imcrop : sélectionne une zone de l’image,• improfile : affiche le profil d’une ligne sélectionnée,• impixel : retourne les valeurs des pixels sélectionnés,• impixelinfo : affiche la position et les valeurs d’un pixel pointé avec la souris,• impixelregion : affiche les valeurs des pixels dans une région sélectionnée avec la souris,• imdistline : affiche la distance entre deux pixels sélectionnés,• imdisplayrange : affiche l’intervalle des valeurs des pixels de l’image,• imcontrast : réajuste une image,• imtool : outil qui utilise les outils précédents.

D’autres fonctions permettent des opérations géométriques sur l’image :• imresize : ré-échantillonnage de l’image (homothétie),• imrotate : rotation de l’image.

3 Pré-traitementAfin de détecter les objets présents, on propose de procéder à une binarisation. Généralement, on attribue

les pixels blancs (égales à 1) à la forme de l’objet présent dans une image binaire (avant plan) et les pixelsnoirs (égales à 0) au fond (arrière plan). L’histogramme de l’image est alors souvent utilisé pour déterminerle seuil de binarisation. Des traitements supplémentaires sont aussi parfois nécessaires pour améliorer lerésultat du seuillage.

3.1 L’histogrammeLe script suivant permet d’ouvrir une image et d’afficher dans un même graphique cette image ainsi que

son histogramme. Il permet également de mesurer le temps de ce traitement.

%% Histogramme

c l e a r a l l ; % e f f a c e t o u t e s l e s v a r i a b l e s en mémoirec l o s e a l l ; % ferme t o u t e s l e s f e n ê t r e s o u v e r t e sc l c ; % e f f a c e l e c o n t e n u de l a f e n ê t r e de commande

t i c % mesure du temps pour chronomè t rage ( d é b u t )

% O u v e r t u r e de l ’ imageI = imread ( ’ Image0 . png ’ ) ;

% A f f i c h a g e de l ’ imagef i g u r e ; imshow ( I , ’ Borde r ’ , ’ t i g h t ’ ) ; i m p i x e l i n f o ;

TP de vision industrielle 9

Page 10: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

%% C a l c u l e t a f f i c h a g e de l ’ h i s togramme e t de l ’ image dans une même f i g u r e

% I = rgb2gray ( I ) % t r a n s f o r m e une image c o u l e u r en image monochrome s i n é c e s s a i r e

f i g u r e ; % ouvre une n o u v e l l e f i g u r e

s u b p l o t ( 1 , 2 , 1 ) ; % s e l e c t i o n n e l e p r e m i e r cadran de l a sous− f i g u r e% d i v i s é e en 1 l i g n e e t 2 c o l o n n e s

imshow ( I ) ; % a f f i c h e l ’ image dans l e cadran s é l e c t i o n n és u b p l o t ( 1 , 2 , 2 ) ;i m h i s t ( I ) ; % c a l c u l e e t a f f i c h e l ’ h i s togramme dans l e cadran s é l e c t i o n n é

i m p i x e l i n f o ; % a f f i c h e l a p o s i t i o n e t l e s v a l e u r s du p i x e l p o i n t é à l a s o u r i s

t o c % mesure du temps pour chronomè t rage ( f i n )

3) Saisir et exécuter le script précédent et déterminer un seuil permettant de séparer les objets del’arrière-plan.

3.2 Binarisation

4) Ecrire un nouveau script permettant :• d’ouvrir et afficher une image de la séquence ainsi que les coordonnées et niveaux des pixels pointés

à la souris,• de transformer l’image couleur acquise en image monochrome si nécessaire et d’afficher cette

image,• de calculer et d’afficher l’histogramme de l’image monochrome,• de binariser cette image de telle sorte à obtenir des objets en blanc et un fond en noir. Si plusieurs

binarisations sont nécessaires, utiliser les opérateurs logiques (fonctions imcomplement (�), or (|),xor et and (&)) pour obtenir l’image. Indiquez la valeur du ou des seuil(s) de binarisation.

3.3 Opérations sur images binairesLa fonction imclearborder est une fonction qui permet de supprimer des régions qui sont au contact

des bords de l’image binaire. La fonction bwareaopen, basée sur une analyse en composantes connexes,permet de supprimer des régions de trop petites tailles dans une image binaire. La fonction imfill est unefonction qui permet de combler les "trous" dans les régions d’une image binaire.

5) En utilisant ces trois fonctions, compléter le script afin de traiter l’image binarisée pour obtenir uneimage dans laquelle les formes correspondent au mieux aux objets de la scène réelle (voir figure 5).

TP de vision industrielle 10

Page 11: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Figure 4 – Image acquise. Figure 5 – Image binaire.

4 Localisation d’objets isolés

4.1 Détection

Les fonctions suivantes permettent des opérations sur des images binaires :• bwperim : détermine les pixels contours d’une image binaire avec un voisinage 4 ou 8 (périmètre

des objets dans une image binaire),• bwlabel : attribue une étiquette aux pixels de chaque région représentant la forme (pixels blancs

connexes) présente dans une image binaire et retourne le nombre de ces régions par une analyse encomposantes connexes,• bwselect : sélectionne une ou plusieurs régions représentant la forme dans une image binaire,• bwarea : calcul le nombre de pixels représentant la forme dans une image binaire (surface des objets

dans une image binaire),• bweuler : retourne le nombre de régions représentant la forme moins le nombre de trous dans ces

formes dans une image binaire.

Après l’appel de la fonction bwlabel qui effectue une analyse en composantes connexes et retourne lenombre de régions présentes dans l’image, il est nécessaire d’utiliser une structure répétitive (boucle for)afin d’accéder à chaque région indépendamment et réaliser les mesures demandées sur chacune d’elles. Lesquelette de programme suivant indique la trame du code à utiliser pour réaliser ces opérations :

[ L ,N] = b w l a b e l (BW) ; % BW r e p r é s e n t e l ’ image b i n a i r e pré− t r a i t é ehold a l l ; % permet de ne pas e f f a c e r l a f i g u r e en c o u r sf o r k = 1 :N

b i n = ( L==k ) ; % b i n c o n t i e n t l e s p i x e l s don t l ’ é t i q u e t t e ( l a b e l ) e s t k% ( k v a r i a n t de 1 à N)

% C a l c u l des p a r a m è t r e s : s u r f a c e , p é r i m è t r e , . . .% . . .% E n r e g i s t r e m e n t des p a r a m è t r e s : s u r f a c e , p é r i m è t r e , . . .S u r f a c e ( k ) = % . . .P e r i m e t r e ( k ) = % . . .

% . . .% A f f i c h a g e des p a r a m è t r e s ( f o n c t i o n s t e x t e t l i n e )% . . .

end

TP de vision industrielle 11

Page 12: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

6) En utilisant la fonction bwlabel, procéder à l’analyse en composante connexe de l’image binaireprécédemment obtenue. Avec notamment les fonctions bwperim et bwarea, compléter le script afin decalculer la surface et le périmètre de chaque région détectée et enregistrer ces valeurs dans des tableaux.

4.2 LocalisationLa fonction find retourne les coordonnées des cellules d’un tableau (pixels d’une image) qui vérifie

une condition (éléments non nuls). Ainsi, la commande suivante permet d’affecter aux variables x et yrespectivement les abscisses et les ordonnées des pixels d’une image dont les valeurs sont différentes de 0.

[ x y ] = f i n d ( b i n ) ;

7) En utilisant cette fonction, compléter le programme précédent afin de calculer les coordonnées ducentre de chaque région comme la moyenne des coordonnées des points constituant cette région (poureffectuer le calcul, utiliser la fonction mean qui calcule la moyenne des valeurs dans un tableau et éven-tuellement la fonction round qui permet d’arrondir cette valeur à l’entier le plus proche) et enregistrer cesvaleurs dans un tableau. Afficher une croix (fonction line) sur l’image traitée représentant chaque centre(voir figure 6).Afficher sur l’image binaire le nombre de régions détectées et pour chaque région, sa surface, son périmètreet son numéro. Pour cela, utiliser la fonction text permettant de superposer du texte à la figure avec lafonction int2str (ou num2str) qui permet de transformer une valeur entière en une chaîne de caractères.

Attention, les coordonnées des pixels de l’image ne sont pas exprimées dans le même repère quecelui de la figure dans laquelle on souhaite superposer du texte ou des graphiques.

4 objets

Objet 1

Surface = 89068Périmètre = 1064

Objet 2

Surface = 87864.75Périmètre = 1057.625

Objet 3

Surface = 88382.5Périmètre = 1061.625

Objet 4

Surface = 87623Périmètre = 1079.625

Figure 6 – Image binaire traitée.

4.3 Suivi de contoursLa fonction bwboundaries permet, à partir d’une image binaire, d’extraire la chaîne de points de

contours de chaque région présente dans une image par une opération de suivi de contours ainsi qu’une

TP de vision industrielle 12

Page 13: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

image d’étiquettes produite par une analyse en composantes connexes (fonction bwlabel dans laquelle lespixels de chaque région possède une étiquette (ou label)). Ainsi les pixels d’une même région possède lamême étiquette.

8) Ecrire un nouveau script en remplaçant la fonction bwlabel par la fonction bwboundaries dans lescript précédent et créer l’image d’étiquettes correspondant à votre acquisition avec des étiquettes en niveaude gris. Pour cela, afficher cette image en utilisant la fonction label2rgb afin de coder la valeur de chaqueétiquette sur 3×8 bits (voir figure 7).

4 objets

Objet 1

Surface = 89068Périmètre = 1064

Objet 2

Surface = 87864.75Périmètre = 1057.625

Objet 3

Surface = 88382.5Périmètre = 1061.625

Objet 4

Surface = 87623Périmètre = 1079.625

Figure 7 – Image d’étiquettes traitée.

9) Sur l’image précédente faire apparaître le contour de chaque région en utilisant la fonction plot et lecentre de chaque région par une croix en utilisant la fonction line. Pour chacune des régions, afficher dansl’image des étiquettes, son numéro, sa surface et son périmètre ainsi que le nombre de régions détectées.

4.4 Mesure de la couleurOn souhaite maintenant mesurer la couleur de chaque objet. Les cinq couleurs possible sont ici : la

couleur du fond, le rouge, le vert, le bleu et le jaune.

10) Pour chacune des régions détectées, calculer et afficher sur l’image acquise, en plus des paramètresprécédents, le niveau de gris moyen de chaque objet ainsi que la couleur correspondante (voir figure 8).

TP de vision industrielle 13

Page 14: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

4 objets

Objet 1

Surface = 89068Périmètre = 1064

Teinte = 195.624

Jaune

Objet 2

Surface = 87864.75Périmètre = 1057.625

Teinte = 94.0398

Vert

Objet 3

Surface = 88382.5Périmètre = 1061.625

Teinte = 137.0444

Bleu

Objet 4

Surface = 87623Périmètre = 1079.625

Teinte = 65.8035

Rouge

Figure 8 – Mesure de la couleur.

4.5 Analyse des régionsLa fonction regionprops permet de mesurer différents paramètres de régions contenues dans une

image d’étiquettes ou une image binaire et donc obtenus après une analyse en composantes connexes telsque :• la surface,• le périmètre,• le diamètre équivalent,• la longueur de l’axe principal d’inertie (longueur de la région),• la longueur du second axe d’inertie (largeur de la région),• l’angle de l’axe principal d’inertie (orientation de la région),• l’excentricité,• les coordonnées du centre de gravité,• les coordonnées du cadre circonscrit à la région (boundingbox),• le niveau de gris moyen...

11) Pour chacune des régions contenues dans l’image d’étiquettes, calculer sa surface, son périmètre,son diamètre, son orientation, sa longueur, sa largeur, son excentricité, les coordonnées de son centre degravité et de sa boundingbox ainsi que son niveau de teinte moyen en utilisant la fonction regionprops.Sur l’image acquise, afficher, à proximité de chaque objet, son numéro, sa surface, son périmètre, sondiamètre, son orientation, sa longueur et sa largeur ainsi que son excentricité. Représenter la boundingboxpar un cadre (rectangle) et le centre de gravité par une croix (voir figure 9). Comparer ces résultats avecles résultats précédents.

12) Convertir en millimètre et stocker dans une ou plusieurs variables les mesures de dimension, deposition, d’orientation (en degrés) et de teinte afin qu’elles soient transmises à un robot pour la saisie et leconditionnement des objets.

13) Tester et valider votre procédure dans différentes situations. Consigner et commenter les mesureseffectuées? Que se passe t’il lorsque les objets se touchent ?

TP de vision industrielle 14

Page 15: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

4 objets

Objet 1

Surface = 89016Périmètre = 1132.3128

Φ = 336.6581Angle = 56.1835

Longueur = 337.1135Largeur = 336.2231

Excentricité = 0.072633

Teinte = 195.624

JauneDisque

Objet 2

Surface = 87813Périmètre = 1125.4844

Φ = 334.3755Angle = 78.833

Longueur = 335.2819Largeur = 333.5007

Excentricité = 0.10294

Teinte = 94.0398

VertDisque

Objet 3

Surface = 88334Périmètre = 1124.7149

Φ = 335.366Angle = 39.5204

Longueur = 337.0503Largeur = 333.7178

Excentricité = 0.14027

Teinte = 137.0444

BleuDisque

Objet 4

Surface = 87570Périmètre = 1151.6266

Φ = 333.9125Angle = 53.7825

Longueur = 334.2005Largeur = 333.7023

Excentricité = 0.054582

Teinte = 65.8035

RougeDisque

Figure 9 – Résultat du traitement de l’image acquise.

5 Localisation d’objets en contactDeux objets en contact ne forment qu’une seule région dans l’image binaire. Il est alors nécessaire de

séparer les régions correspondantes avant leur analyse comme l’illustre la figure 10.

4 objets

Objet 1

Surface = 87535Périmètre = 1105.5433

Φ = 333.8458Angle = 15.1138

Longueur = 334.3956Largeur = 333.3196

Excentricité = 0.080158

Teinte = 194.1138

JauneDisque

Objet 2

Surface = 85393Périmètre = 1098.6732

Φ = 329.7359Angle = −57.1122

Longueur = 330.2698Largeur = 329.2255

Excentricité = 0.079462

Teinte = 90.0748

VertDisque

Objet 3

Surface = 86359Périmètre = 1115.6438

Φ = 331.5957Angle = 39.3152

Longueur = 333.3171Largeur = 329.909

Excentricité = 0.14264

Teinte = 146.4714

BleuDisque

Objet 4

Surface = 85217Périmètre = 1120.7149

Φ = 329.3959Angle = −65.086

Longueur = 330.4509Largeur = 328.4636

Excentricité = 0.10951

Teinte = 62.3773

RougeDisque

Figure 10 – Traitement d’une image où les objets sont en contacts.

La ligne de partage des eaux (LPE) est un algorithme de segmentation issu de la morphologie mathéma-tique qui permet de séparer des objets en amas dans une image. Cet algorithme considère que les niveauxde gris des pixels de l’image représente une altitude. L’image est ainsi vue comme un relief topographiquedont on simule l’inondation. A partir des points de faibles altitudes (pixels de faibles valeurs), de l’eau estdéversée remplissant progressivement des zones de l’image correspondant à des bassins jusqu’à atteindrela crête formant la limite entre deux bassins versants. L’ensemble de ces crêtes définie la ligne de partage

TP de vision industrielle 15

Page 16: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

des eaux (fonction watershed).

Avant d’appliquer cet algorithme, on cherche d’abord les points à partir desquels l’image sera inondée.Généralement, on utilise les minimums locaux de l’image. La fonction distance appliquée sur une imagebinaire retourne la distance entre un pixel de la forme et son bord (fonction bwdist). Ainsi, les pixelsproches du bord auront des faibles valeurs (petite distance) tandis que ceux éloignés du bord auront desvaleurs élevées (grande distance).

A partir de l’opposé de cette image, les pixels proches du bord correspondent à des altitudes élevéestandis que les pixels proches du centre correspondent à des basses altitudes. Il est alors possible d’y détecterdes minimas locaux utilisés ensuite par l’algorithme de la ligne de partage des eaux. Pour que les pixels dufond ne soient pas vus comme des minimums locaux, il faut tous les mettre à une valeur qui soit la pluspetite possible (valeur -Inf). Enfin, il est possible de supprimer les minimums locaux de faibles amplitudesgrâce à la fonction inhmin.

14) Etudier une solution basée sur les fonctions bwdist, inhmin et watershed pour séparer les objetsen contact. Tester à nouveau votre algorithme.

TP de vision industrielle 16

Page 17: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Annexe

Un objet d’entrée vidéo est un objet de type structure sur laquelle il est possible de régler plusieurspropriétés :• les paramètres liés au périphérique comme :

— le format de l’image,— l’espace de codage de l’image (RGB, YCbCr, niveaux de gris, ...)...• Les paramètres liés à l’acquisition comme :

— la luminosité (Brightness),— le contraste (Contrast),— le temps d’exposition (Exposure),— la correction gamma (Gamma),— la netteté (Sharpness)...

La fonction propinfo (ou les fonctions get et set) ainsi que la fonction inspect permettent d’accé-der et de connaître les caractéristiques détaillées de chaque propriété. Une propriété peut également êtreun objet de type structure avec ses propres propriétés. L’accès à cet objet s’adresse de la façon suivante :nom.propriete. Attention, certaines propriétés ne sont accessibles qu’en lecture seule selon qu’une acqui-sition est en cours ou non.

La fonction preview permet de créer une fenêtre d’aperçu afin de visualiser la scène observée et lafonction closepreview permet de fermer cette fenêtre. C’est ainsi qu’il est possible de régler certainparamètre d’acquisition.

Réglages des paramètres intrinsèques et extrinsèquesLe programme suivant utilise les fonctions précédentes afin de configurer l’acquisition d’un image et

effectuer les réglages nécessaire avant d’acquérir l’image :

TP de vision industrielle 17

Page 18: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

%% ACQUISITION D IMAGES SOUS MATLAB

c l e a r a l l ; % e f f a c e t o u t e s l e s v a r i a b l e s en mémoirec l o s e a l l ; % ferme t o u t e s l e s f e n ê t r e s o u v e r t e sc l c ; % e f f a c e l e c o n t e n u de l a f e n ê t r e de commande

%% A f f i c h a g e des i n f o r m a t i o n s l o g i c i e l l e s e t m a t é r i e l l e

i n f o _ i d = imaqhwinfo ( ’ winv ideo ’ )i n f o _ d e v = imaqhwinfo ( ’ winv ideo ’ , 1 )f o r m a t s = i n f o _ d e v . S u p p o r t e d F o r m a t s % a f f i c h e l e s f o r m a t s d ’ images p o s s i b l e

%% C r é a t i o n d ’ un o b j e t d ’ e n t r é e v i d é o

v i d = v i d e o i n p u t ( ’ winv ideo ’ , 1 , ’ RGB8_1280x1024 ’ ) ; % a s s o c i e un o b j e t d ’ e n t r é e v i d é o% au p é r i p h é r i q u e m a t é r i e l de l a caméra en t r a n s m e t t a n t l e numéro% d ’ i d e n t i f i c a t i o n de ce p é r i p h é r i q u e avec un f o r m a t d ’ image 1280 x 1024 .

% I n f o r m a t i o n s s u r l e s p r o p r i é t é s de " Source "i n f o r m a t i o n = g e t ( v i d )

% Réglage du p é r i p h é r i q u ep r o p i n f o ( vid , ’ VideoFormat ’ ) % a f f i c h e l e s i n f o r m a t i o n s s u r l e f o r m a t v i d é op r o p i n f o ( vid , ’ R e t u r n e d C o l o r S p a c e ’ ) % a f f i c h e l e s i n f o r m a t i o n s s u r l ’ e sp a ce c o u l e u rs e t ( vid , ’ R e t u r n e d C o l o r S p a c e ’ ) % permet de v i s u a l i s e r l e s r é g l a g e s p o s s i b l e s

% ou : g e t ( v id , ’ Re turnedColorSpace ’ )s e t ( vid , ’ R e t u r n e d C o l o r S p a c e ’ , ’ g r a y s c a l e ’ ) % s é l e c t i o n n e l ’ e sp a ce de r e p r é s e n t a t i o n

% ( i c i monochrome )% g e t ( v id , ’ Re turnedColorSpace ’ ) pour a f f i c h a g e

% A f f i c h a g e des i n f o r m a t i o n s s u r l e s p r o p r i é t é sp r o p i n f o ( vid , ’ Source ’ )

%% Accès à l a s o u r c e v i d é o

Source = g e t s e l e c t e d s o u r c e ( v i d ) ; % <=> Source = v i d . Source ;

% I n f o r m a t i o n s s u r l e s p r o p r i é t é s de l a s o u r c e v i d é oi n f o r m a t i o n = g e t ( Source ) % <=> s e t ( Source )

% A f f i c h a g e des v a l e u r s m i n i m a l e s e t maximales de r é g l a g e des p r i n c i p a l e s p r o p r i é t é si n f o = p r o p i n f o ( Source , ’ Gain ’ ) ; di sp ( ’ Gain ’ ) ; di sp ( i n f o . C o n s t r a i n t V a l u e ) ;i n f o = p r o p i n f o ( Source , ’ C o n t r a s t ’ ) ; di sp ( ’ C o n t r a s t ’ ) ; di sp ( i n f o . C o n s t r a i n t V a l u e ) ;i n f o = p r o p i n f o ( Source , ’ Exposure ’ ) ; di sp ( ’ Exposure ’ ) ; di sp ( i n f o . C o n s t r a i n t V a l u e ) ;i n f o = p r o p i n f o ( Source , ’Gamma ’ ) ; di sp ( ’Gamma ’ ) ; di sp ( i n f o . C o n s t r a i n t V a l u e ) ;i n f o = p r o p i n f o ( Source , ’ S h a r p n e s s ’ ) ; di sp ( ’ S h a r p n e s s ’ ) ; di sp ( i n f o . C o n s t r a i n t V a l u e ) ;

% A f f i c h a g e e t r é g l a g e des p r o p r i é t é s de l a l a s o u r c e v i d é oi n s p e c t ( Source ) ; % ouvre une f e n ê t r e avec l e s d i f f é r e n t s p a r a m è t r e s à r é g l e r

% e t perme t l e r é g l a g e de c e s p a r a m è t r e s de manière i n t e r a c t i v e

%% Réglage du s y s t è m eprev iew ( v i d ) ; % ouvre l a f e n ê t r e de p r é v i s u a l i s a t i o n de l ’ imagepause ; % a t t e n d que l ’ u t i l i s a t e u r appu i s u r une t o u c h e d e p u i s l ’ é d i t e u r de commande

% a v a n t de c o n t i n u e r a f i n d ’ e f f e c u e r l e s r é g l a g e sc l o s e p r e v i e w ; % ferme l a f e n ê t r e de p r é v i s u a l i s a t i o n

TP de vision industrielle 18

Page 19: Vision industrielle Travaux pratiques - ...vandenbroucke/enseignement/TP_Vision... · gistrerez tous vos fichiers et le sélectionner comme répertoire de travail dans Matlab. Le

Acquisition d’une image

L’acquisition d’UNE seule image se fait avec la fonction getsnapshot. La fonction pause peut êtreutilisée afin de mettre le programme en attente pendant le temps du réglage et avant d’acquérir l’image.

Le programme suivant permet de fixer les paramètres de réglages définis précédemment et acquérir uneimage avant de l’enregistrer au format brut :

%% ACQUISITION D IMAGES SOUS MATLAB

c l e a r a l l ; % e f f a c e t o u t e s l e s v a r i a b l e s en mémoirec l o s e a l l ; % ferme t o u t e s l e s f e n ê t r e s o u v e r t e sc l c ; % e f f a c e l e c o n t e n u de l a f e n ê t r e de commande

%% C r é a t i o n d ’ un o b j e t d ’ e n t r é e v i d é o

v i d = v i d e o i n p u t ( ’ winv ideo ’ , 1 , ’ RGB24_1280x1024 ’ ) ; % a s s o c i e un o b j e t d ’ e n t r é e v i d é o% au p é r i p h é r i q u e m a t é r i e l de l a caméra en t r a n s m e t t a n t l e numéro% d ’ i d e n t i f i c a t i o n de ce p é r i p h é r i q u e avec un f o r m a t d ’ image 1280 x 1024 .

% Réglage du p é r i p h é r i q u es e t ( vid , ’ R e t u r n e d C o l o r S p a c e ’ , ’ g r a y s c a l e ’ ) % s é l e c t i o n n e l ’ e sp a ce de r e p r é s e n t a t i o n

% ( ’ rgb ’ ou ’ g r a y s c a l e ’ )

%% Accès à l a s o u r c e v i d é o

Source = g e t s e l e c t e d s o u r c e ( v i d ) ; % <=> Source = v i d . Source ;

% A f f i c h a g e e t r é g l a g e des p r o p r i é t é s de l a l a s o u r c e v i d é oi n s p e c t ( Source ) ; % ouvre une f e n ê t r e avec l e s d i f f é r e n t s p a r a m è t r e s à r é g l e r

% e t perme t l e r é g l a g e de c e s p a r a m è t r e s de manière i n t e r a c t i v e

%% A c q u i s i t i o nprev iew ( v i d ) ; % ouvre l a f e n ê t r e de p r é v i s u a l i s a t i o n de l ’ image

% Réglage des p a r a m è t r e ss e t ( Source , ’ ExposureMode ’ , ’ manual ’ )s e t ( Source , ’ Exposure ’ ,−10)s e t ( Source , ’ GaineMode ’ , ’ manual ’ )s e t ( Source , ’ Gain ’ , 0 )s e t ( Source , ’ C o n t r a s t ’ , 0 )s e t ( Source , ’ S h a r p n e s s ’ , 0 )s e t ( Source , ’Gamma ’ , 1 0 0 )i n f o r m a t i o n = g e t ( Source ) % A f f i c h a g e des r é g l a g e spause ;

% P r i s e d ’ imagesImage = g e t s n a p s h o t ( v i d ) ;c l o s e p r e v i e w ; % ferme l a f e n ê t r e de p r é v i s u a l i s a t i o n

% A f f i c h a g e de l ’ image a c q u i s ef i g u r e ; imshow ( Image ) ;

% ou : imshow ( Image , ’ Border ’ , ’ t i g h t ’ , ’ I n i t i a l M a g n i f i c a t i o n ’ , 1 0 0 ) ;

% E n r e g i s r e m e n t de l ’ image a c q u i s e au f o r m a t BMPi m w r i t e ( Image , ’ Image . bmp ’ ) ;

TP de vision industrielle 19