Savoir utiliser quelques fonctions de morphologie mathématique
Et autres astuces.
Vidéo démonstration
Fonctionnement
Le projet dans sa globalité permet de trier des objets en fonction de leurs couleurs. Par exemple le tri des balles, pièces, etc. C’est un système détection et poursuite d’objets basés sur la détection des couleurs. Il est constitué par les éléments suivants :
Caméra : comme tout système de vision, une caméra est un capteur d’image. Elle fournit l’image de la scène. On utilisera la caméra de l’ordinateur.
Matlab : Son rôle est la récupération des images de la caméra, traitement et analyse d’images. Il coconnait et traque l’une ou plusieurs des trois composantes d’une image (Red (R), Green (G) et Bleu (B)). Le programme filtre l’ensemble de l’information dans l’image et préserve uniquement les couleurs cibles. Par exemple si on montre une balle rouge avec sa main, alors la zone de la balle sera détectée (la main et le reste de la scène sera filtrés et remplacés par une zone noire (pixels nuls)). Si on montre deux balles rouge et bleu, le programme indique la présence des deux couleurs, ou trois balles, etc.
La lecture de la caméra se fait en boucle ainsi que l’ensemble des traitements. Lorsqu’une couleur est détectée, l’information est envoyée à la carte Arduino via la liaison série. La valeur envoyée indique le nombre des composantes détectées. En effet, avec trois composantes on peut avoir 8 combinaisons possibles : 000-111 ou de 0 à 7.
Carte Aduino : Elle récupère la donnée envoyée par le logiciel Matlab comprise entre 0 et 7 et la transforme en commande.
Les LEDs : les trois LED rouge, vert et bleu s’activent lorsqu’une une ou plusieurs composante couleur est détectée. En effet, on duplique les valeurs acquises (0-7) sur les LED. Exemples :
Valeur =(0) 000 : Trois LEDs éteintes
Valeur =(1)001 : LED rouge allumée, détection de la composante rouge uniquement
Valeur =(2)010 : LED bleu allumée, détection de la composante bleu uniquement
…
Valeur =(7)111 : Trois LEDs Allumé (détection de trois balles)
Servomoteur : le servomoteur est un simulateur d’un système de tri des pièces. On imagine l’arrivée des pièces dans un tapis roulant, un système d’aguillage à base du servomoteur se trouve à l’extrémité du tapis. Il dirige les pièces dans trois boîtes : la première pour les pièces rouges, la deuxième pour les rouges et la dernière pour les bleus. En effet, dans ce cas on ne peut détecter que l’une des trois couleurs (001 (1) ou 010 (2) ou 100(4)). Les autres combinaisons sont ignorées par le programme (voir la suite pour plus des détails).
Projets indispensables pour la compréhension de le suite
BauValue=115200; % Vitesse NumBits=8; % Nombre de bits
% Création d'un objet Serial Port SerialCOM = serial('COM3','BaudRate',BauValue,'DataBits', NumBits, 'Parity', 'none'); SerialCOM.Terminator = 'LF'; set(SerialCOM, 'Timeout',2);
Seuil_min=50; % Seuil minimal fixe ( Problème du à l'absence de la couleur cible) im_bw=im2bw(im_r,seuil_r);im_bw1=im_bw & (im_r >Seuil_min); se=strel('disk',10); im_out_r=imclose(im_bw1,se);
... % Nombre des pixels de la couleur R, G, B taille_r=length(find(im_out_r(:)==1)); taille_g=length(find(im_out_g(:)==1)); taille_b=length(find(im_out_b(:)==1));
% Activation de la LED par le nombre de pixels Seuil_detec=100; LED_r=double(taille_r>Seuil_detec); LED_g=double(taille_g>Seuil_detec); LED_b=double(taille_b>Seuil_detec); LED=[LED_r LED_g LED_b]; ...
Conversion et transmission de la valeur à la carte Arduino
% Obtenir l'image actuelle imm=getsnapshot(vid); im_rgb=imresize(imm,0.5); % Réduction de 50%
% Récupérer les composantes R, G et B im_gray=rgb2gray(im_rgb); im_R=im_rgb(:,:,1);im_r=imsubtract(im_R,im_gray); im_G=im_rgb(:,:,2);im_g=imsubtract(im_G,im_gray); im_B=im_rgb(:,:,3);im_b=imsubtract(im_B,im_gray);
% subplot(221); imshow(im_rgb); title('Image RGB'); % subplot(222); imshow(im_r); title('R Après soustraction'); % subplot(223); imshow(im_g); title('G Après soustraction'); % subplot(224); imshow(im_b); title('B Après soustraction');
Seuil_min=50; % Seuil minimal fixe ( Problème du à l'absence de la couleur cible) im_bw=im2bw(im_r,seuil_r);im_bw1=im_bw & (im_r >Seuil_min); se=strel('disk',10); im_out_r=imclose(im_bw1,se);
% Nombre des pixels de la couleur R, G, B taille_r=length(find(im_out_r(:)==1)); taille_g=length(find(im_out_g(:)==1)); taille_b=length(find(im_out_b(:)==1));
% Activation de la LED par le nombre de pixels Seuil_detec=100; LED_r=double(taille_r>Seuil_detec); LED_g=double(taille_g>Seuil_detec); LED_b=double(taille_b>Seuil_detec); LED=[LED_r LED_g LED_b];
Nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations relatives aux appareils. Nous le faisons pour améliorer l’expérience de navigation et pour afficher des publicités (non-)personnalisées. Consentir à ces technologies nous autorisera à traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines fonctonnalités et caractéristiques.
Fonctionnel
Toujours activé
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.