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
imshow
(MATLAB) | imresize
(MATLAB) | imfindcircles
(Image Processing Toolbox)
Temas relacionados
- Introducción a Image Processing Toolbox (Image Processing Toolbox)