F_VN_Threshold

F_VN_Threshold 1:

Apply a fixed threshold or a dynamic threshold according to Otsu.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.

Syntax

Definition:

FUNCTION F_VN_Threshold : HRESULT
VAR_INPUT
    ipSrcImage     : ITcVnImage;
    ipDestImage    : Reference To ITcVnImage;
    fThreshold     : LREAL;
    fMaxValue      : LREAL;
    eThresholdType : ETcVnThresholdType;
    hrPrev         : HRESULT;
END_VAR

F_VN_Threshold 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image (For Otsu and Triangle threshold types, only 1 channel of TCVN_ET_USINT is supported)

ipDestImage

Reference To ITcVnImage

Destination image (An appropriate destination image will be created if required.)

fThreshold

LREAL

Fixed threshold (unused if dynamic thresholding is selected)

fMaxValue

LREAL

Maximum pixel value

eThresholdType

ETcVnThresholdType

Threshold type to be applied

hrPrev

HRESULT

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

F_VN_Threshold 3: Return value

HRESULT

Weiterführende Informationen

Die Funktion F_VN_Threshold segmentiert das Eingangsbild hinsichtlich eines Schwellwerts. Abhängig von diesem Schwellwert und dem verwendeten Algorithmus wird jedem Pixel des binären Ergebnisbilds der Wert 0 und ein vorgegebener Zielwert zugewiesen.

Algorithmus

Ein Threshold verwandelt ein monochromes Bild in ein binäres Bild und lässt so Segmente entstehen. Eine gute Segmentierung ist die Voraussetzung für viele Folgemethoden wie z. B. die Kontursuche. TwinCAT Vision bietet verschiedene Arten von Schwellwerten, die für unterschiedliche Anwendungen geeignet sind.

Fester Schwellwert

Ein fester Schwellwert erzeugt einfach ein binäres Bild, indem Pixel mit einem Wert größer als fThreshold auf weiß (255) und andere auf schwarz (0) gesetzt werden. fThreshold ist ein Parameter der entsprechenden Funktionen. Um einen guten Wert herauszufinden, werden Sie sich höchstwahrscheinlich durch verschiedene Versuche annähern.

Dynamischer Schwellwert

Eine dynamische Schwelle nach Otsu funktioniert perfekt für bimodale Bilder. Das Histogramm eines bimodalen Bildes hat zwei Hauptpeaks und ein guter Schwellwert liegt höchstwahrscheinlich genau in der Mitte. Falls Sie ein verrauschtes Bild haben, können Sie einen Gauß-Filter verwenden, um es in eine bimodale Richtung zu verschieben.

Adaptiver Schwellwert

Ein adaptiver Schwellwert verwendet variable Schwellwerte im gesamten Bild. Siehe F_VN_AdaptiveThresholdExp .

Parameter

Eingangsbild

Das Eingangsbild ipSrcImage darf einen oder drei Kanäle besitzen.

Ergebnisbild

Das Ergebnisbild ipDestImage gibt das segmentierte Binärbild zurück.

Schwellwert

Der Schwellwert fThreshold definiert die Segmentierungsbedingung. Er muss je nach Beschaffenheit des Eingangsbilds angepasst werden.

Zielwert

Der Zielwert fMaxValue definiert, welchen Wert die Pixel bekommen sollen, die das Schwellwert-Kriterium erfüllen. Wenn das Ergebnisbild nur aus schwarzen und weißen Pixeln bestehen soll, muss hier der Maximal-Wert des Element-Typs des Eingangsbilds eingestellt werden. Dies entspricht (2^d)-1, wobei d die Bittiefe des Element-Typs darstellt; z. B. (2^8)-1=255 bei 8-Bit-Bildern.

Schwellwert-Typ

Der Schwellwert-Typ eThresholdType definiert, nach welchem Algorithmus der Schwellwert fThreshold auf das Eingangsbild angewandt wird. Alle Werte des Enums ETcVnThresholdType werden unterstützt.

Anwendung

Die binäre Segmentierung eines 8-Bit Grauwertbilds in der Mitte des Wertespektrums sieht z. B. so aus:

hr := F_VN_Threshold(
    ipSrcImage      :=  ipImageIn,
    ipDestImage     :=  ipImageRes,
    fThreshold      :=  128, // half value range: (2^8)/2=128
    fMaxValue       :=  255, // max value of 8-bit image: (2^8)-1=255
    eThresholdType  :=  TCVN_TT_BINARY,
    hrPrev          :=  hr
);

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