Traitement d'images
Travaux pratiques
Segmentation d'images en régions
Application à la localisation et au tri d'objets
Spécialité Génie Industriel
CING3, parcours Production industrielle
Vandenbroucke Nicolas [email protected]
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 Acquisition
1.1 Mise au point du système de visionLe matériel d’acquisition est composé de :• une caméra monochrome IDS uEye de modèle UI-1240ML-C, de résolution 1280×1024 et équipée
d’un capteur 1/1.8′′ (voir datasheet),• un objectif Fujinon de focale f = 25 mm,• deux sources à Leds alimentées en courant alternatif 220 V-50 Hz.
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 13).
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 1
TP de traitement d’images 3
Figure 1 – 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. Fixer les paramètres d’acquisition (voir figure 2) : 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 et afin d’atténuerl’effet de scintillement de la source lumineuse.
3. 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.
4. 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.
5. Acquérir l’image : l’appui sur le bouton Start Acquisition déclenche l’acquisition de l’image.
6. 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 traitement d’images 4
Figure 2 – Paramètres d’acquisition
On suppose, dans ce TP, que plusieurs objets en vrac peuvent apparaître devant la caméra.
1) Placer quatre objets différents dans le champ de vision de la caméra en prenant soin de les sépareret, 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 un champ de vision de surface de 10 cm×8 cm.• 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.• Enregistrer l’image au format PNG sous le nom Image0.png.
1.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 avecdes tailles, des formes et des couleurs différentes avec des cas d’objets qui ne sont pas en contact et des casd’objets qui se touchent mais sans de chevaucher. Chaque image sera numérotée de 0 à 9.
Dans la suite des manipulations, on mettra au point les algorithmes d’abord sur la première imageuniquement avant de les tester sur l’ensemble des images ensuite, une fois les paramètres correctementajustés.
TP de traitement d’images 5
2 Pré-traitement
Afin de détecter les objets présents, on propose de procéder à une binarisation. Généralement, on attribueles 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).
2.1 Binarisation
3) Ecrire un nouveau script permettant :• d’ouvrir et afficher une image de la séquence (on utilisera tout d’abord l’image Image0.png),• transformer l’image couleur acquise en image monochrome 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.
2.2 Opérations sur images binaires
La fonction imclearborder est une fonction qui permet de supprimer des régions qui sont au contactdes 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.
4) En utilisant ces trois fonctions si nécessaire, compléter le script afin de traiter l’image binarisée pourobtenir une image dans laquelle les formes correspondent au mieux aux objets de la scène réelle (voirfigure 4).
Figure 3 – Image acquise. Figure 4 – Image binaire.
TP de traitement d’images 6
3 Localisation d’objets isolés
3.1 DétectionLes 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 , . . .% . . .% 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
La fonction find retourne les coordonnées des cellules d’un tableau (pixels d’une image) qui vérifieune 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 ) ;
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.
5) En utilisant notamment les fonctions bwlabel, bwperim et bwarea, afficher sur l’image binaireprécédemment obtenue et à proximité de chaque région, sa surface, son périmètre et son numéro ainsi quele nombre de régions détectées (voir figure 5). Pour cela, utiliser la fonction text permettant de superposerdu texte à la figure avec la fonction int2str (ou num2str) qui permet de transformer une valeur entière enune chaîne de caractères.
6) Compléter le programme précédent afin de calculer les coordonnées du centre de chaque régioncomme la moyenne des coordonnées des points constituant cette région (pour effectuer le calcul, utiliser lafonction mean qui calcule la moyenne des valeurs dans un tableau et éventuellement la fonction round quipermet d’arrondir cette valeur à l’entier le plus proche) et afficher une croix (fonction line) sur l’imagetraitée représentant chaque centre (voir figure 5).
TP de traitement d’images 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 5 – Image binaire traitée.
3.2 Suivi de contours
La fonction bwboundaries permet, à partir d’une image binaire, d’extraire la chaîne de points decontours de chaque région présente dans une image par une opération de suivi de contours ainsi qu’uneimage 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.
7) En utilisant la fonction bwboundaries, créer l’image d’étiquettes correspondant à votre acquisitionavec des étiquettes en niveau de gris. Pour cela, afficher cette image en utilisant la fonction label2rgb afinde coder la valeur de chaque étiquette sur 3×8 bits (voir figure 6).
4 objets
Objet 1
Surface = 89068Périmètre = 1064
Φ = 338
Objet 2
Surface = 87864.75Périmètre = 1057.625
Φ = 335
Objet 3
Surface = 88382.5Périmètre = 1061.625
Φ = 335
Objet 4
Surface = 87623Périmètre = 1079.625
Φ = 339
Figure 6 – Image d’étiquettes traitée.
TP de traitement d’images 8
8) 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.
3.3 Mesure de la couleurOn souhaite maintenant mesurer la couleur de chaque objet. Les cinq couleurs possible sont ici : la cou-
leur du fond, le rouge, le vert, le bleu et le jaune. La mesure de la couleur peut être réalisée en décomposantl’image couleur en trois images-composantes correspondant aux composantes rouge, verte et bleu, puis encalculant le niveau moyen de rouge, de vert et de bleu de chaque objet, ce qui nécessite trois mesures.
Plutôt que d’utiliser les niveaux de rouge, vert et bleu des pixels, on propose de représenter l’imagecouleur dans l’espace HSV (" Teinte - Saturation - Luminance ") et d’exploiter la composante de teinte. Ilest alors possible d’extraire les niveaux de teinte des pixels de chaque région indépendamment afin d’encalculer leur moyenne.
9) Convertir l’image couleur acquise dans l’espace RGB vers l’espace HSV en utilisant la fonctionrgb2hsv et afficher cette image. Pour chacune des régions détectées, calculer et afficher sur l’image ac-quise, en plus des paramètres précédents, le niveau de teinte moyen de chaque objet ainsi que la couleurcorrespondante (voir figure 7).
4 objets
Objet 1
Surface = 89068Périmètre = 1064
Φ = 338
Teinte = 33.0098Jaune
Objet 2
Surface = 87864.75Périmètre = 1057.625
Φ = 335
Teinte = 108.4976Vert
Objet 3
Surface = 88382.5Périmètre = 1061.625
Φ = 335
Teinte = 148.699Bleu
Objet 4
Surface = 87623Périmètre = 1079.625
Φ = 339
Teinte = 249.044Rouge
Figure 7 – Mesure de la couleur.
3.4 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),
TP de traitement d’images 9
• 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...
10) 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 et le centre de gravité par une croix (voir figure 8). Comparer ces résultats avec les résultatsprécédents.
4 objets
Objet 1
Surface = 89016Périmètre = 1132.3128
Φ = 336.6581Angle = 56.1835
Longueur = 337.1135Largeur = 336.2231
Excentricité = 0.072633
Teinte = 0.12942JauneCercle
Objet 2
Surface = 87813Périmètre = 1125.4844
Φ = 334.3755Angle = 78.833
Longueur = 335.2819Largeur = 333.5007
Excentricité = 0.10294
Teinte = 0.42542Vert
Cercle
Objet 3
Surface = 88334Périmètre = 1124.7149
Φ = 335.366Angle = 39.5204
Longueur = 337.0503Largeur = 333.7178
Excentricité = 0.14027
Teinte = 0.58309Bleu
Cercle
Objet 4
Surface = 87570Périmètre = 1151.6266
Φ = 333.9125Angle = 53.7825
Longueur = 334.2005Largeur = 333.7023
Excentricité = 0.054582
Teinte = 0.9749RougeCercle
Figure 8 – Résultat du traitement de l’image acquise.
11) Déduire des mesures précédentes, la forme de l’objet (rectangle ou cercle) et compléter votre scriptafin d’afficher cette forme.
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 ?
4 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 9.
TP de traitement d’images 10
4 objets
Objet 1
Surface = 87535Périmètre = 1105.5433
Φ = 333.8458Angle = 15.1138
Longueur = 334.3956Largeur = 333.3196
Excentricité = 0.080158
Teinte = 0.12935JauneCercle
Objet 2
Surface = 85393Périmètre = 1098.6732
Φ = 329.7359Angle = −57.1122
Longueur = 330.2698Largeur = 329.2255
Excentricité = 0.079462
Teinte = 0.42612Vert
Cercle
Objet 3
Surface = 86359Périmètre = 1115.6438
Φ = 331.5957Angle = 39.3152
Longueur = 333.3171Largeur = 329.909
Excentricité = 0.14264
Teinte = 0.5769Bleu
Cercle
Objet 4
Surface = 85217Périmètre = 1120.7149
Φ = 329.3959Angle = −65.086
Longueur = 330.4509Largeur = 328.4636
Excentricité = 0.10951
Teinte = 0.98201RougeCercle
Figure 9 – 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 partagedes 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. Comparer ces résultats avec les résultats précédents.
TP de traitement d’images 11
Annexe
Acquisition d’images sous MatlabUn objet d’entrée vidéo est un objet de type structure sur laquelle il est possible de régler plusieurs
proprié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 traitement d’images 13
%% 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 traitement d’images 14
Acquisition d’une imageL’acquisition d’UNE seule image se fait avec la fonction getsnapshot. La fonction pause peut être
utilisé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 une
image 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 traitement d’images 15