Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Détecter et mesurer des objets circulaires dans une image

Cet exemple montre comment lire une image à partir d'un site Web et compter le nombre d'objets circulaires dans l'image à l'aide de ThingSpeak™ et Image Processing Toolbox ™. La valeur calculée est stockée dans un canal ThingSpeak .

Lire l'image à partir de l'URL

Utilisez webread pour importer l'image à partir d'une URL publique. Les fichiers image contiennent beaucoup de données, vous n'avez besoin que d'un sous-ensemble des données d'image pour compter les pièces. Pour réduire le temps de traitement, vous pouvez redimensionner l'image. Utilisez imresize pour couper l'image à 30 % de sa taille d'origine.

rgb = webread('https://www.publicdomainpictures.net/pictures/40000/velka/british-coins.jpg');
rgb = imresize(rgb, 0.3);
imshow(rgb)

Ajuster les paramètres de sensibilité et compter les cercles

En plus d'avoir plusieurs cercles à détecter, l'image contient des pièces de différentes couleurs, qui ont un contraste différent par rapport à l'arrière-plan. Les pièces de couleur laiton contrastent fortement avec ce fond. Les pièces d'argent sont beaucoup plus proches de l'arrière-plan. Utilisez imfindcircles pour compter les pièces.

1. Par défaut, imfindcircles trouve les objets circulaires plus clairs que l'arrière-plan. Réglez son paramètre 'ObjectPolarity' sur 'dark' pour rechercher les cernes.

2. La fonction imfindcircles a un paramètre 'Sensitivity' que vous pouvez utiliser pour contrôler le seuil interne lors de la recherche d'objets circulaires. Réglez le 'Sensitivity'' sur 0,92.

3. Appelez imfindcircles sur cette image avec un rayon de recherche de [80 130] pixels. La longueur du vecteur des centres est égale au nombre de cercles trouvés.

[centers, radii] = imfindcircles(rgb,[80 130],'ObjectPolarity','dark','Sensitivity',0.92);

numCircles = length(centers)
numCircles =

     5

Stocker les résultats dans un canal ThingSpeak

Vous pouvez stocker et suivre le contenu d'une image dynamique avec cet exemple et un canal ThingSpeak . Écrivez le nombre de cercles dans un canal ThingSpeak spécifié par channelID. Remplacez channelID par l'ID de votre canal et spécifiez la clé API d'écriture de votre propre canal avec writeAPIKey.

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID, numCircles, 'Writekey', writeAPIKey);

Voir aussi

(MATLAB) | (MATLAB) | (Image Processing Toolbox)

Sujets associés