select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProtoselect_shape_proto (Operator)

Name

select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProtoselect_shape_proto — Auswählen von Regionen, die in einer bestimmten Beziehung zueinander stehen.

Signatur

select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )

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)

def select_shape_proto(regions: HObject, pattern: HObject, feature: MaybeSequence[str], min: Union[int, float], max: Union[int, float]) -> HObject

Beschreibung

select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProtoSelectShapeProtoselect_shape_proto setzt zwei Regionen zueinander in Beziehung. Es wird jeweils die i-te Region aus RegionsRegionsRegionsRegionsregionsregions mit der Vereinigung der Regionen aus PatternPatternPatternPatternpatternpattern verglichen. Die Grenzen (MinMinMinMinminmin und MaxMaxMaxMaxmaxmax) werden je nach Merkmal absolut oder in Prozent (0..100) angegeben. Mögliche Werte für FeatureFeatureFeatureFeaturefeaturefeature sind:

'distance_dilate'"distance_dilate""distance_dilate""distance_dilate""distance_dilate""distance_dilate"

Der minimale Abstand in der Maximumsnorm vom Rand von PatternPatternPatternPatternpatternpattern zum Rand jeder Region aus RegionsRegionsRegionsRegionsregionsregions wird bestimmt (vgl. distance_rr_min_dildistance_rr_min_dilDistanceRrMinDilDistanceRrMinDilDistanceRrMinDildistance_rr_min_dil).

'distance_contour'"distance_contour""distance_contour""distance_contour""distance_contour""distance_contour"

Der minimale euklidsche Abstand vom Rand von PatternPatternPatternPatternpatternpattern zum Rand jeder Region aus RegionsRegionsRegionsRegionsregionsregions wird bestimmt. (vgl. distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMinDistanceRrMindistance_rr_min).

'distance_center'"distance_center""distance_center""distance_center""distance_center""distance_center"

Der euklidsche Abstand vom Schwerpunkt von PatternPatternPatternPatternpatternpattern zum Schwerpunkt jeder Region aus RegionsRegionsRegionsRegionsregionsregions wird bestimmt.

'covers'"covers""covers""covers""covers""covers"

Es wird geprüft wie gut die Region PatternPatternPatternPatternpatternpattern in die Regionen aus RegionsRegionsRegionsRegionsregionsregions passt. Wenn es keine Verschiebung gibt, sodass PatternPatternPatternPatternpatternpattern eine Teilmenge von RegionsRegionsRegionsRegionsregionsregions ist, so ist die Überdeckung 0. Wenn PatternPatternPatternPatternpatternpattern nach einer entsprechenden Verschiebung mit der Region übereinstimmt, ist die Überdeckung 100. Ansonsten wird die Fläche des Opening von RegionsRegionsRegionsRegionsregionsregions mit PatternPatternPatternPatternpatternpattern mit der Fläche von RegionsRegionsRegionsRegionsregionsregions ins Verhältnis gesetzt (in Prozent).

'fits'"fits""fits""fits""fits""fits"

Es wird getestet, ob PatternPatternPatternPatternpatternpattern so verschoben werden kann, dass es in RegionsRegionsRegionsRegionsregionsregions passt. Wenn dies möglich ist, wird die zugehörige Region aus RegionsRegionsRegionsRegionsregionsregions kopiert. Die Parameter MinMinMinMinminmin und MaxMaxMaxMaxmaxmax haben hier keine Bedeutung.

'overlaps_abs'"overlaps_abs""overlaps_abs""overlaps_abs""overlaps_abs""overlaps_abs"

Die Fläche der Schnittmenge von PatternPatternPatternPatternpatternpattern und jeder Region in RegionsRegionsRegionsRegionsregionsregions wird berechnet.

'overlaps_rel'"overlaps_rel""overlaps_rel""overlaps_rel""overlaps_rel""overlaps_rel"

Die Fläche der Schnittmenge von PatternPatternPatternPatternpatternpattern und jeder Region in RegionsRegionsRegionsRegionsregionsregions wird berechnet. Die relative Überlappung ergibt sich aus dem Verhältnis der Fläche der Schnittmenge und der Fläche der jeweiligen Region aus RegionsRegionsRegionsRegionsregionsregions (in Prozent).

Ausführungsinformationen

Parameter

RegionsRegionsRegionsRegionsregionsregions (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Zu untersuchende Regionen.

PatternPatternPatternPatternpatternpattern (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Region, die mit RegionsRegionsRegionsRegionsregionsregions verglichen wird.

SelectedRegionsSelectedRegionsSelectedRegionsSelectedRegionsselectedRegionsselected_regions (output_object)  region(-array) objectHRegionHObjectHRegionHobject *

Regionen, die die Bedingung erfüllen.

FeatureFeatureFeatureFeaturefeaturefeature (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Zu testende Formmerkmale.

Defaultwert: 'covers' "covers" "covers" "covers" "covers" "covers"

Werteliste: 'covers'"covers""covers""covers""covers""covers", 'distance_center'"distance_center""distance_center""distance_center""distance_center""distance_center", 'distance_contour'"distance_contour""distance_contour""distance_contour""distance_contour""distance_contour", 'distance_dilate'"distance_dilate""distance_dilate""distance_dilate""distance_dilate""distance_dilate", 'fits'"fits""fits""fits""fits""fits", 'overlaps_abs'"overlaps_abs""overlaps_abs""overlaps_abs""overlaps_abs""overlaps_abs", 'overlaps_rel'"overlaps_rel""overlaps_rel""overlaps_rel""overlaps_rel""overlaps_rel"

MinMinMinMinminmin (input_control)  number HTupleUnion[int, float]HTupleHtuple (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 min

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 5.0

MaxMaxMaxMaxmaxmax (input_control)  number HTupleUnion[int, float]HTupleHtuple (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 max

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 5.0

Beispiel (C++)

#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++)

#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++)

#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++)

#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_protoSelectShapeProtoSelectShapeProtoSelectShapeProtoselect_shape_proto 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>)set_system("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>)set_system("empty_region_result",<Result>) bestimmt. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

connectionconnectionConnectionConnectionConnectionconnection, draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region, gen_circlegen_circleGenCircleGenCircleGenCirclegen_circle, gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1gen_rectangle1, gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2gen_rectangle2, gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipsegen_ellipse

Nachfolger

select_grayselect_graySelectGraySelectGraySelectGrayselect_gray, shape_transshape_transShapeTransShapeTransShapeTransshape_trans, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, count_objcount_objCountObjCountObjCountObjcount_obj

Alternativen

select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape

Siehe auch

openingopeningOpeningOpeningOpeningopening, erosion1erosion1Erosion1Erosion1Erosion1erosion1, distance_rr_min_dildistance_rr_min_dilDistanceRrMinDilDistanceRrMinDilDistanceRrMinDildistance_rr_min_dil, distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMinDistanceRrMindistance_rr_min

Modul

Foundation