Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Kreisförmige Objekte in einem Bild erkennen und messen

Dieses Beispiel zeigt, wie Sie ein Bild von einer Website lesen und die Anzahl der kreisförmigen Objekte im Bild mithilfe von ThingSpeak ™ und Image Processing Toolbox ™ zählen. Der berechnete Wert wird in einem ThingSpeak-Kanal gespeichert.

Bild von URL lesen

Verwenden Sie webread, um das Bild von einer öffentlichen URL zu importieren. Bilddateien enthalten viele Daten. Zum Zählen der Münzen benötigen Sie nur eine Teilmenge der Bilddaten. Um die Verarbeitungszeit kurz zu halten, können Sie die Größe des Bildes ändern. Verwenden Sie imresize, um das Bild auf 30 % seiner Originalgröße zu verkleinern.

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

Passen Sie die Empfindlichkeitseinstellungen an und zählen Sie Kreise

Außer dass mehrere Kreise erkannt werden müssen, enthält das Bild Münzen in verschiedenen Farben, die im Vergleich zum Hintergrund einen unterschiedlichen Kontrast aufweisen. Die messingfarbenen Münzen bilden einen starken Kontrast zu diesem Hintergrund. Die Silbermünzen ähneln farblich viel mehr dem Hintergrund. Verwenden Sie imfindcircles, um die Münzen zu zählen.

1. Standardmäßig findet imfindcircles kreisförmige Objekte, die heller als der Hintergrund sind. Setzen Sie den Parameter 'ObjectPolarity' auf 'dark', um nach dunklen Ringen zu suchen.

2. Die Funktion imfindcircles verfügt über einen Parameter 'Sensitivity', mit dem Sie den internen Schwellenwert beim Suchen kreisförmiger Objekte steuern können. Setzen Sie 'Sensitivity'‘ auf 0,92.

3. Rufen Sie imfindcircles für dieses Bild mit einem Suchradius von [80 130] Pixeln auf. Die Länge des Mittelpunktsvektors entspricht der Anzahl der gefundenen Kreise.

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

numCircles = length(centers)
numCircles =

     5

Speichern Sie die Ergebnisse in einem ThingSpeak-Kanal

Mit diesem Beispiel und einem ThingSpeak-Kanal können Sie den Inhalt eines dynamischen Bildes speichern und verfolgen. Schreiben Sie die Anzahl der Kreise in einen durch die Kanal-ID angegebenen ThingSpeak-Kanal. Ändern Sie channelID in Ihre Kanal-ID und geben Sie den Write-API-Schlüssel für Ihren eigenen Kanal mit writeAPIKey an.

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

Siehe auch

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

Themen