# DetectBlobs

Die DetectBlobs-Funktion führt eine Form der Blob-Analyse durch, die auch als „Konnektivitätsanalyse“ für einen Inspektionsbereich (ROI) bezeichnet wird. Während einer „Konnektivitätsanalyse“ werden die Pixel innerhalb des ROI anhand ihrer Graustufen-Schwellenwerts in die zwei Kategorien „Blob“ und „Hintergrund“ kategorisiert. Diese Einteilung teilt alle Pixel unter dem Schwellenwert in eine schwarze Kategorie und alle Pixel über dem Schwellenwert in eine weiße Kategorie ein.

Auf diesem Wege werden Pixel mit ähnlichen Werten anhand ihrer „Farbe“ und zudem auch anhand dessen gruppiert, ob sie die benachbarten Pixel „berühren” oder nicht. Die Hintergrund-Pixel können mit ihren Nachbarn verbunden sein, wenn sie von Pixeln auf beiden Seiten, unterhalb und oberhalb berührt werden, während Blob-Pixel auch mit ihren Nachbarn verbunden sein können, wenn sie von Pixeln auf einer ihrer Seiten, oberhalb, unterhalb oder diagonal berührt werden.

Wenn das Bild verarbeitet wurde, ist es in Blob- und Hintergrund-Pixelwerte segmentiert. Die im ROI gefundenen Blobs werden anhand ihrer physikalischen Eigenschaften und anhand der ihnen zugewiesenen Werten, wie z. B. ihrer Position im Bild (ihrer x- und y-Koordinaten), ihrer Fläche, ihres Umfangs, ihrer Ausbreitung und Ausdehnung identifiziert. Die Daten aus den extrahierten Blobs werden in einer Blobs-Datenstruktur gespeichert und gemeldet.

Diese Funktion ist der erste Schritt bei der Blob-Analyse. Sowohl FindBlobs als auch SortBlobs verwenden letztendlich Zellreferenzen auf die Blobs-Datenstruktur einer DetectBlobs-Funktion, und zwar entweder direkt oder über eine Prüfung.

## DetectBlobs – Eingaben

