Morphologische Operatoren

In diesem Beispiel wenden Sie morphologische Operatoren auf ein Bild an. Dazu nutzen Sie:

Erklärung

Mit einem morphologischen Operator lassen sich Objekte auf einem Bild nach bestimmten Regeln verändern. Meistens werden morphologische Operatoren auf binäre Bilder angewandt; grundsätzlich ist jedoch auch die Anwendung auf Grauwertbilder möglich. Durch kombinierte Operatoren wie das OPENING und das CLOSING können z. B. fehlende Teile in Objekten ergänzt und kleine Ausreißer entfernt werden.

Variablen

ipElement   :  ITcVnImage; 
eSEShape    :  ETcVnStructuringElementShape := TCVN_SES_RECTANGLE;
aSESize     :  ARRAY [0..1] OF UDINT := [29, 29];
eOperator   :  ETcVnMorphologicalOperator := TCVN_MO_OPENING;

Programm

Ein morphologischer Operator benötigt ein Strukturelement, um seinen Einflussbereich für jedes Pixel festzulegen. Sie können dafür aus verschiedenen Formen aus dem Enum ETcVnStructuringElementShape und in unterschiedlicher Größe auswählen.

hr := F_VN_CreateStructuringElement(
    ipStructuringElement    :=  ipElement,
    eShape                  :=  eSEShape,
    nWidth                  :=  aSESize[0],
    nHeight                 :=  aSESize[1],
    hrPrev                  :=  hr);

Daraufhin legen Sie eine morphologische Operation mittels des Enums ETcVnMorphologicalOperator fest und wenden diese mit dem erstellten Strukturelement auf das Eingangsbild an.

hr := F_VN_MorphologicalOperator(
    ipSrcImage              :=  ipImageIn,
    ipDestImage             :=  ipImageRes,
    eOperator               :=  eOperator,
    ipStructuringElement    :=  ipElement,
    hrPrev                  :=  hr);

Ein morphologisches Öffnen mit einem rechteckigen Strukturelement der Größe [31; 31] und vorherigem Schwellwert erzeugt z. B. folgendes Ergebnis. Es entfernt kleinere bzw. schmalere Objekte aus dem Bild.

Eingangsbild

Ergebnisbild

Morphologische Operatoren 1:

Morphologische Operatoren 2:

Hinweis

Hohe Ausführungsdauer

Je nach Größe des Eingangsbilds und des Strukturelements kann die Ausführung des morphologischen Operators sehr lange im Vergleich zu anderen Funktionen dauern. Achten Sie darauf, dass Sie die Zykluszeit entsprechend einstellen und ggfs. einen Watchdog verwenden!