Measurement
Die Gruppe enthält Funktionen zur Vermessung von Objekten auf Bildern.
Funktionen
Kantenlokalisierung
- LocateCircularArc zur Lokalisierung von anteiligen Kreisbögen
- LocateEdge zur Lokalisierung von linearen Kanten
- LocateEdges zur Lokalisierung von mehreren linearen Kanten
- LocateEllipse zur Lokalisierung von vollständigen Ellipsen
Geometrische Merkmale
- ClosestPointsBF zur Berechnung der nächstgelegenen Punkte zweier Punktewolken
- MeasureAngleBetweenEdges zur Vermessung des Winkels zwischen zwei Kanten
- MeasureEdgeDistance zur Vermessung des durchschnittlichen Abstands zweier Kanten
- MeasureMinEdgeDistance zur Vermessung des minimalen Abstands zweier Kanten
Sonstiges
- F_VN_AdjustSearchWindowOrientationToLinearEdge zur Ausrichtung des Suchfelds zu einer Kante
Parameter zur Kantenlokalisierung
Die Grenzen eines Bildobjekts liegen häufig nicht exakt auf der Grenze zwischen zwei Pixeln. Sie verlaufen stattdessen unabhängig von Pixelraster. Daher ist eine Subpixel-genaue Kantenlokalisierung nötig. Diese betrachtet nicht nur den Übergang zwischen zwei Pixeln, sondern bestimmt anhand des gesamten Intensitätsverlaufs einer Objektgrenze die Kantenposition innerhalb eines Pixels.
Hinweis | |
Bild vor Vermessung nicht bearbeiten Bearbeiten Sie das Bild vor dem Aufruf der Vermessungsfunktion nicht. Eine Bearbeitung kann zu Informationsverlust und entsprechend geringerer Genauigkeit führen. |
Diese Grundfunktionalität der Kantenlokalisierung wird von allen Vermessungsfunktionen verwendet. Die Funktionen unterscheiden sich hauptsächlich darin, in welcher geometrischen Anordnung sie die Kantenlokalisierung durchführen (z. B. F_VN_LocateEllipse für runde Objekte) und welche Eigenschaften Sie daraus berechnen (z. B. F_VN_MeasureAngleBetweenEdges zur Winkelvermessung).
Bei jeder Funktion, die Kantenlokalisierung nutzt, müssen bestimmte Parameter definiert werden. Dazu gehören:
- Definition des Suchbereichs: Wo wird die Kante gesucht?
- Definition des Kantenkontrasts: Was wird als Kante erkannt?
- Definition des Vermessungsalgorithmus: Wie soll die genaue Position der Kante bestimmt werden.
Diese Parameter sind folgend beschrieben. Bei Expert-Parametern sind zudem Standard-Werte angegeben.
Suchbereich
Parameter | Beschreibung |
---|---|
Lage der Suchlinien | Die Lage der Suchlinien wird je nach zu lokalisierendem Merkmal definiert. Die Lage von Suchlinien für eine lineare Kante wird als einzelne Linie mit Startpunkt Die Lage von Suchlinien für eine Ellipse wird durch einen Mittelpunkt Die Lage von Suchlinien für Winkel wird durch einen Innenpunkt Die Lage der Suchlinien sollte immer so eingestellt werden, dass die Suchlinien die zu lokalisierenden Kanten orthogonal schneiden. Ein rechteckiger Suchbereich kann bei Bedarf mit der Funktion F_VN_AdjustSearchWindowOrientationToLinearEdge orthogonal an eine Kante angepasst werden. |
Anzahl der Suchlinien
| Hiermit wird festgelegt, wie viele Suchlinien für die Kantenlokalisierung verwendet werden sollen. Die einfachste Kantenlokalisierung hat eine Suchlinie, auf der die Kante gefunden werden muss. Bei mehreren Suchlinien werden je nach zu bestimmendem geometrischem Merkmal örtlich verteilt, sodass mehrere Kantenübergänge lokalisiert werden. Dies kann in folgenden Fällen nötig sein:
Bei der Lokalisierung von linearen Kanten werden die Suchlinien symmetrisch auf beiden Seiten der zentralen Suchlinie angeordnet, wobei die zentrale Suchlinie in |
Abstand der Suchlinien
(Expert) Standard: | Die Suchlinien-Distanz definiert den Abstand zwischen benachbarten Suchlinien in Pixeln (> 0, default 1). Dadurch kann flexibel zwischen Genauigkeit und benötigter Rechenzeit abgewogen werden. |
Invertierung der Suchrichtung
(Expert) Standard: | Der Lokalisierungsalgorithmus sucht die Kante immer von einem Ende der Suchlinie zum anderen. Z. B. wird von aStartPoint nach aEndPoint gesucht. Wenn es aufgrund der Bildbeschaffenheit nötig ist diese Suchrichtung zu invertieren (also vom anderen Ende der Suchlinien aus anzufangen), hilft dieser Parameter. |
Kontrast der Kante
Parameter | Beschreibung |
---|---|
Kantenrichtung
| Die Kantenrichtung legt fest, ob ein Kantenübergang von Hell nach Dunkel oder von Dunkel nach Hell gefunden werden soll. Dazu stehen folgende Werte zur Verfügung:
|
Minimalstärke
| Die Minimalstärke legt fest, wie groß der Intensitätsunterschied innerhalb einer Kante mindestens sein muss, damit sie gefunden wird. Dadurch lässt sich steuern, wie viel Kontrast eine Kante haben muss, um gefunden zu werden. |
Maximaldicke
(Expert) Standard: | Die Maximaldicke legt fest, innerhalb von wie vielen Pixeln Dadurch lässt sich steuern, ob nur scharfe Kanten oder auch sehr unscharfe Kanten gefunden werden sollen. |
Algorithmus
Parameter | Beschreibung |
---|---|
Algorithmus
(Expert) Standard: | Dieser Parameter definiert den verwendeten Lokalisierungsalgorithmus. Zur Verfügung stehen:
Die Eine Gauß-Funktion ist gut für Linien geeignet, d. h. ein Übergang dunkel-hell-dunkel oder umgekehrt. Das Helligkeitsplateau darf dabei aber nur wenige Pixel breit sein, ansonsten sollte die erf-Funktion verwendet werden. |
Subpixel / Iterationen
(Expert) Standard: 10 | Die Bedeutung dieses Parameters ist abhängig vom verwendeten Lokalisierungsalgorithmus. Bei Die Anzahl der betrachteten Subpixel definiert, wie feingranular die Suchlinie die unterliegenden Pixelintensitäten auswertet. Ein Wert von 10 gibt z. B. an, dass auf der Länge von 1 Pixel 10 Messwerte genommen werden. Empfohlen: Bei Die Anzahl der Iterationen ist ein Abbruchkriterium, das definiert, mit maximal wie vielen Iterationen das Kantenmodell auf die Pixelintensitäten approximiert werden sollen. Mehr Iterationen erhöhen die Laufzeit, wenn diese zu hoch ist sollte die Interpolationsmethode verwendet werden. Empfohlen: |
Näherungsgenauigkeit
(Expert) Standard: | Die Näherungsgenauigkeit ist ein weiteres Abbruchkriterium der Kantenlokalisierung. Sie wird nur beachtet, wenn der Lokalisierungsalgorithmus Die Approximation der Kante bzw. der Linie wird abgebrochen, wenn entweder die Anzahl der Iterationen von Empfohlen: |
Interpretation des HRESULT
Für Measurement-Funktionen haben die HRESULT–Rückgabewerte folgende Bedeutung:
Code | Name | Beschreibung |
---|---|---|
16#000 | S_OK | Funktion wurde erfolgreich ausgeführt und auf allen Suchlinien wurde eine Kante lokalisiert. |
16#001 | S_FALSE | Funktion wurde erfolgreich ausgeführt, aber es wurde nicht auf jeder Suchlinie eine Kante lokalisiert. |
16#256 | S_WATCHDOGTIMEOUT | Funktion wurde vom Watchdog abgebrochen. In diesem Fall können alle Measurement-Funktionen Teilergebnisse zurückgeben. |
16#70C | NOTFOUND | Funktion wurde erfolgreich ausgeführt, aber auf keiner Suchlinie konnte eine Kante gefunden werden. Es wird davon ausgegangen, dass eine Vermessungsfunktion nur aufgerufen wird, wenn sichergestellt ist, dass das Bild ein Objekt mit den parametrierten Kanteneigenschaften enthält. Ein Nicht-Finden aller Suchlinien deutet dabei auf eine falsche Parametrierung oder einen ungeeigneten Aufruf der Funktion hin. Daher wird in diesem Fall ein Error-Code ausgegeben. |
16#7xx | Alle Error-Codes außer NOTFOUND | Funktion wurde nicht erfolgreich ausgeführt. Siehe dazu: ADS Return Codes |
Zur Verarbeitung des Rückgabewerts kann beispielhaft folgende Abfrage benutzt werden:
IF SUCCEEDED(hr) THEN
// Process results
IF hr <> S_OK THEN
// Emit warning that not all search lines were found
END_IF
ELSIF hr = Tc2_System.E_HRESULTAdsErr.NOTFOUND THEN
// Emit warning for wrong parametrization or missing piece
ELSE
// Error handling
END_IF
Ausführungszeit reduzieren
Die Ausführungszeit schwankt bei einem festen Suchfenster leicht je nach Position des Bauteils im Bild. Ist die gefundene Kante näher am Startpunkt, ist die Ausführungszeit kürzer als bei einer weiter entfernten Kante.
Ein größeres Schwanken kann bei den beiden Approximierungs-Algorithmen auftreten, da diese unterschiedlich viele Iterationen benötigen, um die Modellparameter mittels der umliegenden Pixelintensitäten zu approximieren.
Generell werden weniger Iterationen benötigt, wenn die Suchlinien des Suchfensters möglichst orthogonal auf die Kante treffen. Falls die Position und Orientierung der Objekte im Bild keinen oder nur geringen Schwankungen unterliegen, richten Sie das Suchfenster entsprechend aus, um kürzere Ausführungszeiten zu erreichen. Zudem lässt sich die maximal benötigte Zeit reduzieren, indem die maximale Anzahl an Iterationen verringert wird, was aber ggf. auch ungenauere Ergebnisse liefert.
Zudem kann die Zeit auch mit einem Watchdog von außen begrenzt werden, der die Ausführung der Funktion bei Bedarf abbricht und die vorhandenen Teilergebnisse zurückliefert.
Beispiele
- F_VN_AdjustSearchWindowOrientationToLinearEdge
- F_VN_ClosestPointsBF
- F_VN_LocateCircularArc
- F_VN_LocateCircularArcExp
- F_VN_LocateEdge
- F_VN_LocateEdgeExp
- F_VN_LocateEdges
- F_VN_LocateEdgesExp
- F_VN_LocateEllipse
- F_VN_LocateEllipseExp
- F_VN_MeasureAngleBetweenEdges
- F_VN_MeasureAngleBetweenEdgesExp
- F_VN_MeasureEdgeDistance
- F_VN_MeasureEdgeDistanceExp
- F_VN_MeasureMinEdgeDistance
- F_VN_MeasureMinEdgeDistanceExp