F_VN_DetectBlobs

F_VN_DetectBlobs 1:

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

F_VN_DetectBlobs 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

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

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

F_VN_DetectBlobs 3: In/Outputs

Name

Type

Description

stParams

TcVnParamsBlobDetection

Parameters to filter the detected contours.

F_VN_DetectBlobs 4: Return value

HRESULT

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

Zirkularität / Kreisförmigkeit

Konvexität

Exzentrizität

Trägheitsverhältnis

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

Required License

TC3 Vision Base

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1. 4024.44 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision