select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProto (Operator)

Name

select_shape_protoselect_shape_protoSelectShapeProtoSelectShapeProto — 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)

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

Parameter

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHobject

Zu untersuchende Regionen.

PatternPatternPatternPatternpattern (input_object)  region(-array) objectHRegionHRegionHobject

Region, die mit RegionsRegionsRegionsRegionsregions verglichen wird.

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