closing closing Closing Closing (Operator)
Name
closing closing Closing Closing
— Schließen von Lücken.
Signatur
Beschreibung
Die Hintereinanderschaltung von Dilatation und Minkowski-Subtraktion
definiert die morphologische Grundfunktion closing closing Closing Closing Closing
.
closing closing Closing Closing Closing
dient zum Glätten von Regionenrändern.
Löcher in Regionen die kleiner als StructElement StructElement StructElement StructElement structElement
sind,
werden geschlossen. Bei allen closing closing Closing Closing Closing
-Varianten
verschmelzen die einzelnen Regionen nicht. closing closing Closing Closing Closing
verwendet intern als Bezugspunkt des strukturierenden Elementes
StructElement StructElement StructElement StructElement structElement
den Schwerpunkt. Die Position von
StructElement StructElement StructElement StructElement structElement
ist ohne Bedeutung, da die
Closing-Operation translationsinvariant bzgl.
StructElement StructElement StructElement StructElement structElement
ist.
StructElement StructElement StructElement StructElement structElement
kann mit Operatoren wie gen_circle gen_circle GenCircle GenCircle GenCircle
,
gen_rectangle1 gen_rectangle1 GenRectangle1 GenRectangle1 GenRectangle1
, gen_rectangle2 gen_rectangle2 GenRectangle2 GenRectangle2 GenRectangle2
, gen_ellipse gen_ellipse GenEllipse GenEllipse GenEllipse
,
draw_region draw_region DrawRegion DrawRegion DrawRegion
, gen_region_polygon gen_region_polygon GenRegionPolygon GenRegionPolygon GenRegionPolygon
,
gen_region_points gen_region_points GenRegionPoints GenRegionPoints GenRegionPoints
etc. erzeugt werden.
Achtung
closing closing Closing Closing Closing
wird für jede Region einzeln angewandt. Sollen
Lücken zwischen den Regionen geschlossen werden, dann muss vorher
ein union1 union1 Union1 Union1 Union1
oder union2 union2 Union2 Union2 Union2
ausgeführt werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Parameter
Region Region Region Region region
(input_object) region(-array) →
object HRegion HRegion Hobject
Regionen auf die die Closing-Operation angewandt wird.
StructElement StructElement StructElement StructElement structElement
(input_object) region →
object HRegion HRegion Hobject
Strukturierendes Element (lageinvariant).
RegionClosing RegionClosing RegionClosing RegionClosing regionClosing
(output_object) region(-array) →
object HRegion HRegion Hobject *
Regionen mit aufgefüllten Lücken.
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
cout << "Reproduction of 'closing ()' using " << endl;
cout << "'dilation()' and 'minkowski_sub1()'" << endl;
HByteImage img("monkey");
HWindow w;
HRegion circ = HRegion::GenCircle (10, 10, 1.5);
HRegionArray regs = (img >= 128).Connection();
HRegionArray dilreg = regs.Dilation1 (circ, 1);
HRegionArray minsub = dilreg.MinkowskiSub1 (circ, 1);
img.Display (w); w.Click ();
w.SetColor ("red"); regs.Display (w); w.Click ();
w.SetColor ("green"); dilreg.Display (w); w.Click ();
w.SetColor ("blue"); minsub.Display (w); w.Click ();
return(0);
}
Beispiel (C)
my_closing(Hobject In, Hobject StructElement, Hobject *Out)
{
Hobject tmp;
dilation1(In,StructElement,&tmp,1);
minkowski_sub1(tmp,StructElement,Out,1);
}
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
cout << "Reproduction of 'closing ()' using " << endl;
cout << "'dilation()' and 'minkowski_sub1()'" << endl;
HByteImage img("monkey");
HWindow w;
HRegion circ = HRegion::GenCircle (10, 10, 1.5);
HRegionArray regs = (img >= 128).Connection();
HRegionArray dilreg = regs.Dilation1 (circ, 1);
HRegionArray minsub = dilreg.MinkowskiSub1 (circ, 1);
img.Display (w); w.Click ();
w.SetColor ("red"); regs.Display (w); w.Click ();
w.SetColor ("green"); dilreg.Display (w); w.Click ();
w.SetColor ("blue"); minsub.Display (w); w.Click ();
return(0);
}
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
cout << "Reproduction of 'closing ()' using " << endl;
cout << "'dilation()' and 'minkowski_sub1()'" << endl;
HByteImage img("monkey");
HWindow w;
HRegion circ = HRegion::GenCircle (10, 10, 1.5);
HRegionArray regs = (img >= 128).Connection();
HRegionArray dilreg = regs.Dilation1 (circ, 1);
HRegionArray minsub = dilreg.MinkowskiSub1 (circ, 1);
img.Display (w); w.Click ();
w.SetColor ("red"); regs.Display (w); w.Click ();
w.SetColor ("green"); dilreg.Display (w); w.Click ();
w.SetColor ("blue"); minsub.Display (w); w.Click ();
return(0);
}
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
cout << "Reproduction of 'closing ()' using " << endl;
cout << "'dilation()' and 'minkowski_sub1()'" << endl;
HByteImage img("monkey");
HWindow w;
HRegion circ = HRegion::GenCircle (10, 10, 1.5);
HRegionArray regs = (img >= 128).Connection();
HRegionArray dilreg = regs.Dilation1 (circ, 1);
HRegionArray minsub = dilreg.MinkowskiSub1 (circ, 1);
img.Display (w); w.Click ();
w.SetColor ("red"); regs.Display (w); w.Click ();
w.SetColor ("green"); dilreg.Display (w); w.Click ();
w.SetColor ("blue"); minsub.Display (w); w.Click ();
return(0);
}
Komplexität
Sei F1 die Fläche einer Eingaberegion und F2 die Fläche des
strukturierenden Elementes, dann ist die Laufzeitkomplexität für
eine Region:
Ergebnis
Bei korrekter Parametrisierung liefert die Funktion
closing closing Closing Closing Closing
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.
Vorgänger
threshold threshold Threshold Threshold Threshold
,
regiongrowing regiongrowing Regiongrowing Regiongrowing Regiongrowing
,
connection connection Connection Connection Connection
,
union1 union1 Union1 Union1 Union1
,
watersheds watersheds Watersheds Watersheds Watersheds
,
class_ndim_norm class_ndim_norm ClassNdimNorm ClassNdimNorm ClassNdimNorm
,
gen_circle gen_circle GenCircle GenCircle GenCircle
,
gen_ellipse gen_ellipse GenEllipse GenEllipse GenEllipse
,
gen_rectangle1 gen_rectangle1 GenRectangle1 GenRectangle1 GenRectangle1
,
gen_rectangle2 gen_rectangle2 GenRectangle2 GenRectangle2 GenRectangle2
,
draw_region draw_region DrawRegion DrawRegion DrawRegion
,
gen_region_points gen_region_points GenRegionPoints GenRegionPoints GenRegionPoints
,
gen_region_polygon_filled gen_region_polygon_filled GenRegionPolygonFilled GenRegionPolygonFilled GenRegionPolygonFilled
Nachfolger
reduce_domain reduce_domain ReduceDomain ReduceDomain ReduceDomain
,
select_shape select_shape SelectShape SelectShape SelectShape
,
area_center area_center AreaCenter AreaCenter AreaCenter
,
connection connection Connection Connection Connection
Alternativen
closing_circle closing_circle ClosingCircle ClosingCircle ClosingCircle
Siehe auch
dilation1 dilation1 Dilation1 Dilation1 Dilation1
,
erosion1 erosion1 Erosion1 Erosion1 Erosion1
,
opening opening Opening Opening Opening
,
minkowski_sub1 minkowski_sub1 MinkowskiSub1 MinkowskiSub1 MinkowskiSub1
Modul
Foundation