Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Detectar y medir objetos circulares en una imagen

Este ejemplo muestra cómo leer una imagen de un sitio web y contar el número de objetos circulares en la imagen usando ThingSpeak™ e Image Processing Toolbox™. El valor calculado se almacena en un canal ThingSpeak.

Leer imagen de URL

Utilice webread para importar la imagen desde una URL pública. Los archivos de imagen tienen muchos datos, solo necesita un subconjunto de datos de imagen para contar las monedas. Para acortar el tiempo de procesamiento, puede cambiar el tamaño de la imagen. Utilice imresize para cortar la imagen al 30% de su tamaño original.

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

Ajustar la configuración de sensibilidad y contar círculos

Además de tener múltiples círculos para detectar, la imagen contiene monedas de diferentes colores, que tienen diferente contraste con respecto al fondo. Las monedas de color latón contrastan fuertemente con este fondo. Las monedas de plata tienen un color mucho más parecido al del fondo. Utilice imfindcircles para contar las monedas.

1. De forma predeterminada, imfindcircles busca objetos circulares que sean más brillantes que el fondo. Establezca su parámetro 'ObjectPolarity' en 'dark' para buscar ojeras.

2. La función imfindcircles tiene un parámetro 'Sensitivity' que puede usar para controlar el umbral interno mientras busca objetos circulares. Establezca 'Sensitivity'' en 0,92.

3. Llame a imfindcircles en esta imagen con un radio de búsqueda de [80 130] píxeles. La longitud del vector de centros es igual al número de círculos encontrados.

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

numCircles = length(centers)
numCircles =

     5

Almacene los resultados en un canal ThingSpeak

Puede almacenar y rastrear el contenido de una imagen dinámica con este ejemplo y un canal ThingSpeak. Escriba el número de círculos en un canal ThingSpeak especificado por ID de canal. Cambie channelID para que sea su ID de canal y especifique la clave de API de escritura para su propio canal con writeAPIKey.

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

Consulte también

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

Temas relacionados