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
imshow (MATLAB) | imresize (MATLAB) | imfindcircles (Image Processing Toolbox)
Themen
- Get Started with Image Processing Toolbox (Image Processing Toolbox)