Rileva e misura oggetti circolari in un'immagine
Questo esempio mostra come leggere un'immagine da un sito web e contare il numero di oggetti circolari nell'immagine utilizzando ThingSpeak ™ e Image Processing Toolbox ™. Il valore calcolato viene memorizzato in un canale ThingSpeak.
Leggi l'immagine dall'URL
Utilizzare webread per importare l'immagine da un URL pubblico. I file immagine contengono molti dati, per contare le monete è sufficiente un sottoinsieme dei dati dell'immagine. Per ridurre al minimo i tempi di elaborazione, è possibile ridimensionare l'immagine. Utilizzare imresize per tagliare l'immagine al 30% delle sue dimensioni originali.
rgb = webread('https://www.publicdomainpictures.net/pictures/40000/velka/british-coins.jpg');
rgb = imresize(rgb, 0.3);
imshow(rgb)

Regola le impostazioni di sensibilità e conta i cerchi
Oltre ad avere più cerchi da rilevare, l'immagine contiene monete di colori diversi, che presentano un contrasto diverso rispetto allo sfondo. Le monete color ottone creano un forte contrasto con questo sfondo. Le monete d'argento hanno un colore molto più vicino allo sfondo. Usa imfindcircles per contare le monete.
1. Per impostazione predefinita, imfindcircles trova oggetti circolari più luminosi dello sfondo. Imposta il parametro 'ObjectPolarity' su 'dark' per cercare le occhiaie.
2. La funzione imfindcircles ha un parametro 'Sensitivity' che puoi usare per controllare la soglia interna durante la ricerca di oggetti circolari. Impostare 'Sensitivity'' su 0,92.
3. Chiama imfindcircles su questa immagine con raggio di ricerca di [80 130] pixel. La lunghezza del vettore centri è uguale al numero di cerchi trovati.
[centers, radii] = imfindcircles(rgb,[80 130],'ObjectPolarity','dark','Sensitivity',0.92); numCircles = length(centers)
numCircles =
5
Memorizza i risultati in un canale ThingSpeak
È possibile memorizzare e tracciare il contenuto di un'immagine dinamica con questo esempio e un canale ThingSpeak. Scrive il numero di cerchi su un canale ThingSpeak specificato da channelID. Sostituisci channelID con l'ID del tuo canale e specifica la chiave API di scrittura per il tuo canale con writeAPIKey.
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID, numCircles, 'Writekey', writeAPIKey);
Vedi anche
imshow (MATLAB) | imresize (MATLAB) | imfindcircles (Image Processing Toolbox)
Argomenti
- Get Started with Image Processing Toolbox (Image Processing Toolbox)