Parameter | Beschreibung
Bild | This parameter must reference a spreadsheet cell that contains an Bild data structure; by default, this parameter references A0, the cell containing the data structure. This parameter can also reference other Image data structures, such as those returned by the Image Vision Data Access functions or Koordinatenumrechnungsfunktionen.
Vorrichtung | Definiert den Inspektionsbereich (ROI) relativ zu einer Vorrichtung als Eingabe oder die Ausgabe des Bildkoordinatensystems einer Vision Tools-Funktion. Wenn man den Inspektionsbereich (ROI) relativ zu einer Vorrichtung bestimmt, stellt man sicher, dass beim Drehen oder Umsetzen der Vorrichtung auch der Inspektionsbereich (ROI) im Verhältnis zur Vorrichtung gedreht oder umgesetzt wird. Die Standardeinstellung ist (0,0,0), die oberste linke Ecke des Bilds.
X | Der x-Offset in Bildkoordinaten.
Y | Der y-Offset in Bildkoordinaten.
Winkel | Die Drehung von der x-Bildachse im Bildkoordinatensystem. (+/-360 Grad im Uhrzeigersinn)
Bereich | Auch als Inspektionsbereich (ROI) bezeichnet; gibt den Bereich des Bilds an, der einer Analyse unterzogen wird. Doppelklicken Sie auf den Parameter „Bereich“, um einen Interaktiver Grafikmodus zu erstellen, den Sie transformieren und drehen können. Wählen Sie diesen Parameter aus und klicken Sie in der Symbolleiste „Job bearbeiten“ des Eigenschaftsblatts auf die Schaltfläche „Bereich maximieren“, um den Bereich automatisch so zu dehnen, dass er das gesamte Bild einnimmt.
X | Der x-Offset vom Ursprung in Vorrichtungskoordinaten.
Y | Der y-Offset vom Ursprung im Vorrichtungskoordinatensystem.
Breite | Die Abmessung entlang der x-Achse des Bereichs.
Höhe | Die Abmessung entlang der y-Achse des Bereichs.
Winkel | Die Ausrichtung im Vorrichtungskoordinatensystem.
Krümmung | Die Winkelabweichung zwischen der x-Achse des Bereichs und der gegenüberliegenden Grenzlinie des Bereichs.
Hinweis: Die Parameter Vorrichtung und Bereich müssen innerhalb der Bildgrenzen festgelegt werden. Andernfalls gibt die Funktion #ERR zurück.
Externer Bereich | Dieser Parameter verwendet Zellreferenzen auf die Funktionen Annulus, Kreis, Bereich, EditAnnulus, EditCircle, EditCompositeRegion, EditPolygon und EditRegion. Wenn dieser Parameter verwendet wird, ignoriert die Funktion die Einstellungen für Bereich und Vorrichtung und inspiziert den im referenzierten Bereich angegebenen Bildbereich. Wird ein EditCompositeRegion-Steuerelement referenziert, kann der Inspektionsbereich verschiedene Formen beinhalten. Jede Form des zusammengesetzten Bereichs kann dem Inspektionsbereich hinzugefügt oder von ihm entfernt werden (Masking). Hinweis: Wenn dieser Parameter als Referenz auf einen äußeren Bereich eingestellt wurde, um den internen Bereich einer Funktion zu verwenden, muss dieser Parameter manuell auf Null gestellt werden, indem man den Wert 0 anstelle der Zellreferenz einträgt. Andernfalls wird die Funktion weiterhin den externen Bereich referenzieren.
Zu sort. Anzahl | Gibt die Anzahl der zu sortierenden Blobs an.
0 | Gibt alle Blobs zurück, die den Farb- und Größeneinstellungen entsprechen, die in den Parametern von Farbe: Blob/Farbe: Hintergrund und Bereichsgrenze: Min/Bereichsgrenze: Max angegeben sind.
1 bis 4096 (Standard = 1) | Gibt Blobs bis zur angegebenen Anzahl zurück, die den Farb- und Größeneinstellungen entsprechen, die in den Parametern von Farbe: Blob/Farbe: Hintergrund und Bereichsgrenze: Min/Bereichsgrenze: Max angegeben sind. Wenn mehr Blobs gefunden werden, werden Blobs mit der größten Fläche ausgewählt.
Hinweis: Wenn der Wert des Parameters Zu sort. Anzahl größer als Null ist, fügt DetectBlobs automatisch eine Ergebnistabelle mit maximal 10 Einträgen ein, die den ersten 10 Blobs in der Blobs-Datenstruktur entsprechen. Möchten Sie mehr Einträge anzeigen lassen, können Sie die Tabelle durch kopieren der letzten Zeile und das Einfügen weiterer Zeilen am Ende erweitern. Vergewissern Sie sich, dass der Index der neu eingefügten Zeilen inkrementiert wird, so dass der korrekte Blob indiziert wird.
Schwellenwert | Gibt den Graustufenwert an, mit denen Blobs vom Hintergrund unterschieden werden. Dieser Wert kann durch Verwenden der automatischen Einstellung der DetectBlobs-Funktion (der Standardeinstellung) bestimmt werden, durch Ausprobieren manuell konfiguriert werden, oder als Zellreferenzen auf die berechneten Ergebnisse einer Histogramm-Funktion festgelegt werden.
-1 (Standard) | Die Funktion wertet und berechnet automatisch einen Schwellenwert aufgrund der Graustufen-Statistiken des Bilds.
0 bis 255 | Legt einen Graustufenwert zwischen 0 und 255 fest.
Löcher füllen | Gibt eine oder zwei Methoden für die Bearbeitung von Statistiken der gespeicherten Löcher an.
0 = AUS (Standard) | Aktiviert den Beitrag der Löcher zur Gesamtstatistik. Ein Hinzufügen von Löchern zu einem Blob würde zum Beispiel dessen Fläche verkleinern. Hinweis: Bei Einstellung auf AUS werden Blobs gemeldet, die Löcher in einem anderen Blob sind. Im folgenden Beispiel wird Blob 1 gemeldet, bei dem es sich um ein Loch in Blob 0 handelt. In der Blobstatistik enthält der Wert für die Fläche von Blob 0 (obere Reihe) nicht die Fläche von Blob 1 (untere Reihe).
1 = EIN | Deaktiviert den Beitrag der Löcher zur Gesamtstatistik. Ein Hinzufügen von Löchern zu einem Blob würde zum Beispiel keine Auswirkung auf dessen Fläche haben. Hinweis: Bei Einstellung auf EIN werden Blobs, die Löcher in einem anderen Blob sind, ignoriert. Im folgenden Beispiel wird ein Loch in Blob 0 ignoriert, und es wird nur ein einzelner Blob (Blob 0) gemeldet. In der Blobstatistik enthält der Wert für den Bereich von Blob 0 den gesamten Blobbereich, das Loch eingeschlossen.
Randbereich-Blobs | Gibt eine oder zwei Methoden für die Handhabung von Blobs, die den Randbereich des ROI überschneiden.
0 = AUS | Schließt Blobs aus, die die ROI-Grenze schneiden. Alle Blobs, die die ROI-Grenze schneiden, werden der endgültigen Blobs-Datenstruktur nicht hinzugefügt.
1 = EIN (Standard) | Enthält Blobs, die die ROI-Grenze schneiden. Alle Blobs, die die ROI-Grenze schneiden, werden der endgültigen Blobs-Datenstruktur hinzugefügt (vorausgesetzt, sie erfüllen außerdem die angegebenen Einstellungen für die Parameter von Farbe: Blob/Farbe: Hintergrund und Bereichsgrenze: Min/Bereichsgrenze: Max).
Farbe: Blob | Definiert die Farbe des Blobs.
0 = Schwarz | Gibt nur Blobs zurück, die unter dem angegebenen Graustufen-Schwellenwert liegen.
1 = Weiß | Gibt nur Blobs zurück, die über dem angegebenen Graustufen-Schwellenwert liegen.
2 = Beide (Standard) | Keine Anforderungen für die Blobfarbe vorhanden.
Hinweis: Wenn Farbe: Blob und Farbe: Hintergrund auf die gleiche Farbe eingestellt sind, werden Blobs nicht gemeldet. Wenn beispielsweise Farbe: Blob auf Schwarz eingestellt ist, und Farbe: Hintergrund ebenfalls auf Schwarz eingestellt ist, werden Blobs nicht gemeldet.
Farbe: Blob = Schwarz Farbe: Hintergrund = Schwarz | Farbe: Blob = Beides oder Weiß Farbe: Hintergrund = Schwarz
Jedoch selbst wenn Farbe: Blob und Farbe: Hintergrund auf die gleiche Farbe eingestellt sind, werden Blobs gemeldet, wenn sie von einer Fläche der entgegengesetzten Farbe umgeben sind (siehe die folgenden Beispiele). Wenn ein Teil des Blobs nicht von der anderen Farbe umfasst wird, wird der Blob nicht gemeldet.
Farbe: Blob = Schwarz Farbe: Hintergrund = Schwarz | Farbe: Blob = Weiß Farbe: Hintergrund = Weiß
Farbe: Hintergrund | Legt die Hintergrundfarbe im aufgenommenen Bild fest. Die 8-fache Konnektivitätsanalyse wird im Vordergrund ausgeführt, die 4-fache Konnektivitätsanalyse wird im Hintergrund durchgeführt.
0 = Schwarz
1 = Weiß (Standard)
Bereichsgrenze: Min | Legt eine minimale Bereichsgrenze in Anzahl an Pixel für alle zurückgegebenen Blobs fest (Standard = 100). Nur Blobs, deren Fläche größer als der Wert der Bereichsgrenze: Min, werden zurückgegeben. Der Parameterbereich ist: Unterer Grenzwert: 0 Oberer Grenzwert: Auflösung (Breite * Höhe) des angeschlossenen Vision-Systems. Beispiel: Bei einer Verbindung mit dem Vision-System In-Sight D902 beträgt der Parameterbereich 0 bis 2.304.000 (1920 x 1200).
Bereichsgrenze: Max | Legt eine maximale Bereichsgrenze in Anzahl an Pixel für alle zurückgegebenen Blobs fest (Standard = 100000). Nur Blobs, deren Fläche kleiner ist als die Bereichsgrenze: Max werden zurückgegeben. Der Parameterbereich ist: Unterer Grenzwert: 0 Oberer Grenzwert: Auflösung (Breite * Höhe) des angeschlossenen Vision-Systems. Beispiel: Bei einer Verbindung mit dem Vision-System In-Sight D902 beträgt der Parameterbereich 0 bis 2.304.000 (1920 x 1200).
Anzeigen | Legt den Anzeigemodus für DetectBlobs-Grafiküberlagerungen fest, die über dem Bild angezeigt werden.
0 = Alle ausblenden (Standard) | Alle Grafiken werden nur angezeigt, wenn die Zelle mit der Funktion „DetectBlobs“ in der Tabelle markiert ist.
1 = Nur Ergebnis-Grafik | Blob-Umrisse werden immer angezeigt.
2 = Eingabe- und Ergebnis-Grafik | Der Eingabebildbereich und die Umrisse von extrahierten Blobs werden immer angezeigt.

