Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

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

Utilizza webread per importare l'immagine da un URL pubblico. I file di immagine contengono molti dati, è necessario solo un sottoinsieme dei dati di immagine per contare le monete. Per ridurre 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 conteggio cerchi

Oltre ad avere più cerchi da rilevare, l'immagine contiene monete di diversi colori, che hanno un contrasto diverso rispetto allo sfondo. Le monete color ottone hanno 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 suo parametro 'ObjectPolarity' su 'dark' per cercare i cerchi di colore scuro.

2. La funzione imfindcircles ha un parametro 'Sensitivity' che puoi utilizzare per controllare la soglia interna durante la ricerca di oggetti circolari. Imposta 'Sensitivity'' su 0,92.

3. Chiama imfindcircles su questa immagine con il raggio di ricerca di [80 130] pixel. La lunghezza del vettore dei 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

Puoi archiviare e tenere traccia del contenuto di un'immagine dinamica con questo esempio e un canale ThingSpeak . Scrivere il numero di cerchi in un canale ThingSpeak specificato da channelID. Cambia channelID come 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

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

Argomenti complementari