15

Traitement d'images Travaux pratiquesvandenbroucke/enseignement/TP_TI_01.pdf · Les TP de traitement d’images réalisés avec Matlab nécessitent ... 1.Choisir le format d’image

  • Upload
    others

  • View
    39

  • Download
    15

Embed Size (px)

Citation preview

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

TP de traitement d’images 12

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