F_VN_DetectBlobs
Detects blob-contours. Applies a threshold, a contour search and offers several options for filtering the found contours. Provides easy setup for multiple thresholds and combination of results.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.
Syntax
Definition:
FUNCTION F_VN_DetectBlobs : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipBlobContours : Reference To ITcVnContainer;
END_VAR
VAR_IN_OUT
stParams : TcVnParamsBlobDetection;
END_VAR
VAR_INPUT
hrPrev : HRESULT;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image (USINT or REAL, 1 channel or 3 channel (3 channel input is expected to be RGB and internally converted to Gray)) | |
ipBlobContours |
Reference To ITcVnContainer |
Returns a container which is filled with the found contours (ContainerType_Vector_Vector_TcVnPoint2_DINT; The elements of this container are single contours. Non-zero interface pointers are reused.) |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
In/Outputs
Name |
Type |
Description |
---|---|---|
stParams |
Parameters to filter the detected contours. |
Weiterführende Informationen
Die Funktion F_VN_DetectBlobs
detektiert Blob-Konturen anhand von definierbaren Merkmalen im Eingangsbild. Intern geschieht dies durch eine Konturfindung analog zu F_VN_FindContours und anschließender Filterung der gefundenen Konturen anhand von Konturmerkmalen.
Parameter
Eingangsbild
Das Eingangsbild ipSrcImage
muss ein 1- oder 3-kanaliges Bild vom Typ USINT
oder REAL
sein. Dabei werden 3-kanalige Bilder als RGB-Bilder interpretiert und intern in ein Grauwertbild konvertiert.
Liste an gefundenen Konturen (Rückgabewert)
Alle im Eingangsbild gefundenen Konturen werden in dem Container ipBlobContours
zurückgegeben.
Parameter zur Blob-Detektion
Die Parameter stParams
der Struktur TcVnParamsBlobDetection legen fest, welche Merkmale eine Kontur im Eingangsbild haben muss, um gefunden und zurückgegeben zu werden.
Expert-Parameter
Die Expert-Variante F_VN_DetectBlobsExp enthält zusätzliche Parameter.
Blobs-Parameter
Schwellwert
Im ersten Schritt erfolgt intern eine Kontursuche anhand eines oder mehrerer Binärbilder. Dazu wird das Eingangsbild anhand eines oder mehrerer Schwellwerte, sowie des Schwellwerttyps in die Binärbilder konvertiert.
Das Setzen eines einzelnen Schwellwerts entspricht dabei dem Aufruf von F_VN_Threshold. Dazu muss fThresholdStep auf 0 gesetzt werden und es wird nur der Wert von fMinThreshold verwendet.
Alternativ dazu können auch mehrere Schwellwerte berücksichtigt werden. Erster Schwellwert ist fMinThreshold. Von dem Wert ausgehend wird jeweils fThresholdStep für den nächsten Schwellwert addiert, bis der Schwellwert größer fMaxThreshold ist. Sollen zum Beispiel die drei Schwellwerte 100, 150 und 200 berücksichtigt werden, lautet die Parametrierung:
stBlobParams.fMinThreshold := 100;
stBlobParams.fMaxThreshold := 200;
stBlobParams.fThresholdStep := 50;
Gleiche Konturen bei verschiedenen Schwellwerten
Es kann vorkommen, dass dieselbe Kontur bei verschiedenen Schwellwerten gefunden wird. Die Identifizierung gleicher Konturen erfolgt über einen Mittelpunktsvergleich. Dabei gibt fMinBlobDistance den minimalen Mittelpunktsabstand unterschiedlicher Konturen an. Ist der Abstand nicht erreicht, erfolgt entsprechend eBlobCombination (ETcVnBlobCombination) die Konturauswahl.
Zudem kann das mehrfache Finden einer Kontur bei verschiedenen Schwellwerten auch ein Filterkriterium sein. Wie oft eine Kontur gefunden werden muss um berücksichtigt zu werden, wird über nMinRepeatability angegeben.
Filter
Im zweiten Schritt werden die gefundenen Konturen entsprechend der definierten Parameter gefiltert. Die einzelnen Filterkriterien können dabei jeweils über eine Bool-Variable aktiviert werden.
Fläche in Pixeln
- Parameter: bFilterByArea, fMinArea, fMaxArea
- Die Fläche einer Kontur kann alternativ über F_VN_ContourArea ermittelt werden.
Zirkularität / Kreisförmigkeit
- Parameter: bFilterByCircularity, fMinCicularity, fMaxCircularity
- Wertebereich von 0 bis 1, wobei ein perfekter Kreis hat eine Zirkularität von 1 hat.
- Die Zirkularität / Kreisförmigkeit einer Kontur kann alternativ über F_VN_ContourCircularity ermittelt werden.
Konvexität
- Parameter: bFilterByConvexity, fMinConvexity, fMaxConvexity
- Wertebereich von 0 bis 1, wobei eine vollkommen konvexe Form eine Konvexität von 1 hat.
Exzentrizität
- Parameter: bFilterByEccentricity, fMinEccentricity, fMaxEccentricity
- Wertebereich von 0 bis 1, wobei ein perfekter Kreis eine Exzentrizität von 0 hat.
- Die Exzentrizität einer Kontur kann alternativ über F_VN_ContourEccentricity ermittelt werden.
Trägheitsverhältnis
- Parameter: bFilterByInertiaRatio, fMinInertiaRatio, fMaxInertiaRatio
- Wertebereich von 0 bis 1, wobei z. B. Formen mit gleicher Höhe und Breite ein Trägheitsverhältnis von 1 haben.
Anwendung
VAR
stBlobParams : TcVnParamsBlobDetection;
END_VAR
stBlobParams.bFilterByArea := TRUE;
stBlobParams.fMinArea := 100;
stBlobParams.fMaxArea := 100_000;
hr := F_VN_DetectBlobs(
ipSrcImage := ipImageIn,
ipBlobContours := ipContours,
stParams := stBlobsParams,
hrPrev := hr
);
Beispiel
Verwandte Funktionen
- F_VN_FindContours(Exp) zur allgemeinen Kontur-Findung
- F_VN_FindContourHierarchyExp mit Rückgabe der Hierarchie
- F_VN_DetectBlobs mit integrierter Filterung der Konturen
Required License
TC3 Vision Base
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |