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
imshow
(MATLAB) | imresize
(MATLAB) | imfindcircles
(Image Processing Toolbox)
Sujets associés
- Get Started with Image Processing Toolbox (Image Processing Toolbox)