F_VN_CannyEdgeDetection
Find edges using the Canny edge detection algorithm.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Syntax
Definition:
FUNCTION F_VN_CannyEdgeDetection : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipDestImage : Reference To ITcVnImage;
fThresholdLow : LREAL;
fThresholdHigh : LREAL;
hrPrev : HRESULT;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image (elements of type USINT) | |
ipDestImage |
Reference To ITcVnImage |
Destination image (elements of type USINT. An appropriate destination image will be created if required.) |
fThresholdLow |
LREAL |
Low threshold |
fThresholdHigh |
LREAL |
High threshold |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
Weiterführende Informationen
Diese Funktion findet Kanten auf einem Bild und stellt diese durch weiße Linien auf schwarzem Hintergrund dar. Zudem existiert diese Expert-Variante F_VN_CannyEdgeDetectionExp mit erweiterten Parametriermöglichkeiten.
Algorithmus
Die Canny Edge Kantendetektion ist ein mehrstufiger Algorithmus, um möglichst robust Kanten zu detektieren. Er besteht aus folgenden Schritten:
- Reduzierung von Rauschen mittels Gauß-Filter.
- Kanten finden mittels Sobel-Operator.
- Linienverdünnung mittels Non-maximum suppression, d. h. die resultierenden Linien sind 1px dick.
- Hysterese, so dass nur starke Linien erhalten bleiben (siehe Schwellwert-Parameter unten).
Parameter
Originalbild
Für das Originalbild ipSrcImage
wird ein 1-kanaliges 8-Bit Intensitätsbild (Pixelformat TCVN_ET_USINT
) erwartet. Sie können also ein Grauwertbild oder einzelne Kanäle eines Farbbilds verwenden.
Ergebnisbild
Das Ergebnisbild ipDestImage
besitzt dasselbe Format.
Schwellwerte
Die beiden Schwellwerte fThresholdLow
und fThresholdHigh
bestimmen, welche der gefundenen Kanten akzeptiert werden: Pixel mit einem Gradienten höher als fThresholdHigh
werden akzeptiert. Pixel mit einem Farbverlauf unterhalb von fThresholdLow
werden verworfen. Pixel mit Gradienten dazwischen werden nur akzeptiert, wenn sie mit bereits akzeptierten Pixeln verbunden sind.
Durch die beiden Schwellwerte ist eine flexible Einstellung möglich. Eine harte Schwelle ist ebenfalls realisierbar, indem Sie beide Werte gleichsetzen.
Wenn Sie die Schwellwerte zu hoch einstellen, können wichtige Kanteninformationen verloren gehen. Bei zu niedrigen Schwellwerten können Rauschen und andere irrelevante Informationen als Kanten interpretiert werden.
Anwendung
hr := F_VN_CannyEdgeDetection(
ipSrcImage := ipImageIn,
ipDestImage := ipImageWork,
fThresholdLow := 0,
fThresholdHigh := 200,
hr
);
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 |