Name
boundaryboundaryBoundaryboundaryBoundaryBoundary — Reduzieren einer Region auf deren Rand.
boundaryboundaryBoundaryboundaryBoundaryBoundary berechnet die Kontur einer Region mit Hilfe
morphologischer Operationen. Durch den Parameter
BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType wird zwischen drei Arten der Randerzeugung
unterschieden:
'inner', 'inner_filled' und 'outer'.
boundaryboundaryBoundaryboundaryBoundaryBoundary berechnet für jede Region die zugehörige
Kontur. Die Ergebnisregionen bestehen nur aus einem minimalen Rand
der Eingaberegionen. Bei dem Parameterwert 'inner' liegt die Kontur
innerhalb der Eingaberegionen, bei 'outer' außerhalb. Im Modus
'inner_filled' werden zusätzlich Hohlflächen unterdrückt.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Regionen, die auf den Rand reduziert werden.
Art der Regionenrandes.
Defaultwert:
'inner'
"inner"
"inner"
"inner"
"inner"
"inner"
Werteliste: 'inner'"inner""inner""inner""inner""inner", 'inner_filled'"inner_filled""inner_filled""inner_filled""inner_filled""inner_filled", 'outer'"outer""outer""outer""outer""outer"
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
/* Intersections of two circles: */
gen_circle(&Circle1,200.0,100.0,100.5);
gen_circle(&Circle2,200.0,150.0,100.5);
boundary(Circle1,&Margin1,"inner");
boundary(Circle2,&Margin2,"inner");
intersection(Margin1,Margin2,&Intersections);
connection(Intersections,&Single);
T_area_center(Single,NULL,&Rows,&Columns);
/* simulation of Mode 'inner' */
void inner(Hobject Region, Hobject *Border)
{
Hobject Smaller;
erosion_circle(Region,&Smaller,1.5);
difference(Region,Smaller,Border);
clear_obj(Smaller);
}
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
#include "HalconCpp.h"
using namespace Halcon;
main()
{
HWindow w;
HRegion circ1 = HRegion::GenCircle (20, 10, 10.5);
circ1.Display (w);
w.Click ();
HRegion marg1 = circ1.Boundary ("inner");
w.SetColor ("red");
marg1.Display (w);
w.Click ();
return(0);
}
Sei F die Fläche einer Eingaberegion, dann ist die
Laufzeitkomplexität für ein Objekt:
Bei korrekter Parametrisierung liefert die Funktion
boundaryboundaryBoundaryboundaryBoundaryBoundary 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.
thresholdthresholdThresholdthresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionconnectionConnectionConnection,
union1union1Union1union1Union1Union1,
watershedswatershedsWatershedswatershedsWatershedsWatersheds,
class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm
reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain,
select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape,
area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter,
connectionconnectionConnectionconnectionConnectionConnection
dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle,
erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle,
differencedifferenceDifferencedifferenceDifferenceDifference
fill_upfill_upFillUpfill_upFillUpFillUp
Foundation