dilation_rectangle1 — Ausführen einer Dilatation mit einem Rechteck.
dilation_rectangle1(Region : RegionDilation : Width, Height : )
dilation_rectangle1 führt eine Dilatation auf der/den
angegebenen Region(en) Region durch. Das strukturierende
Element für diese Operation bildet ein Rechteck mit der Größe
Width x Height. Die Funktion führt
zu einer Expansion der Region und zum Schließen von Löchern, die
kleiner als das angegebene Rechteck sind, innerhalb der Regionen.
dilation_rectangle1 ist eine sehr schnelle Operation, da die
Höhe des Rechtecks nur logarithmisch, die Breite gar nicht in die
Komplexität eingeht. Dies führt auch bei sehr großen Rechtecken
(Kante > 100) zu einem sehr gutem Laufzeitverhalten.
dilation_rectangle1 wird für jede Region einzeln
angewandt. Sollen Lücken zwischen den Regionen geschlossen werden,
dann muss vorher ein union1 oder union2
ausgeführt werden.
Damit eine Region in alle Richtungen gleichmäßig vergrößert wird,
müssen Width und Height ungerade sein. Falls das
nicht der Fall ist, wird die Region rechts bzw. unten um ein Pixel
weiter dilatiert als links bzw. oben.
Region (input_object) region(-array) → object
Regionen die verarbeitet werden sollen.
RegionDilation (output_object) region(-array) → object
Ergebnis der Dilation-Operation.
Width (input_control) extent.x → (integer)
Breite des Rechtecks.
Default: 11
Wertevorschläge: 1, 2, 3, 4, 5, 11, 15, 21, 31, 51, 71, 101, 151, 201
Wertebereich:
1
≤
Width
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Height (input_control) extent.y → (integer)
Höhe des Rechtecks.
Default: 11
Wertevorschläge: 1, 2, 3, 4, 5, 11, 15, 21, 31, 51, 71, 101, 151, 201
Wertebereich:
1
≤
Height
≤
511 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
cout << "Reproduction of 'dilation_rectangle ()'" << endl;
cout << "First = original image " << endl;
cout << "Blue = after dilation " << endl;
cout << "Red = after segmentation " << endl;
HByteImage img("monkey");
HWindow w;
HRegionArray regs = (img >= 220).Connection();
HRegionArray dilreg = regs.DilationRectangle1 (2, 4);
img.Display (w); w.Click ();
w.SetColor ("blue"); dilreg.Display (w); w.Click ();
w.SetColor ("red"); regs.Display (w); w.Click ();
return(0);
}
Sei F1 die Fläche einer Eingaberegion und H die Höhe des Rechtecks, dann ist die Laufzeitkomplexität für eine Region:
Bei korrekter Parametrisierung liefert die Funktion
dilation_rectangle1 den Wert 2 (
H_MSG_TRUE)
. Das
Funktionsverhalten für die beiden Fälle leere und keine
Eingaberegion lässt sich wie folgt kontrollieren:
keine Region:
set_system('no_object_result',<RegionResult>)
leere Region:
set_system('empty_region_result',<RegionResult>)
Andernfalls wird eine Fehlerbehandlung durchgeführt.
threshold,
regiongrowing,
connection,
union1,
watersheds,
class_ndim_norm
reduce_domain,
select_shape,
area_center,
connection
minkowski_add1,
minkowski_add2,
expand_region,
dilation1,
dilation2,
dilation_circle
gen_rectangle1,
gen_region_polygon_filled
Foundation