F_VN_DistanceTransformation

F_VN_DistanceTransformation 1:

Calculates the distance transformation, which is the distance to the closest zero pixel in a binary image.

Syntax

Definition:

FUNCTION F_VN_DistanceTransformation : HRESULT
VAR_INPUT
    ipSrcImage    : ITcVnImage;
    ipDestImage   : Reference To ITcVnImage;
    eDistanceType : ETcVnDistanceType;
    eMaskSize     : ETcVnDistanceTransformationMask;
    hrPrev        : HRESULT;
END_VAR

F_VN_DistanceTransformation 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image (USINT, 1 channel)

ipDestImage

Reference To ITcVnImage

Destination image (REAL, 1 channel. An appropriate destination image will be created if required.)

eDistanceType

ETcVnDistanceType

Distance computation method (supported: L1, L2, C)

eMaskSize

ETcVnDistanceTransformationMask

Size of the distance transformation mask

hrPrev

HRESULT

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

F_VN_DistanceTransformation 3: Return value

HRESULT

Weiterführende Informationen

Diese Funktion führt die Distanz-Transformation eines Bildes durch. Zudem existiert die Expert-Variante F_VN_DistanceTransformationExp mit erweiterten Parametriermöglichkeiten.

Parameter

Folgende Parameter stehen in der Basis-Variante zur Verfügung:

Originalbild

Für das Originalbild ipSrcImage wird ein 1-kanaliges 8-Bit Bild (Element-Typ TCVN_ET_USINT) erwartet. Andere Bildformate müssen zunächst umgewandelt werden.

Ergebnisbild

Das Ergebnisbild ipDestImage wird mit Element-Typ TCVN_ET_REAL zurückgegeben. Der Wert jedes Pixels beschreibt dabei die Distanz des jeweiligen Pixels zum nächstgelegenen null-wertigen Pixel im Originalbild.

F_VN_DistanceTransformation 4:

Anzeige im ADS Image Watch

Um das Ergebnisbild im ADS Image Watch anzeigen zu können, muss es zunächst in ein kompatibles Bildformat umgewandelt werden. Je nach Anwendungsfall kann zudem eine Skalierung der Pixelwerte sinnvoll sein.

Distanz-Typ

Der Distanz-Typ eDistanceType bestimmt, mit welcher Formel die Distanz zwischen einem Pixel und dem nächstgelegenen null-wertigen Pixel berechnet wird. Aktuell werden folgende Distanztypen aus dem Enum ETcVnDistanceType unterstützt:

Masken-Größe

Die Maskengröße eMaskSize beschreibt die Annäherung der euklidischen Distanz, wenn als Distanztyp die L2-Norm ausgewählt ist:

Bei den Distanztypen L1 und C hat die Maskengröße keinen Effekt. Stattdessen wird dann intern immer eine 3x3-Maske verwendet.

Anwendung

Eine Anwendung dieser Funktion kann z. B. wie folgt aussehen:

// convert to binary image
hr := F_VN_Threshold(ipImageIn, ipImageWork, 128, 255, TCVN_TT_BINARY, hr);
// apply distance transformation
hr := F_VN_DistanceTransformation(
    ipSrcImage      :=  ipImageWork,
    ipDestImage     :=  ipImageWork,
    eDistanceType   :=  TCVN_DT_C,
    eMaskSize       :=  TCVN_DTM_3,
    hr
);

// convert image to display it in ADS Image Watch
hr := F_VN_ConvertElementType(ipImageWork, ipImageWork, TCVN_ET_USINT, hr);

Originalbild

Binärbild

Ergebnisbild

F_VN_DistanceTransformation 5:

F_VN_DistanceTransformation 6:

F_VN_DistanceTransformation 7:

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