## DetectBlobs – Ausgaben

Rückgabewert | Eine Blobs-Datenstruktur, die die aus dem Bild extrahierten Blobs enthält, oder #ERR, wenn einer der Eingabeparameter ungültig ist.
Ergebnisse | Wenn DetectBlobs in eine Zelle eingefügt wird, wird eine Ergebnistabelle in der Tabelle mit den folgenden Blobs Vision Data Access functions Hinweis: Wenn Zu sort. Anzahl gleich 0 ist, besteht die Tabelle nur aus der GetNFound-Funktion. Wenn der Wert des Parameters Zu sort. Anzahl größer als Null ist, fügt DetectBlobs automatisch eine Ergebnistabelle mit maximal 10 Einträgen ein, die den ersten 10 Blobs in der Blobs-Datenstruktur entsprechen. Möchten Sie mehr Einträge anzeigen lassen, können Sie die Tabelle durch kopieren der letzten Zeile und das Einfügen weiterer Zeilen am Ende erweitern. Vergewissern Sie sich, dass der Index der neu eingefügten Zeilen inkrementiert wird, so dass der korrekte Blob indiziert wird.
Label | Name der Funktion | Beschreibung
X | GetX(Blobs, Blob Index) | Gibt die x-Koordinate des Massenmittelpunkts (Zentroid) eines Blobs zurück.
Y | GetY(Blobs, Blob Index) | Gibt die y-Koordinate des Massenmittelpunkts (Zentroid) eines Blobs zurück.
Winkel | GetAngle(Blobs, Blob Index) | Gibt den Winkel der Hauptachse eines Blobs in Bezug auf die y-Achse zurück.
Farbe | GetColor(Blobs, Blob Index) | Gibt den Farbwert eines Blobs zurück (0 = schwarz, 1 = weiß).
Güte | GetScore(Blobs, Blob Index) | Ein Maß dessen, in welchem Grad der Blob den Kriterien der Funktion FindBlobs entspricht.
Fläche | GetArea(Blobs, Blob Index) | Gibt die Fläche des gefundenen Blobs in Pixel zurück. Hinweis: Wenn der Blob Löcher enthält, variiert der Wert „Fläche“ und hängt davon ab, ob das Kontrollkästchen „Löcher füllen“ aktiviert oder deaktiviert ist.
Streckung | GetElongation(Blobs, Blob Index) | Gibt einen Wert zurück, der darstellt, wie weit die Pixel eines Blobs vom Massenmittelpunkt (Zentroid) gestreckt sind. Als Beispiel würde ein Kreis eine Ausdehnung von 0 aufweisen, während ein Nagel eine hohe Ausdehnung hätte.
Löcher | GetHoles(Blobs, Blob Index) | Gibt die Anzahl der Löcher innerhalb des Blobs zurück. Hinweis: Nur Löcher, deren Fläche größer ist als die Bereichsgrenze: Min, werden zurückgegeben.
Umfang | GetPerimeter(Blobs, Blob Index) | Gibt die Länge der Grenze des Blobs zurück. Der Umfang wird durch das Zählen der außenliegenden Kanten der Pixel berechnet, die die Grenze des Blobs bilden.
Ausdehnung | GetSpread(Blobs, Blob Index) | Gibt einen Wert zurück, der darstellt, wie weit die Pixel des Blobs vom Flächenmittelpunkt (Zentroid) des Blobs verteilt sind. Zum Beispiel würde ein kreisförmiges Objekt einen niedrigeren Wert für „Ausdehnung“ haben als ein ovales Objekt.

