Erkennen und messen Sie kreisförmige Objekte in einem Bild
Dieses Beispiel zeigt, wie man mit ThingSpeak™ und Image Processing Toolbox™ ein Bild von einer Website liest und die Anzahl der kreisförmigen Objekte im Bild zählt. 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. Sie benötigen nur eine Teilmenge der Bilddaten, um die Münzen zu zählen. Um die Bearbeitungszeit kurz zu halten, können Sie die Größe des Bildes ändern. Mit imresize
können Sie das Bild auf 30 % seiner Originalgröße zuschneiden.
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
Neben mehreren zu erkennenden Kreisen enthält das Bild Münzen unterschiedlicher Farbe, die einen unterschiedlichen Kontrast zum Hintergrund aufweisen. Die messingfarbenen Münzen bilden vor diesem Hintergrund einen starken Kontrast. Die Silbermünzen sind farblich viel näher am 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 Augenringen 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 dem Suchradius von [80 130] Pixeln auf. Die Länge des Mittelpunktsvektors ist gleich 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 Schreib-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)
Verwandte Themen
- Get Started with Image Processing Toolbox (Image Processing Toolbox)