Tri de balles par vision industrielle
Tri de balles par vision industrielle
Le but du TP est d’effectuer le contrôle et le tri d’objets de couleur et de taille différentes. Ces objets
sont des balles rebondissantes qu’il faut contrôler et trier après fabrication.
Le développement de cette application de vision est effectuée sur un système In-Sight couleur de Co-
gnex.
1 L’application
L’application consiste à trier les balles rebondissantes selon les six couleurs suivantes :
• orange,
• rouge,
• rose,
• vert,
• bleu,
• jaune.
La figure 1 montre une balle de taille moyenne et de couleur jaune. On peut voir sur cette figure le
capteur de présence permettant de détecter la présence des balles sous la caméra.
Un système d’alimentation permet de distribuer les balles et de les acheminer sous le capteur de vision.
Après être passées sous la caméra, les balles doivent emprunter un chemin différent selon leur couleur ou
1
leur qualité. En effet, si la couleur de la balle n’est pas l’une des six mentionnées précédemment ou si la
mesure dimensionnelle n’entre pas dans les tolérances fixées, alors la balle doit être acheminée vers une
zone de rebut. Le chemin à suivre est déterminé par un système d’aiguillages commandé par le système de
vision. Le tri par la taille se fait de façon mécanique. En effet, en fonction de leur taille les balles tombent
dans des compartiments adaptés à leur dimension mais il faut s’assurer que leur dimension est bonne.
Des voyants (vert, blanc et rouge) sont disponibles pour avertir l’opérateur si nécessaire. L’ensemble
du système de vision est placé dans une caisse à l’abri de l’éclairage ambiant et est relié à un PC via une
liaison Ethernet.
Les objets étant de forme sphérique avec une surface brillante et en mouvement, un éclairage strobo-
scopique diffus par dôme a été choisi.
TP de Vision Industrielle 2
2 Le système de vision industrielle In-Sight (Cognex)
2.1 Présentation du matériel
Le système In-Sight est un capteur de vision appelée également caméra intelligente ou smart caméra. Sa
différence avec d’autres caméras analogiques ou numériques est qu’il intègre un processeur lui permettant
de réaliser un grand nombre de traitements. Le capteur de vision In-Sight se programme en le connectant à
un PC par une liaison Ethernet et en utilisant le logiciel In-Sight Explorer. Une fois le programme effectué,
le capteur In-Sight est totalement autonome et peut être déconnecté du PC.
Il existe plusieurs types de capteurs In-Sight ayant des caractéristiques différentes (résolution, cadence,
tête déportée, sortie VGA, type d’application, ...). Le capteur utilisé dans ce TP est le capteur In-Sight
5100C (voir figure 2). C’est un capteur couleur mono-CCD de résolution 640 × 480.
TP de Vision Industrielle 3
Figure 3 – Le logiciel In-Sight Explorer
Le développement d’une application utilise des outils « glisser-déposer »associés à une palette gra-
phique, ainsi que des feuilles de propriétés de ces outils qui facilitent la configuration. Le tableur In-Sight
intègre des fonctions, options et opérations qui permettent de programmer des applications complexes sans
jamais avoir besoin d’écrire une ligne de code. Outre l’utilisation d’un tableur pour le développement, le lo-
giciel In-Sight Explorer comprend également un environnement « EasyBuilder ». Cette interface logicielle
fournit toutes les fonctionnalités nécessaires pour configurer facilement des applications fiables. Les appli-
cations sont déployées rapidement car aucune programmation n’est nécessaire. Cela comprend l’extraction
automatique des caractéristiques, la définition de paramètres intelligents et de limites.
L’environnement de développement est donc constitué d’une fenêtre principale qui représente un tableau
(feuille de travail) comme dans le tableur Excel par exemple (voir figure 4) et de différentes barres d’outils,
menus ou fenêtres permettant la programmation, la configuration et la visualisation du projet.
TP de Vision Industrielle 4
Figure 4 – Feuille de travail
La feuille de travail est donc un tableau de cellules ou chaque cellule est repérée par un numéro de ligne
qui est un chiffre et un numéro de colonne qui est une lettre. Par exemple, la première cellule en haut à
gauche est la cellule A0 car elle se situe à l’intersection la colonne A et de la ligne 0.
De la même façon, les coordonnées des différents graphiques qui seront ensuite utilisés sont repérés
dans le même système. L’origine du repère de l’image se situe également en haut à gauche par défaut et les
coordonnées des pixels s’expriment par rapport à ce repère.
La figure 4 montre également les fenêtres suivantes accessibles depuis dans la barre d’outils d’explora-
tion ou des menus :
• : Réseau In-Sight : ouvre une fenêtre indiquant les In-Sight connectés sur le réseau,
• : Fichiers In-Sight : ouvre une fenêtre montrant le contenu du répertoire des fichiers,
• : Palette d’outils : ouvre une fenêtre donnant accès à la palette d’outils.
On peut remarquer sur la figure 4 que l’image et les graphiques apparaissent en transparence de la
feuille de travail. En fait, la feuille de travail est semi-transparente. Elle est superposée aux graphiques qui
sont eux-même superposés à l’image. Ce niveau de transparence peut être réglé avec les boutons et
accessibles depuis la barre d’affichage du projet. Dans cette barre d’outils, on retrouve également d’autres
TP de Vision Industrielle 5
commandes de gestion de l’affichage comme :
• : zoom avant sur l’image,
• : zoom arrière sur l’image,
• : zoom Maximum sur l’image,
• : image à l’échelle 1,
• : zoom pour remplissage de la feuille de travail par l’image (plein cadre), l’image ne sera pas
toujours vue en entière,
• : zoom pour ajustement de l’image à la feuille de travail (taille écran), l’image sera toujours vue
en entière,
• : affichage des pixels trop au pas assez exposés, les niveaux de saturation sont réglables par
l’utilisateur dans le menu Système I Options,
• : affichage de la feuille de travail, lorsque la feuille de travail n’est plus affichée, il est alors
possible de visualiser les coordonnées et les valeurs du pixel de l’image qui est pointé par la souris,
• : affichage des graphiques,
• : affichage de la vue opérateur, les bordures du tableau disparaissent pour laisser apparaître
uniquement les cellules de la vue opérateur.
Le développement d’une application se fait donc en insérant des formules dans les cellules de la feuille
de travail. Ces formules peuvent contenir des nombres, des chaînes de caractères (textes), des références
à d’autres cellules, des structures de données ou font appel à des fonctions qui retourne des valeurs nu-
mériques, alphanumériques ou également des structures. Comme le montre les figures 5 et 6, il existe dif-
férentes catégories de fonctions ; certaines identiques à celles d’un tableur classique comme les fonctions
mathématiques et d’autres plus spécifiques aux outils de vision industrielle.
Les formules peuvent être éditées à partir de n’importe qu’elle cellule, soit en cliquant sur le bouton
(voir figure 6), soit directement à partir de la palette d’outils (voir figure 5). Pour insérer une fonction, il
TP de Vision Industrielle 6
suffit donc de la sélectionner dans l’onglet Fonctions de la palette d’outils et de valider par un double clic
ou de glisser la fonction dans la cellule correspondante.
Toutes les formules peuvent également être saisies directement dans la cellule sélectionnée ou dans la
barre d’outils correspondante. Il est toujours possible d’accéder à la liste des fonctions par les touches haut
et bas. Chaque cellule peut être mis dans un état actif, inactif ou conditionnel grâce au bouton .
L’onglet Snippets de la palette d’outils permet d’accéder à des programmes standards déjà écrits et qui
rassemblent plusieurs formules.
Les fonctions qui opèrent directement sur l’image appartiennent à la catégorie Systèmes de vision et
se décomposent en différentes catégories :
• Blob : segmentation et analyse de régions dans l’image,
• Bord : détection et analyse de contours (transitions, frontières) dans l’image,
• Correspondance Modèle : apprentissage et recherche de modèles dans l’image,
• Histogramme : extraction et analyse d’histogrammes,
• ID (identification) : lecture de codes barres (1D) et de codes matriciels (2D),
• Image : pré-traitement et filtrage d’images,
• OCV/OCR : apprentissage, lecture et vérification de caractères.
D’autres catégories de fonctions, également accessibles depuis la palette d’outils, s’appliquent sur les
résultats des fonctions obtenus sur les images comme :
• Coordonnées : changement de repère et conversion des pixels en une autre unité de mesure,
• Résultats de vision : formules permettant d’extraire différents paramètres liés à une structure de
données,
• Graphiques : affichage de textes dans les cellules, de graphiques dans les images et insertion de
commandes (liste déroulante, case à cocher, bouton, boîte de dialogue, édition,...),
• Communication : échanges de données (entrée/sorties TOR, port série, réseau),
• Structures : création de structures de données,
• Mathématiques : formules mathématiques standards.
TP de Vision Industrielle 7
Figure 7 – L’édition de la feuille de propriétés d’une fonction
Une fois les paramètres fixés, il suffit de valider la configuration ou l’annuler si l’on ne souhaite plus
insérer la formule. La structure de données correspondant au résultat de la fonction s’insère alors dans la
cellule de la feuille de travail à partir de laquelle la fonction correspondante a été éditée. Les principaux
paramètres de sortie de la formule sont également insérés dans les cellules voisines de la même ligne de la
feuille de travail, ce qui crée un groupe de cellules. En fait, lorsque la feuille de propriétés d’une fonction est
validée, d’autres formules sont insérées automatiquement dans les cellules voisines de la même ligne. Ces
formules retournent les principaux résultats générés par la fonction initiale. Il est aussi possible d’insérer
d’autres formules afin de récupérer d’autres résultats ou paramètres de la fonction.
Lors du paramétrage de la fonction, plusieurs méthodes peuvent être utilisées pour fixer les paramètres :
• Agir sur les graphiques si ils sont disponibles :
Certains paramètres d’une fonction donnent accès à des structures graphiques (cercle, anneau, ré-
gion, croix, point ou ligne) sur lesquels il est possible d’agir. Par exemple, lorsqu’il faut définir
une région d’intérêt pour y effectuer une analyse, cette région est graphiquement disponible, soit en
double cliquant sur le paramètre région de la feuille de propriétés, soit depuis le bouton . Il est
alors possible, interactivement, de dimensionner, orienter, transformer ou déplacer ce graphique et
de valider par appui sur la touche Entrée ou d’annuler en appuyant sur la touche Echap. Le bouton
permet d’agrandir le graphique à sa taille maximale. Il est également possible de fixer numéri-
quement les paramètres du graphique en développant son arborescence et en modifiant les valeurs à
l’aide du clavier ou des ascenseurs disponibles.
• Agir sur les valeurs des paramètres :
Tous les paramètres d’une formule ont une valeur qui peut être numérique, alphanumérique ou
correspondre à une case à cocher ou un membre d’une liste déroulante. Le paramétrage se fait alors
en modifiant directement la valeur du paramètre dans la feuille de propriétés.
• Créer un lien relatif avec une autre cellule (autre paramètre) :
Il est également possible d’exploiter le résultat d’une autre formule et de créer ainsi le lien entre
TP de Vision Industrielle 8
différentes formules. Ce lien se réalise en cliquant sur le bouton de la feuille de propriétés ou en
double-cliquant sur le paramètre à lier. Cette opération renvoie sur le tableur et il ne reste plus qu’à
cliquer sur la cellule choisie. Le lien ainsi créée est par défaut un lien relatif, c’est à dire que si les
cellules de ce lien sont déplacées, l’expression se met automatiquement à jour. On peut également
directement écrire l’adresse de la cellule en utilisant le clavier. En adressage relatif, il conviendra
alors de mettre cette adresse entre deux $.
• Créer un lien absolu avec une autre cellule :
L’adressage absolu ne tient pas compte du déplacement des cellules et sa syntaxe n’implique pas
d’utiliser le signe $. Le bouton doit alors être utilisé pour générer ce lien.
• Insérer une autre fonction :
Il est enfin possible de lier un paramètre à une autre formule. Pour cela, il suffit d’insérer cette
formule en utilisant le bouton de la feuille de propriétés puis en saisissant la fonction ou en
accédant à la liste des fonctions par les touches haut et bas, ce qui a pour conséquence d’imbriquer
les fonctions.
TP de Vision Industrielle 9
3 Travail à effectuer
Les outils qui vont être mis en oeuvre concernent :
• l’acquisition des images,
• la détection des balles,
• le contrôle dimensionnel des balles,
• la mesure de couleur des balles,
• l’activation des sorties pour le tri,
• la création d’une vue opérateur.
3.1 Configuration
3.2 Acquisition
TP de Vision Industrielle 10
• Mettre une feuille blanche sous la caméra et activer la balance des blancs dans la feuille de pro-
priétés de la fonction d’acquisition d’image. Ajuster votre réglage de gain pour obtenir un calibrage
correcte.
• Indiquer sur votre compte-rendu la valeur adéquate.
Les coordonnées ainsi calculées serviront de repère aux autres outils mis en oeuvre dans la suite.
TP de Vision Industrielle 11
• Indiquer également sur votre compte-rendu les valeurs des paramètres modifiés et représenter gra-
phiquement l’outil dans l’image.
Afin d’analyser les valeurs de diamètre ainsi calculées, il est possible d’utiliser :
• des fonctions de conditions (if , choose, InRange, ...),
• des fonctions de comparaison (<, >, =, <=, >=, ...),
• des opérateurs logiques (And, Or, Not, ...),
• des instructions d’affichage en utilisant ” ”.
TP de Vision Industrielle 12
3.6 Activation des sorties pour le tri
Il reste maintenant à récupérer les informations précédentes pour activer les sorties adéquates selon
l’adressage suivant :
• sortie 0 : porte 1,
• sortie 1 : porte 2,
• sortie 2 : porte 3,
• sortie 3 : porte 4,
• sortie 4 : porte 5,
• sortie 5 : porte 6.
• sortie 6 : voyant blanc.
• sortie 7 : voyant vert.
• sortie HSOUT 0 : voyant rouge.
Les sorties 0 à 7 sont actives par défaut (portes ouvertes). Ainsi, pour fermer toutes les portes et mettre
une balle au rebut, il faut désactiver les six premières sorties, c’est à dire écrire la valeur 1 sur chacune de
ces sorties ou encore 111111 (63) sur les six premiers bits de poids faible.
Deux autres Leds (rouge et verte) sont également disponibles sur le capteur. Les différents boutons,
interrupteurs et capteurs sont enfin reliés aux entrées du système.
Attention, il faut se mettre en ligne afin de pouvoir activer les sorties ou visualiser les entrées et tester
votre programme.
TP de Vision Industrielle 13
4 Présentation des outils de vision
4.1 Configuration
Avant de commencer à utiliser le système, il est nécessaire de définir le type d’entrées/sorties utilisé
avec le capteur In-Sight. En effet, celui-ci possède par défaut un nombre limité d’entrées/sorties mais il
possible de connecter un module d’extension qui augmente alors leur nombre. Cette configuration s’effec-
tue dans le menu Capteur de la barre de menu puis Paramètres des E/S discrètes pour la configuration
des entrées/sorties discrètes (voir figures 8 et 9) et Paramètres du port série pour la configuration des
communications avec le port série.
D’autres configurations de l’explorateur In-Sight explorer sont possibles dans le menu Système I Op-
tions comme, par exemple, les valeurs d’affichage minimales et maximales de saturation (voir figure 10).
TP de Vision Industrielle 14
4.2 Acquisition
Lorsqu’un nouveau projet est crée sous In-Sight Explorer, une fonction d’acquisition d’image est auto-
matiquement insérée dans la première cellule du tableur (cellule A0), la fonction AcquireImage. La feuille
de propriétés de cette fonction peut être éditée en double cliquant sur la structure de données Image qui lui
est associée et qui apparaît donc dans la cellule A0 (voir figure 11) ou depuis le bouton .
On remarque que le nom de la fonction apparaît dans la barre d’outils de l’application avec, entre
parenthèse, les paramètres de la fonction. Il est donc possible de changer ces paramètres sans passer par la
feuille de propriétés.
Comme le montre la figure 11, la fonction d’acquisition d’image comporte plusieurs paramètres. Les
principaux paramètres sont :
• Déclencheur : ce paramètre définit le mode de déclenchement de l’acquisition.
• Intégration : ce paramètre permet de fixer le temps d’intégration de la caméra et agit directement sur
l’obturateur électronique. Il peut être fixe ou automatique.
• Gain / Oset : ces paramètres permettent d’ajuster la tension du signal vidéo analogique avant qu’il
ne soit numérisé.
TP de Vision Industrielle 15
• Manuel : l’image est acquise par appui sur la touche F5 du clavier ou en cliquant sur le bouton de
déclenchement de capture unique (bouton ).
• Réseau : l’image est acquise par une information sur le réseau Ethernet.
La désactivation de la case à cocher de déclenchement manuel provoque la désactivation du déclenchement
en mode hors-ligne.
Il est enfin possible de contrôler l’éclairage depuis le capteur.
TP de Vision Industrielle 16
4.3 Extraction et analyse d’histogrammes
L’histogramme est un outil statistique qui permet une autre représentation de l’image. C’est une fonction
qui représente le nombre de fois (occurrence) qu’apparaît chaque niveau de gris d’une image. Cette fonction
est donc représentée par une courbe dans laquelle l’axe des abscisses représente le niveau de gris (valeur
comprise entre 0 et 255) et l’axe des ordonnées, le nombre d’occurrence de chacun de ces niveaux. La
figure 12 montre l’histogramme d’une image.
Cet histogramme montre qu’une majorité des pixels possède des niveaux de gris de faibles valeurs
(autour de 30) car on voit apparaître un pic à ce niveau.
Cette fonction retourne une structure de données Hist à partir de laquelle d’autres fonctions de la caté-
gorie Histogram peuvent être insérées.
TP de Vision Industrielle 17
Les paramètres de la fonction ExtractHistogram sont les suivants :
• Structure Image : lien vers l’image d’entrée.
• Repère : repère de l’outil. Il est défini par :
Ligne : son abscisse,
• Région : zone dans laquelle l’histogramme est calculé. Elle est définie par :
X : son abscisse,
Y : son ordonnée,
Hauteur : sa hauteur,
Largeur : sa largeur,
D’autres fonctions de cette catégorie permettent d’obtenir plusieurs valeurs statistiques dans une plage
de niveaux de gris de l’histogramme comme le nombre de pixels, la valeur moyenne des niveaux de gris, le
seuil de binarisation, les niveaux de gris les plus et moins représentés, la somme des niveaux de gris, ...
Ainsi, l’insertion de la fonction ExtractHistogram entraîne l’insertion automatique des fonctions sup-
plémentaires suivantes de la catégorie Histogram :
• HistThresh : retourne un seuil de binarisation optimum qui sépare l’image en un premier plan et
un arrière plan dans une plage de niveaux de gris définie.
• HistContrast : retourne la valeur du contraste de l’image dans une plage de niveaux de gris définie.
• HistCount : retourne le nombre de pixels qui appartiennent à une plage de niveaux de gris définie.
• HistMean : retourne la valeur moyenne des niveau de gris dans une plage de niveaux de gris définie.
Dans le cas des images en couleur, il est possible d’utiliser la fonction ExtractColorHistogram.
TP de Vision Industrielle 18
4.4 Prétraitement
Avant d’analyser les images, il est parfois nécessaire de leur appliquer un prétraitement. Les prétraite-
ments peuvent principalement être classés en deux catégories selon que chaque pixel subit une opération,
soit dite ponctuel (la valeur du pixel est modifiée sans tenir compte des niveaux des pixels voisins), soit
dite de voisinage (la valeur du pixel est modifiée en tenant compte des niveaux des pixels voisins). D’autres
prétraitements consistent en une transformation géométrique de l’image. Ainsi dans la catégorie Image , on
accède notamment aux fonctions :
• PointFilter : opération ponctuelle (binarisation, inversion, recadrage, ...),
• NeighborFilter : opération de voisinage (filtrage linéaire, filtrage morphologique, ...),
• ScaleImage : transformation géométrique de l’image.
Ces fonctions retournent une structure de données Image correspondant à l’image après son prétraitement.
Les figures 14 et 15 illustrent les opérations de prétraitement réalisables avec les fonctions PointFilter
et NeighborFilter.
TP de Vision Industrielle 19
4.5 Recherche et analyse de bords (contours)
Un contour (edge) est une zone de l’image où la luminosité varie brusquement passant du sombre au clair
ou du clair au sombre (transition). Ces contours correspondent souvent aux bords des objets et permettent
donc de les localiser et de les mesurer. C’est pourquoi la détection de contours pour rechercher et analyser
les bords d’un objet est une opération souvent employée en vision industrielle. Il est alors possible de
rechercher différentes formes de bords en utilisant principalement les fonctions suivantes de la catégorie
Bord :
• FindLine : recherche de transitions en forme de ligne droite,
• FindSegment : recherche deux transitions en ligne droite qui sont opposées,
• FindMultiLine : recherche plusieurs transition en forme de ligne droite,
• FindCurve : recherche des transitions en forme d’arc de cercle,
• FinCircle : recherche des transitions en forme de cercle.
Ces fonctions retournent une structure de données Edge qui peut intégrer une ou plusieurs transitions.
Chaque transition est alors identifié par un index et parfois une extrémité. D’autres fonctions de la même
catégorie peuvent ensuite être utilisées pour déterminer des distances ou des angles entre ces différentes
structures de données.
Lorsqu’il y a effectivement une transition dans la zone de l’image analysée, la luminosité varie progres-
sivement, soit de sombre (la luminosité tend vers 0 : noir) vers clair (la luminosité tend vers 255 : blanc),
soit de clair (blanc) vers sombre (noir). Le profil moyen évalué dans cette zone est donc respectivement, soit
un signal croissant (la dérivée est positive), soit un signal décroissant (la dérivée est négative). La transition
se situe alors exactement à cet endroit. La dérivée du profil moyen y atteint donc un extremum qui est, soit
un maximum lorsque la luminosité varie de sombre à clair, soit un minimum lorsque la luminosité varie de
clair à sombre.
L’amplitude de la dérivée dépend directement de l’amplitude de la transition. Plus la transition est
importante, plus l’amplitude de la dérivée est grande. Ici, l’amplitude de la dérivée est un score compris
entre −100 et 100. Le calcul du score peut tenir compte de l’amplitude maximum de la luminosité dans
l’image. Le signe de la dérivée correspond à la polarité de la transition : si la dérivée atteint un maximum
local (positive), la polarité est noir -> blanc et si la dérivée atteint un minimum locale (négative) la polarité
est blanc -> noir.
TP de Vision Industrielle 20
Tous les extremum locaux de la dérivée correspondent donc à des transitions dans la zone de l’image
analysée qui se différencient par leur score, leur polarité et leur position. Un seuil permet alors de sélec-
tionner les transitions pour lesquelles la valeur absolue du score est supérieure à ce seuil. De même, il est
possible de sélectionner les transitions en fonction de leur polarité.
Enfin, le calcul de la dérivée du profil moyen est effectué numériquement grâce à un filtre dérivateur qui
peut avoir une taille variable. Plus la taille de ce filtre est grande, plus la dérivée est lissée et les transitions
les moins significatifs sont supprimés mais moins la localisation de la transition est précise.
Une transition est un ensemble de points de contours qui sont estimés grâce à la dérivée du profil moyen.
Pour déterminer précisément la position du bord recherché, les outils de recherche de bords détectent fina-
lement les points de contours sur chacun des profils de luminosité utilisés dans les traitements précédents.
La transition est alors construite en sélectionnant dans l’ensemble des points de contours ainsi détectés en
fonction d’un critère. Ce critère retient, soit les points de contours dont le score est le plus grand, soit ceux
détectés en première position, soit ceux détectés en deuxième position. C’est avec ces points de contours
que l’outil de recherche de bord détermine la transition finale avec une certaine tolérance.
4.5.2 Paramètres
Les figures 17, 18 et 19 montrent respectivement les feuilles de propriétés des fonctions FindLine,
FindSegment et FindCircle.
• Région : zone dans laquelle la transition est recherchée. Elle est définie par :
X : son abscisse,
Y : son ordonnée,
Hauteur : sa hauteur,
Largeur : sa largeur,
TP de Vision Industrielle 21
Courbure : son rayon de courbure.
• Polarité : sens de la transition (blanc -> noir : clair vers sombre, noir -> blanc : sombre vers clair
ou indiérent).
• Chercher par : critère de sélection des points de contours (transition la plus forte, premier contours
détectés, derniers contours détectés).
• Score minimum : seuil au dessus duquel la transition est sélectionnée (entre 0 et 100).
• Normalisation du score : normalisation du profil de transition.
• Tolérance angulaire : tolérance d’orientation pour la recherche de la ligne (±10˚).
• Largeur ltre : taille du filtre utilisé pour déterminer le profil de la transition.
• Achage : paramètres d’affichage.
Y : son ordonnée,
TP de Vision Industrielle 22
4.6 Recherche et analyse de blobs (régions)
Dans beaucoup de cas, la surface des objets que l’on souhaite analyser dans une image possèdent une
luminosité qui est identique sur toute leur surface. Ils forment ainsi une région homogène dans l’image.
Une région homogène est donc un ensemble de pixels connexes qui possèdent des niveaux de gris proches.
Compte tenu de ce principe, il devient possible de détecter des blobs (binary large objects) dans l’image en
utilisant principalement la fonction ExtractBlobs de la catégorie Blob (voir figure 20).
Cette fonction retourne une structure de données Blobs intégrant un ou plusieurs blobs qui peuvent être
ensuite classés. Chaque bob détecté est indentifié par un index. D’autres fonctions de la même catégorie
peuvent ainsi être utilisées à partir de cette structure de données pour trier les blobs détectés.
Pour détecter un blob, il faut tout d’abord fixer un seuil qui sépare l’image en un arrière-plan et un
premier blanc. On peut alors considérer l’ensemble des blobs dont les niveaux de gris des pixels sont, soit
inférieurs au seuil, soit supérieurs au seuil ou soit les deux. Parmi les blobs ainsi définis, seuls ceux dont
la surface est comprise entre une surface minimum et une surface maximum seront considérés. Enfin, il est
possible de définir si les blobs en contact des bords de la région d’analyse seront considérés ou non et si
les trous (blob inclus dans un blob de couleur opposée) seront pris en compte ou non pour caractériser les
blobs.
• Région : zone dans laquelle les blobs sont recherchés. Elle est définie par :
X : son abscisse,
Y : son ordonnée,
TP de Vision Industrielle 23
Hauteur : sa hauteur,
Largeur : sa largeur,
• Seuil : seuil de binarisation qui sépare le premier plan de l’arrière plan (valeur comprise entre 0 et
255 ou égale à −1 pour un calcul du seuil automatique).
• Nombre à classer : nombre de blobs qui seront considérés (0 pour tout considérer).
• Inclure les trous : prise en compte ou non trous dans le calcul des caractéristiques des blobs.
• Blobs sur frontières : prise en compte ou non des blobs à la frontière de la région d’analyse.
• Couleur : blob : couleur des blobs recherchés (noir : inférieur au seuil, blanc : supérieur au seuil ou
indiérent).
• Couleur : fond : couleur de l’arrière plan (noir ou blanc).
• Surface min : surface minimum des blobs.
• Surface max : surface maximum des blobs.
• Achage : paramètres d’affichage.
TP de Vision Industrielle 24
4.7 Apprentissage et recherche de motifs
L’un des outils les plus performants pour rechercher des objets dans une image est la comparaison entre
un modèle (ou motif) de l’objet recherché et l’image analysée. Ce modèle est également une image qui a
été déterminée au cours d’un apprentissage. Cette image est ensuite comparée à l’image analysée en super-
posant le modèle en chaque pixel de cette image et en mesurant une ressemblance entre les caractéristiques
du modèle et celles de la zone d’image correspondante. Si cette ressemblance est forte, alors il y a corres-
pondance entre l’image du modèle de l’objet recherché et la zone d’image analysée. Deux fonctions de la
catégorie Correspondance modèle sont principalement utilisées pour réaliser ces opérations :
• TrainPatMaxPattern : apprentissage d’un modèle à rechercher.
• FindPatMaxPatterns : recherche d’un modèle dans une image.
4.7.1 Apprentissage
La figure 21 montre la feuille de propriétés de la fonction TrainPatMaxPattern qui permet de carac-
tériser un modèle à rechercher.
Cette fonction retourne une structure de données Patterns. L’insertion de la fonction TrainPatMax-
Pattern entraîne l’insertion automatique de la fonction supplémentaire GetTrained qui retourne la valeur
1 si l’apprentissage a été correctement effectué (0 dans le cas contraire).
En fait, ce sont des points de contours de l’image d’apprentissage qui sont utilisés pour caractériser le
modèle. Ce sont ensuite ces caractéristiques qui seront mises en correspondance dans l’image analysée. Les
paramètres de la fonction TrainPatMaxPattern sont les suivants :
• Structure Image : lien vers l’image d’entrée.
• Repère : repère de l’outil. Il est défini par :
Ligne : son abscisse,
TP de Vision Industrielle 25
Thêta : son orientation.
• Région du modèle : zone dans laquelle le modèle est appris. Elle est définie par :
X : son abscisse,
Y : son ordonnée,
Hauteur : sa hauteur,
Largeur : sa largeur,
• Origine du modèle : coordonnées de l’origine du modèle par rapport aux coordonnées de la région
du modèle :
Décalage Ligne : abscisse par rapport à l’abscisse de la région du modèle,
Quick est le plus rapide mais le moins précis car il détermine des caractéristiques grossières du
modèle tandis que PatMax est plus précis mais moins rapide car il détermine des caractéristiques
plus précise du modèle.
Elasticité : déviation (en pixels) autorisée sur le périmètre du modèle déterminé (0 aucune dé-
viation).
Ignorer la polarité : prise en compte ou non de la couleur de l’objet trouvé par rapport à la couleur
d’arrière-plan.
Granularité grossière : définit la taille du plus petit élément à détecter pour le calcul de caracté-
4.7.2 Recherche
La figure 22 montre la feuille de propriétés de la fonction FindPatMaxPatterns qui permet la re-
cherche d’un modèle dans une image.
TP de Vision Industrielle 26
Figure 22 – Fonction FindPatMaxPatterns
Cette fonction retourne une structure de données Patterns qui intègre tous les motifs retrouvés dans
l’image. Chaque motif retrouvé est identifié par un index. D’autres fonctions de la même catégorie peuvent
donc être utilisées à partir de cette structure de données pour trier les motifs retrouvés.
Une fois le modèle déterminé, celui-ci est ensuite centré sur chaque pixel de l’image analysée avec des
orientations et des échelles différentes. Pour chaque pixel, orientation et échelle, un score de ressemblance
compris entre 0 et 100 est calculé par l’algorithme de recherche utilisé. Plus ce score est proche de 1, plus le
modèle recherché correspond au motif analysée. L’analyse du score permet donc de localiser dans l’image
analysée les motifs qui ont été retrouvés.
TP de Vision Industrielle 27
• Région de recherche : zone dans laquelle les modèles sont recherchés. Elle est définie par :
X : son abscisse,
Y : son ordonnée,
Hauteur : sa hauteur,
Largeur : sa largeur,
Rapport H/L : type de tolérance en rapport d’échelle (aucune, selon la hauteur ou selon la
largeur).
Rapport H/L de départ : tolérance minimum en rapport d’échelle.
• Rech. superposition : paramètres de recherche des modèles dans le cas de superpositions de motifs.
• Timeout : temps maximum alloué à la recherche des modèles.
• Achage : paramètres d’affichage.
TP de Vision Industrielle 28
4.8 Calibration
Les outils de vision s’appliquant à des images, les mesures (position, distance, orientation) effectuées
sur ces images s’expriment en pixels dans un repère orthonormé positionné en haut à gauche de l’image par
défaut (cellule A0).
Or, les objets vus dans l’image évoluent dans un environnement réel ou les mesures s’expriment géné-
ralement dans une autre unité (par exemple le millimètre) par rapport à un repère précis (par exemple le
repère d’un robot).
D’autre part, les objets vus dans une image sont souvent déformés à cause des distorsions optiques ou
des effets de perspectives et d’angle de vue.
Pour réaliser des mesures fiables s’exprimant dans un environnement réel, il est donc nécessaire de
procéder à une phase de calibration qui a pour but de corriger les déformations et transformer les mesures
par rapport à ce repère réel. Cette calibration consiste donc à déterminer une équation permettant de passer
d’un environnement virtuel (l’image 2D) à un environnement réel (la scène 3D).
Différentes méthodes existent afin de déterminer cette équation :
• A partir de points de l’image dont on connaît la position dans leur environnement réel. Ces points
sont au nombre de 4 ou 9 selon la procédure utilisée et peuvent être définie, soit par l’utilisateur, soit
en utilisant des outils permettant de déterminer la position de ces points.
• A partir d’une grille de points ou d’un damier de pas régulier avec ou sans repère. Une image de la
grille est alors acquise dans les conditions d’acquisition réelles et l’analyse de cette image conduit à
déterminer l’équation de calibration.
Pour chaque point, il suffit simplement de donner ses coordonnées en pixel dans l’image et ses coordon-
TP de Vision Industrielle 29
nées dans l’environnement réel avec l’unité de mesure voulue. La fonction renvoie une structure de données
Calib intégrant l’équation de transformation.
Une calibration plus précise peut être obtenue avec la fonction CalibrateAdvanced car celle-ci permet
de spécifier les coordonnées de neuf points au maximum.
La calibration la plus précise est toutefois obtenue avec la fonction CalibrateGrid qui ouvre un assistant
pour effectuer cette calibration à partir d’une grille ou d’un damier (voir figures 24 et 25).
Généralement, la calibration s’effectue une seule fois au moment de la mise en oeuvre de l’application.
Grâce à l’équation de calibration, il devient possible de transformer une image afin de corriger ses déforma-
tions avec la fonction TransformImage ou de convertir toute les mesures (position, distance, orientation)
effectuées dans l’image en mesure s’exprimant dans l’environnement réel en utilisant les fonctions de chan-
gements d’unité et changements de repère (catégories Calibration Repère
et ).
TP de Vision Industrielle 30
4.9 Recalage
Les objets qui sont contrôlés en vision industrielle sont rarement positionnés et orientés de la même
façon d’un objet à l’autre. En conséquence, l’image d’un même objet n’est pas toujours acquise dans les
mêmes conditions. Le positionnement des outils de vision effectué dans des conditions initiales sera donc
inadapté si l’image de l’objet est acquis dans des conditions différentes. C’est pourquoi il est nécessaire de
créer un repère propre à l’objet afin de positionner tous les outils de vision par rapport à ce nouveau repère.
Le positionnement des outils de vision s’adaptera ainsi à toutes les conditions d’acquisition.
Pour déterminer un repère propre à un objet de l’image certaines fonctions de la catégories Géométrie
sont très utiles comme :
• PointToLine : mesure de la distance entre un point et une ligne.
• LineToLine : mesure de l’angle entre deux lignes.
Ces fonctions retournent une structure de données Dist qui exprime une mesure.
Les paramètres de ces deux fonctions sont directement les coordonnées des points et des lignes d’entrée.
L’insertion de ces deux fonctions entraîne l’insertion automatique des fonctions supplémentaires sui-
vantes de la catégorie Résultats de vision
:
• GetRow : retourne l’ordonnée (ligne) d’un point.
• GetCol : retourne l’abscisse (colonne) d’un point.
• GetAngle : retourne un angle.
• GetDistance : retourne une distance.
Pour la fonction PointToLine, les coordonnées du point d’entrée, les coordonnées du point d’intersec-
tion, la distance entre le point et la droite, l’angle de la droite par rapport au repère image sont retournés.
TP de Vision Industrielle 31
Pour la fonction LineToLine, si les deux droites se coupent, ce sont alors les coordonnées du point
d’intersection et l’angle entre les deux droites qui sont retournés. La distance est alors nulle.
L’utilisation des coordonnées du point d’intersection et de l’angle permet alors de définir un nouveau
repère.
TP de Vision Industrielle 32
4.10 Contrôles et affichages
Graphiques
Afin de rendre l’application plus conviviale, les fonctions de la catégorie qui peuvent être
utilisées. Ces fonctions se divisent principalement en deux autres catégories :
• Achages : fonctions d’affichage.
• Commandes : commandes classiques.
D’autres fonctions permettent également de tracer des courbes ainsi que d’éditer ou d’afficher différents
graphiques tels que des points, des lignes, des régions, des cercles, des croix, ...
4.10.1 Affichage
Les principales fonctions de la catégorieAchages sont :
• ColorLabel : affiche une chaîne de caractères. La couleur du texte et celle du fond sont deux para-
mètres à spécifier.
• MultiStatus : affiche jusqu’à 16 voyants, chaque voyant représentant l’état d’un bit d’un entier
codé sur 16 bits. Les couleurs des voyants sont deux paramètres à spécifier.
• Status : affiche un voyant rouge, jaune ou vert avec un texte associé en fonction du signe d’une
valeur entrée (négative, nulle ou positive). Les textes associés à chaque couleur sont des paramètres
à spécifier.
• StatusLight : affiche un voyant de couleur choisie avec un texte associé en fonction du signe d’une
valeur entrée (négative, nulle ou positive). Les couleurs et les textes associés à chaque couleur sont
des paramètres à spécifier.
4.10.2 Contrôle
Les principales fonctions de la catégorieCommandes sont :
• Button : insère un bouton avec un texte qui retourne la valeur 1 lorsqu’il est activé (0 sinon).
• CheckBox : insère une case à cocher qui retourne la valeur 1 lorsqu’elle est cochée (0 sinon).
• ListBox : insère une liste déroulante qui retourne l’index de l’élément sélectionné dans la liste.
• MessageBox : affiche une boîte à messages.
• EditInt : édite, augmente ou diminue et retourne la valeur d’un entier compris entre deux bornes
d’un intervalle à fixer.
• EditFloat : édite, augmente ou diminue et retourne la valeur d’un flottant compris entre deux bornes
d’un intervalle à fixer.
• EditFloat : édite et retourne une chaîne de caractère d’une taille maximale à fixer.
• Dialog : crée une boîte de dialogue.
TP de Vision Industrielle 33
Figure 28 – Paramétrage de la vue opérateur
TP de Vision Industrielle 34
4.12 Entrées/sorties, communication
Une phase importante d’un projet de vision concerne la communication du système de vision avec
Communication
l’extérieur. Les fonctions de la catégorie permettent non seulement de communiquer via
le réseau (catégorie Réseau ), mais aussi de communiquer aux moyens des fonctions des deux catégories
suivantes :
• Discrète : fonctions de communication avec les entrées/sorties discrètes (Tout ou Rien),
• Série: fonctions de communication via le port Série.
Les chaînes de caractères sont manipulées grâce aux fonctions de la catégorie Chaîne dans la catégorie
Texte .
TP de Vision Industrielle 35