## DetectBlobs Beispiel

Die DetectBlobs-Funktion wird zur Identifizierung und Positionierung von Blobs, also von verbundenen Pixeln, verwendet, die verschiedene Formen und Größen haben können. Dieses Beispiel veranschaulicht, wie sich die in der Ergebnistabelle der DetectBlobs-Datenstruktur zurückgegebenen Informationen auf die gefundenen Blobs beziehen und wie diese Informationen später zum Sortieren und Filtern der Blobs anhand ihrer Merkmale verwendet werden können.

Für dieses Beispiel wurde das folgende Bild verwendet, um die Bedeutung der Werte zu veranschaulichen, die in der Ergebnistabelle der DetectBlobs-Funktion zurückgegeben werden:

Eine DetectBlobs-Funktion wurde in eine leere Zelle des Arbeitsblatts eingefügt. Anhand der Formen wurden die Parameter des Eigenschaftsblatts von DetectBlobs wie folgt konfiguriert:

- Bild: Für dieses Beispiel wurde die Standardeinstellung verwendet. Dieser Parameter kann jedoch auf jede Bild-Datenstruktur verweisen, wie z. B. eine Image-Datenstruktur, die von einer Filter-Funktion erzeugt wird, die das Bild verarbeitet, um übermäßiges Bildrauschen zu entfernen, bevor es auf Blobs untersucht wird.
- Vorrichtung: Die Standardeinstellung wurde verwendet, da das Bild stationär ist und nicht gedreht oder verschoben werden soll. Wenn Sie jedoch die DetectBlobs-Funktion auf bewegte Bilder anwenden, empfiehlt es sich, den Bildbereich einer Vorrichtung zuzuweisen.
- Bereich: Der Bildbereich wurde maximiert, damit alle Formen in der Analyse einbezogen werden. Wenn Sie auf den Parameter „Bereich“ und anschließend in der Symbolleiste des Eigenschaftsblatts auf die Schaltfläche „Bereich maximieren“ klicken, wird der Bereich automatisch gedehnt, so dass er das ganze Bild erfasst.
- Zu sort. Anzahl: Die Zu sort. Anzahl wurde auf sechs eingestellt. Dieser Parameter hätte auch auf 0 gesetzt werden können, und das Werkzeug hätte automatisch alle Blobs extrahiert, die den Farb- und Größeneinstellungen entsprechen, die in den Parametern von Farbe: Blob/Farbe: Hintergrund und Bereichsgrenze: Min/Bereichsgrenze: Max angegeben sind.
- Schwellenwert: Es wurde die Standardeinstellung verwendet, die automatisch den Schwellenwert der Graustufen berechnet. Die Graustufen-Unterschiede sind diesem Bild sehr ausgeprägt und es ist eindeutig, welche Pixel die dunklen und welche die hellen Pixel sind. In Anwendungen, wo die Übergänge subtiler sind und die automatische Einstellung für den Schwellenwert die Werte nicht gut trennt, können Histogramm-Funktionen, wie z. B. die HistHead- oder die HistTail-Funktionen sehr hilfreich sein, um die Graustufen-Intensitäten in den verschiedenen Bereichen des Bilds bestimmen zu können.
- Löcher füllen: Es wurde die Standardeinstellung verwendet, die den Beitrag der in den Blobs gefundenen Löcher ermöglicht, wodurch der Gesamtbereich dieser Blobformen mit Löchern verringert wird. Bei Aktivierung des Kontrollkästchens „Löcher füllen“ würden Löcher innerhalb von Blobs gemeldet werden und die Fläche in den Löchern würde hinzugefügt werden, wodurch sich die Fläche der Blobs mit Löchern vergrößert.
- Randbereich-Blobs: Es wurde die Standardeinstellung verwendet, die alle Blobs enthält, die den Randbereich des Bildbereichs schneiden. Wenn bei dieser Einstellung das Bild nach links verschoben wurde und der größte Kreis und das kleinste Quadrat den am weitesten links liegenden Rand des Bildbereichs schneiden, werden die Teile dieser Formen, die noch innerhalb der Bereichsgrenze liegen, als Blobs extrahiert. Hätten wir aber das Kontrollkästchen abgewählt, wären diese Blobs nicht bearbeitet worden.
- Bereichsgrenze: Min/Max: Es wurden die Standardeinstellungen verwendet. Diese Einstellungen filtern die Blobs im Bereich während der Extraktionsphase, und bewerten die Blobs anhand der minimalen und maximalen Einstellungen für die Bereichsgrenze, um zu entscheiden, ob die Fläche des Blobs es ermöglicht, den Blob als Blob zu klassifizieren.
- Anzeigen: Es wurde die Standardeinstellung verwendet, die das Anzeigen der Ergebnisgrafiken nur erlaubt, wenn die Zelle mit der Blobs-Datenstruktur ausgewählt ist, wie im folgenden Beispiel.

Nach dem Konfigurieren des Eigenschaftsblatts von DetectBlobs werden eine Blobs-Datenstruktur und eine Ergebnisdatentabelle erstellt.

Die in der Ergebnistabelle zurückgegebenen Werte können, mithilfe der FindBlobs- und SortBlobs-Funktionen, zum Filtern und Sortieren der Blobs verwendet werden. Beispielsweise könnte eine FindBlobs-Funktion in das Arbeitsblatt eingefügt werden und auf die DetectBlobs-Funktion verweisen. Die FindBlobs-Funktion könnte dann zum Filtern der Blobs anhand ihrer Ausdehnung verwendet werden. Dann könnte eine SortBlobs-Funktion in die Tabelle eingefügt werden und auf die kürzlich erstellte FindBlobs-Funktion verweisen, um die Liste der Blobs basierend auf der x-, y-Position zu sortieren.