Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la versión original 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 la cantidad de objetos circulares en la imagen usando ThingSpeak™ y Image Processing Toolbox™. El valor calculado se almacena en un canal de ThingSpeak.

Leer imagen desde URL

Usar webread para importar la imagen desde una URL pública. Los archivos de imagen tienen muchos datos, solo necesita un subconjunto de los datos de imagen para contar las monedas. Para acortar el tiempo de procesamiento, puede cambiar el tamaño de la imagen. Usar imresize para recortar 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)

Ajuste la configuración de sensibilidad y los círculos de conteo

Además de tener múltiples círculos para detectar, la imagen contiene monedas de diferentes colores, las cuales tienen diferente contraste con respecto al fondo. Las monedas de color bronce contrastan fuertemente con este fondo. Las monedas de plata tienen un color mucho más cercano al fondo. Usar imfindcircles para contar las monedas.

1. Por defecto, imfindcircles encuentra objetos circulares que son más brillantes que el fondo. Establecer su parámetro 'ObjectPolarity' a 'dark' para buscar ojeras.

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

3. Llamar imfindcircles en esta imagen con el 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

Almacenar los resultados en un canal de ThingSpeak

Puede almacenar y rastrear el contenido de una imagen dinámica con este ejemplo y un canal de ThingSpeak. Escriba el número de círculos en un canal de ThingSpeak especificado por channelID. Cambio channelID para que sea su ID de canal y especifique la clave 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