F_VN_CannyEdgeDetection

F_VN_CannyEdgeDetection 1:

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

F_VN_CannyEdgeDetection 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

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

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

F_VN_CannyEdgeDetection 3: Return value

HRESULT

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:

  1. Reduzierung von Rauschen mittels Gauß-Filter.
  2. Kanten finden mittels Sobel-Operator.
  3. Linienverdünnung mittels Non-maximum suppression, d. h. die resultierenden Linien sind 1px dick.
  4. 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
);

F_VN_CannyEdgeDetection 4:

F_VN_CannyEdgeDetection 5:

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