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_protoSelectShapeProtoSelectShapeProtoselect_shape_proto 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_dilDistanceRrMinDilDistanceRrMinDildistance_rr_min_dil).

'distance_contour'

Der minimale euklidsche Abstand vom Rand von PatternPatternPatternpatternpattern zum Rand jeder Region aus RegionsRegionsRegionsregionsregions wird bestimmt. (vgl. distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMindistance_rr_min).

'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

Parameter

RegionsRegionsRegionsregionsregions (input_object)  region(-array) objectHRegionHObjectHObjectHobject

Zu untersuchende Regionen.

PatternPatternPatternpatternpattern (input_object)  region(-array) objectHRegionHObjectHObjectHobject

Region, die mit RegionsRegionsRegionsregionsregions verglichen wird.

SelectedRegionsSelectedRegionsSelectedRegionsselectedRegionsselected_regions (output_object)  region(-array) objectHRegionHObjectHObjectHobject *

Regionen, die die Bedingung erfüllen.

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

Zu testende Formmerkmale.

Default: '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 HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Untere Grenze des Merkmals.

Default: 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

Wertebereich: 0.0 ≤ Min Min Min min min

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 5.0

MaxMaxMaxmaxmax (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Obere Grenze des Merkmals.

Default: 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

Wertebereich: 0.0 ≤ 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);
}

Ergebnis

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

Vorgänger

connectionconnectionConnectionConnectionconnection, draw_regiondraw_regionDrawRegionDrawRegiondraw_region, gen_circlegen_circleGenCircleGenCirclegen_circle, gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1gen_rectangle1, gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2gen_rectangle2, gen_ellipsegen_ellipseGenEllipseGenEllipsegen_ellipse

Nachfolger

select_grayselect_graySelectGraySelectGrayselect_gray, shape_transshape_transShapeTransShapeTransshape_trans, reduce_domainreduce_domainReduceDomainReduceDomainreduce_domain, count_objcount_objCountObjCountObjcount_obj

Alternativen

select_shapeselect_shapeSelectShapeSelectShapeselect_shape

Siehe auch

openingopeningOpeningOpeningopening, erosion1erosion1Erosion1Erosion1erosion1, distance_rr_min_dildistance_rr_min_dilDistanceRrMinDilDistanceRrMinDildistance_rr_min_dil, distance_rr_mindistance_rr_minDistanceRrMinDistanceRrMindistance_rr_min

Modul

Foundation