select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProto (Operator)
Name
select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProto
— Auswählen von Regionen, die in einer bestimmten Beziehung zueinander stehen.
Signatur
Herror select_shape_proto(const Hobject Regions, const Hobject Pattern, Hobject* SelectedRegions, const char* Feature, double Min, double Max)
Herror T_select_shape_proto(const Hobject Regions, const Hobject Pattern, Hobject* SelectedRegions, const Htuple Feature, const Htuple Min, const Htuple Max)
void SelectShapeProto(const HObject& Regions, const HObject& Pattern, HObject* SelectedRegions, const HTuple& Feature, const HTuple& Min, const HTuple& Max)
HRegion HRegion::SelectShapeProto(const HRegion& Pattern, const HTuple& Feature, const HTuple& Min, const HTuple& Max) const
HRegion HRegion::SelectShapeProto(const HRegion& Pattern, const HString& Feature, double Min, double Max) const
HRegion HRegion::SelectShapeProto(const HRegion& Pattern, const char* Feature, double Min, double Max) const
HRegion HRegion::SelectShapeProto(const HRegion& Pattern, const wchar_t* Feature, double Min, double Max) const
(Nur Windows)
static void HOperatorSet.SelectShapeProto(HObject regions, HObject pattern, out HObject selectedRegions, HTuple feature, HTuple min, HTuple max)
HRegion HRegion.SelectShapeProto(HRegion pattern, HTuple feature, HTuple min, HTuple max)
HRegion HRegion.SelectShapeProto(HRegion pattern, string feature, double min, double max)
Beschreibung
select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProtoSelectShapeProto
setzt zwei Regionen zueinander in
Beziehung. Es wird jeweils die i-te Region aus RegionsRegionsRegionsRegionsregions
mit
der Vereinigung der Regionen aus PatternPatternPatternPatternpattern
verglichen. Die
Grenzen (MinMinMinMinmin
und MaxMaxMaxMaxmax
) werden je nach Merkmal
absolut oder in Prozent (0..100) angegeben. Mögliche Werte für
FeatureFeatureFeatureFeaturefeature
sind:
- 'distance_dilate'
Der minimale Abstand in der Maximumsnorm vom Rand von
PatternPatternPatternPatternpattern
zum Rand jeder Region aus RegionsRegionsRegionsRegionsregions
wird
bestimmt (vgl. distance_rr_min_dildistance_rr_min_dilDistanceRrMinDilDistanceRrMinDilDistanceRrMinDil
).
- 'distance_contour'
Der minimale euklidsche Abstand vom Rand von PatternPatternPatternPatternpattern
zum
Rand jeder Region aus RegionsRegionsRegionsRegionsregions
wird bestimmt.
(vgl. distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMinDistanceRrMin
).
- 'distance_center'
Der euklidsche Abstand vom Schwerpunkt von PatternPatternPatternPatternpattern
zum
Schwerpunkt jeder Region aus RegionsRegionsRegionsRegionsregions
wird bestimmt.
- 'covers'
Es wird geprüft wie gut die Region PatternPatternPatternPatternpattern
in die Regionen
aus RegionsRegionsRegionsRegionsregions
passt. Wenn es keine Verschiebung gibt, sodass
PatternPatternPatternPatternpattern
eine Teilmenge von RegionsRegionsRegionsRegionsregions
ist, so ist die
Überdeckung 0. Wenn PatternPatternPatternPatternpattern
nach einer entsprechenden
Verschiebung mit der Region übereinstimmt, ist die Überdeckung
100. Ansonsten wird die Fläche des Opening von RegionsRegionsRegionsRegionsregions
mit PatternPatternPatternPatternpattern
mit der Fläche von RegionsRegionsRegionsRegionsregions
ins
Verhältnis gesetzt (in Prozent).
- 'fits'
Es wird getestet, ob PatternPatternPatternPatternpattern
so verschoben werden kann,
dass es in RegionsRegionsRegionsRegionsregions
passt. Wenn dies möglich ist, wird die
zugehörige Region aus RegionsRegionsRegionsRegionsregions
kopiert. Die Parameter
MinMinMinMinmin
und MaxMaxMaxMaxmax
haben hier keine Bedeutung.
- 'overlaps_abs'
Die Fläche der Schnittmenge von PatternPatternPatternPatternpattern
und jeder Region
in RegionsRegionsRegionsRegionsregions
wird berechnet.
- 'overlaps_rel'
Die Fläche der Schnittmenge von PatternPatternPatternPatternpattern
und jeder Region
in RegionsRegionsRegionsRegionsregions
wird berechnet. Die relative Überlappung
ergibt sich aus dem Verhältnis der Fläche der Schnittmenge und der
Fläche der jeweiligen Region aus RegionsRegionsRegionsRegionsregions
(in Prozent).
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
RegionsRegionsRegionsRegionsregions
(input_object) region(-array) →
objectHRegionHRegionHobject
Zu untersuchende Regionen.
SelectedRegionsSelectedRegionsSelectedRegionsSelectedRegionsselectedRegions
(output_object) region(-array) →
objectHRegionHRegionHobject *
Regionen, die die Bedingung erfüllen.
FeatureFeatureFeatureFeaturefeature
(input_control) string(-array) →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Zu testende Formmerkmale.
Defaultwert:
'covers'
"covers"
"covers"
"covers"
"covers"
Werteliste: 'covers'"covers""covers""covers""covers", 'distance_center'"distance_center""distance_center""distance_center""distance_center", 'distance_contour'"distance_contour""distance_contour""distance_contour""distance_contour", 'distance_dilate'"distance_dilate""distance_dilate""distance_dilate""distance_dilate", 'fits'"fits""fits""fits""fits", 'overlaps_abs'"overlaps_abs""overlaps_abs""overlaps_abs""overlaps_abs", 'overlaps_rel'"overlaps_rel""overlaps_rel""overlaps_rel""overlaps_rel"
MinMinMinMinmin
(input_control) number →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Untere Grenze des Merkmals.
Defaultwert: 50.0
Wertevorschläge: 0.0, 1.0, 5.0, 10.0, 20.0, 30.0, 50.0, 60.0, 70.0, 80.0, 90.0, 95.0, 99.0, 100.0, 200.0, 400.0
Typischer Wertebereich: 0.0
≤
Min
Min
Min
Min
min
Minimale Schrittweite: 0.001
Empfohlene Schrittweite: 5.0
MaxMaxMaxMaxmax
(input_control) number →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Obere Grenze des Merkmals.
Defaultwert: 100.0
Wertevorschläge: 0.0, 10.0, 20.0, 30.0, 50.0, 60.0, 70.0, 80.0, 90.0, 95.0, 99.0, 100.0, 200.0, 300.0, 400.0
Typischer Wertebereich: 0.0
≤
Max
Max
Max
Max
max
Minimale Schrittweite: 0.001
Empfohlene Schrittweite: 5.0
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
int main (int argc, char *argv[])
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << " <radius of circle>" << endl;
exit (1);
}
double rad = atof (argv[1]);
HImage img ("monkey");
HWindow w;
img.Display (w);
HRegion circ = HRegion::GenCircle (100, 100, rad);
HRegionArray reg = img.Regiongrowing (3, 3, 5, 0);
HRegionArray seg = reg.SelectShapeProto (circ, "fits", 0, 0);
w.SetColor ("red");
seg.Display (w);
w.Click ();
return(0);
}
Beispiel (C)
regiongrowing(Image,&Seg,3,3,5.0,0);
gen_circle(&C,100.0,100.0,MinRadius);
select_shape_proto(Seg,C,"fits",0.0,0.0);
Beispiel (C++ (HALCON 5.0-10.0))
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
int main (int argc, char *argv[])
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << " <radius of circle>" << endl;
exit (1);
}
double rad = atof (argv[1]);
HImage img ("monkey");
HWindow w;
img.Display (w);
HRegion circ = HRegion::GenCircle (100, 100, rad);
HRegionArray reg = img.Regiongrowing (3, 3, 5, 0);
HRegionArray seg = reg.SelectShapeProto (circ, "fits", 0, 0);
w.SetColor ("red");
seg.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"
using namespace Halcon;
int main (int argc, char *argv[])
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << " <radius of circle>" << endl;
exit (1);
}
double rad = atof (argv[1]);
HImage img ("monkey");
HWindow w;
img.Display (w);
HRegion circ = HRegion::GenCircle (100, 100, rad);
HRegionArray reg = img.Regiongrowing (3, 3, 5, 0);
HRegionArray seg = reg.SelectShapeProto (circ, "fits", 0, 0);
w.SetColor ("red");
seg.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"
using namespace Halcon;
int main (int argc, char *argv[])
{
if (argc < 2)
{
cout << "Usage: " << argv[0] << " <radius of circle>" << endl;
exit (1);
}
double rad = atof (argv[1]);
HImage img ("monkey");
HWindow w;
img.Display (w);
HRegion circ = HRegion::GenCircle (100, 100, rad);
HRegionArray reg = img.Regiongrowing (3, 3, 5, 0);
HRegionArray seg = reg.SelectShapeProto (circ, "fits", 0, 0);
w.SetColor ("red");
seg.Display (w);
w.Click ();
return(0);
}
Ergebnis
select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProtoSelectShapeProto
liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe
nicht leer ist. Das Verhalten bei leerer Eingabe (keine
Eingaberegionen vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)
festlegen. Das
Verhalten bei einer leeren Region (Region ist die leere Menge) wird
mit set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)
bestimmt.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
connectionconnectionConnectionConnectionConnection
,
draw_regiondraw_regionDrawRegionDrawRegionDrawRegion
,
gen_circlegen_circleGenCircleGenCircleGenCircle
,
gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1
,
gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2
,
gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipse
Nachfolger
select_grayselect_graySelectGraySelectGraySelectGray
,
shape_transshape_transShapeTransShapeTransShapeTrans
,
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain
,
count_objcount_objCountObjCountObjCountObj
Alternativen
select_shapeselect_shapeSelectShapeSelectShapeSelectShape
Siehe auch
openingopeningOpeningOpeningOpening
,
erosion1erosion1Erosion1Erosion1Erosion1
,
distance_rr_min_dildistance_rr_min_dilDistanceRrMinDilDistanceRrMinDilDistanceRrMinDil
,
distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMinDistanceRrMin
Modul
Foundation