F_VN_DistanceTransformation
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
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image (USINT, 1 channel) | |
ipDestImage |
Reference To ITcVnImage |
Destination image (REAL, 1 channel. An appropriate destination image will be created if required.) |
eDistanceType |
Distance computation method (supported: L1, L2, C) | |
eMaskSize |
Size of the distance transformation mask | |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
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.
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:
- TCVN_DT_L1
- TCVN_DT_L2
- TCVN_DT_C
Masken-Größe
Die Maskengröße eMaskSize
beschreibt die Annäherung der euklidischen Distanz, wenn als Distanztyp die L2-Norm ausgewählt ist:
- TCVN_DTM_PRECISE: Der euklidische Abstand wird präsize berechnet.
- TCVN_DTM_3: Der euklidische Abstand wird als Summe von Abstandselementen innerhalb einer 3x3-Maske angenähert (horizontal, vertikal und diagonal).
- TCVN_DTM_5: Der euklidische Abstand wird als Summe von Abstandselementen innerhalb einer 5x5-Maske angenähert (horizontal, vertikal, diagonal und Springerzug (wie beim Schach)).
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 |
Required License
TC3 Vision Base
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.54 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |