boundaryboundaryBoundaryBoundaryboundary (Operator)

Name

boundaryboundaryBoundaryBoundaryboundary — Reduzieren einer Region auf deren Rand.

Signatur

boundary(Region : RegionBorder : BoundaryType : )

Herror boundary(const Hobject Region, Hobject* RegionBorder, const char* BoundaryType)

Herror T_boundary(const Hobject Region, Hobject* RegionBorder, const Htuple BoundaryType)

void Boundary(const HObject& Region, HObject* RegionBorder, const HTuple& BoundaryType)

HRegion HRegion::Boundary(const HString& BoundaryType) const

HRegion HRegion::Boundary(const char* BoundaryType) const

HRegion HRegion::Boundary(const wchar_t* BoundaryType) const   (Nur Windows)

static void HOperatorSet.Boundary(HObject region, out HObject regionBorder, HTuple boundaryType)

HRegion HRegion.Boundary(string boundaryType)

def boundary(region: HObject, boundary_type: str) -> HObject

Beschreibung

boundaryboundaryBoundaryBoundaryBoundaryboundary berechnet für jede Eingaberegion in RegionRegionRegionRegionregionregion die Kontur und gibt diese in RegionBorderRegionBorderRegionBorderRegionBorderregionBorderregion_border zurück. Der Parameter BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type bestimmt die Art der Randerzeugung.

Die Berechnung der Kontur wird mit Hilfe morphologischer Operationen durchgeführt. Die Ergebnisregionen bestehen nur aus einem minimalen Rand der Eingaberegionen. Dabei hängt die Position des Randes vom Parameter BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type ab, für den die folgenden Werte möglich sind:

Ausführungsinformationen

Parameter

RegionRegionRegionRegionregionregion (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Regionen, die auf den Rand reduziert werden.

RegionBorderRegionBorderRegionBorderRegionBorderregionBorderregion_border (output_object)  region(-array) objectHRegionHObjectHRegionHobject *

Ergebnisregionen.

BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryTypeboundary_type (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

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"

Beispiel (C++ (HALCON 5.0-10.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);
}

Beispiel (C)

/* 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);
}

Beispiel (C++ (HALCON 5.0-10.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);
}

Beispiel (C++ (HALCON 5.0-10.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);
}

Beispiel (C++ (HALCON 5.0-10.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);
}

Komplexität

Sei A die Fläche einer Eingaberegion, dann ist die Laufzeitkomplexität für ein Objekt:

Ergebnis

Bei korrekter Parametrisierung liefert die Funktion boundaryboundaryBoundaryBoundaryBoundaryboundary den Wert TRUE. Das Funktionsverhalten für die beiden Fälle leere und keine Eingaberegion lässt sich wie folgt kontrollieren:

Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

thresholdthresholdThresholdThresholdThresholdthreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing, connectionconnectionConnectionConnectionConnectionconnection, union1union1Union1Union1Union1union1, watershedswatershedsWatershedsWatershedsWatershedswatersheds, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNormclass_ndim_norm

Nachfolger

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape, area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center, connectionconnectionConnectionConnectionConnectionconnection

Alternativen

dilation_circledilation_circleDilationCircleDilationCircleDilationCircledilation_circle, erosion_circleerosion_circleErosionCircleErosionCircleErosionCircleerosion_circle, differencedifferenceDifferenceDifferenceDifferencedifference

Siehe auch

fill_upfill_upFillUpFillUpFillUpfill_up

Modul

Foundation