opening_seg opening_seg OpeningSeg OpeningSeg opening_seg (Operator)
Name
opening_seg opening_seg OpeningSeg OpeningSeg opening_seg — Trennen von sich überlappenden Regionen.
Warnung
opening_seg opening_seg OpeningSeg OpeningSeg OpeningSeg opening_seg ist veraltet und wird nur aus Gründen
der Rückwärtskompatibilität zur Verfügung gestellt.
Signatur
Beschreibung
Die opening_seg opening_seg OpeningSeg OpeningSeg OpeningSeg opening_seg -Operation ist als die
Hintereinanderschaltung von erosion1 erosion1 Erosion1 Erosion1 Erosion1 erosion1 ,
connection connection Connection Connection Connection connection und dilation1 dilation1 Dilation1 Dilation1 Dilation1 dilation1 definiert (siehe
Beispiel). Es wird dabei nur eine Iteration bei
erosion1 erosion1 Erosion1 Erosion1 Erosion1 erosion1 und dilation1 dilation1 Dilation1 Dilation1 Dilation1 dilation1 ausgeführt.
opening_seg opening_seg OpeningSeg OpeningSeg OpeningSeg opening_seg dient zum Trennen von sich überlappenden
Regionen, deren Überlappungsbereich kleiner als
StructElement StructElement StructElement StructElement structElement struct_element ist. Es ist zu beachten, dass sich die
Ergebnisregionen überlappen können ohne dabei zu verschmelzen
(siehe expand_region expand_region ExpandRegion ExpandRegion ExpandRegion expand_region ). opening_seg opening_seg OpeningSeg OpeningSeg OpeningSeg opening_seg verwendet als
Bezugspunkt den Schwerpunkt des strukturierenden Elementes.
Das strukturierende Element StructElement StructElement StructElement StructElement structElement struct_element kann mit
Operatoren wie gen_circle gen_circle GenCircle GenCircle GenCircle gen_circle , gen_rectangle1 gen_rectangle1 GenRectangle1 GenRectangle1 GenRectangle1 gen_rectangle1 ,
gen_rectangle2 gen_rectangle2 GenRectangle2 GenRectangle2 GenRectangle2 gen_rectangle2 , gen_ellipse gen_ellipse GenEllipse GenEllipse GenEllipse gen_ellipse ,
draw_region draw_region DrawRegion DrawRegion DrawRegion draw_region , gen_region_polygon gen_region_polygon GenRegionPolygon GenRegionPolygon GenRegionPolygon gen_region_polygon ,
gen_region_points gen_region_points GenRegionPoints GenRegionPoints GenRegionPoints gen_region_points , etc. erzeugt 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 region (input_object) region(-array) → object HRegion HObject HRegion Hobject
Regionen, die verarbeitet werden sollen.
StructElement StructElement StructElement StructElement structElement struct_element (input_object) region → object HRegion HObject HRegion Hobject
Strukturierendes Element (lageinvariant).
RegionOpening RegionOpening RegionOpening RegionOpening regionOpening region_opening (output_object) region-array → object HRegion HObject HRegion Hobject *
Das Ergebnis des Opening-Operators.
Beispiel (HDevelop)
* Simulation of opening_seg
* opening_seg(Region,StructElement,RegionOpening):
erosion1(Region,StructElement,H1,1)
connection(H1,H2)
dilation1(H2,StructElement,RegionOpening,1)
Beispiel (C)
/* Simulation of opening_seg */
my_opening_seg(Hobject Region, Hobject StructElement, Hobject *Opening)
{
Hobject H1,H2;
erosion1(Region,StructElement,&H1,1);
connection(H1,&H2);
dilation1(H2,StructElement,Opening,1);
}
/* separation of circular objects */
gen_random_regions(&Regions,"circle",8.5,10.5,0.0,0.0,0.0,0.0,400,512,512);
union1(Regions,&UnionReg);
gen_circle(&Mask,100,100,8.5);
opening_seg(UnionReg,Mask,&RegionsNew);
Beispiel (C++)
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
HWindow w;
HRegionArray regs = HRegionArray::GenRandomRegions("circle",8.5,10.5,
0,0,0,0,400,512,512);
HRegionArray ureg = regs.Union1();
HRegion crc = HRegion::GenCircle(100,100,8.5);
HRegionArray ops = ureg.OpeningSeg(crc);
w.SetColor("red"); regs.Display(w); w.Click();
w.SetColored(12); ops.Display(w); w.Click();
return(0);
}
Beispiel (HDevelop)
* Simulation of opening_seg
* opening_seg(Region,StructElement,RegionOpening):
erosion1(Region,StructElement,H1,1)
connection(H1,H2)
dilation1(H2,StructElement,RegionOpening,1)
Beispiel (HDevelop)
* Simulation of opening_seg
* opening_seg(Region,StructElement,RegionOpening):
erosion1(Region,StructElement,H1,1)
connection(H1,H2)
dilation1(H2,StructElement,RegionOpening,1)
Komplexität
Sei F1 die Fläche einer Eingaberegion und F2 die Fläche des
strukturierenden Elementes, dann ist die Laufzeitkomplexität für
ein Objekt:
Ergebnis
Bei korrekter Parametrisierung liefert die Funktion
opening_seg opening_seg OpeningSeg OpeningSeg OpeningSeg opening_seg 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>) set_system("no_object_result",<RegionResult>) SetSystem("no_object_result",<RegionResult>) SetSystem("no_object_result",<RegionResult>) SetSystem("no_object_result",<RegionResult>) set_system("no_object_result",<RegionResult>)
leere Region:
set_system('empty_region_result',<RegionResult>) set_system("empty_region_result",<RegionResult>) SetSystem("empty_region_result",<RegionResult>) SetSystem("empty_region_result",<RegionResult>) SetSystem("empty_region_result",<RegionResult>) set_system("empty_region_result",<RegionResult>)
Andernfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
threshold threshold Threshold Threshold Threshold threshold ,
regiongrowing regiongrowing Regiongrowing Regiongrowing Regiongrowing regiongrowing ,
connection connection Connection Connection Connection connection ,
union1 union1 Union1 Union1 Union1 union1 ,
watersheds watersheds Watersheds Watersheds Watersheds watersheds ,
class_ndim_norm class_ndim_norm ClassNdimNorm ClassNdimNorm ClassNdimNorm class_ndim_norm ,
gen_circle gen_circle GenCircle GenCircle GenCircle gen_circle ,
gen_ellipse gen_ellipse GenEllipse GenEllipse GenEllipse gen_ellipse ,
gen_rectangle1 gen_rectangle1 GenRectangle1 GenRectangle1 GenRectangle1 gen_rectangle1 ,
gen_rectangle2 gen_rectangle2 GenRectangle2 GenRectangle2 GenRectangle2 gen_rectangle2 ,
draw_region draw_region DrawRegion DrawRegion DrawRegion draw_region ,
gen_region_points gen_region_points GenRegionPoints GenRegionPoints GenRegionPoints gen_region_points ,
gen_region_polygon_filled gen_region_polygon_filled GenRegionPolygonFilled GenRegionPolygonFilled GenRegionPolygonFilled gen_region_polygon_filled
Nachfolger
expand_region expand_region ExpandRegion ExpandRegion ExpandRegion expand_region ,
reduce_domain reduce_domain ReduceDomain ReduceDomain ReduceDomain reduce_domain ,
select_shape select_shape SelectShape SelectShape SelectShape select_shape ,
area_center area_center AreaCenter AreaCenter AreaCenter area_center ,
connection connection Connection Connection Connection connection
Alternativen
erosion1 erosion1 Erosion1 Erosion1 Erosion1 erosion1 ,
connection connection Connection Connection Connection connection ,
dilation1 dilation1 Dilation1 Dilation1 Dilation1 dilation1
Modul
Foundation