boundaryboundaryBoundaryBoundary (Operator)

Name

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

Beschreibung

boundaryboundaryBoundaryBoundaryBoundary berechnet für jede Eingaberegion in RegionRegionRegionRegionregion die Kontur und gibt diese in RegionBorderRegionBorderRegionBorderRegionBorderregionBorder zurück. Der Parameter BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType 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 BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType ab, für den die folgenden Werte möglich sind:

Ausführungsinformationen

Parameter

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHobject

Regionen, die auf den Rand reduziert werden.

RegionBorderRegionBorderRegionBorderRegionBorderregionBorder (output_object)  region(-array) objectHRegionHRegionHobject *

Ergebnisregionen.

BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art der Regionenrandes.

Defaultwert: 'inner' "inner" "inner" "inner" "inner"

Werteliste: 'inner'"inner""inner""inner""inner", 'inner_filled'"inner_filled""inner_filled""inner_filled""inner_filled", '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 boundaryboundaryBoundaryBoundaryBoundary den Wert 2 (H_MSG_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

thresholdthresholdThresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, connectionconnectionConnectionConnectionConnection, union1union1Union1Union1Union1, watershedswatershedsWatershedsWatershedsWatersheds, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm

Nachfolger

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, area_centerarea_centerAreaCenterAreaCenterAreaCenter, connectionconnectionConnectionConnectionConnection

Alternativen

dilation_circledilation_circleDilationCircleDilationCircleDilationCircle, erosion_circleerosion_circleErosionCircleErosionCircleErosionCircle, differencedifferenceDifferenceDifferenceDifference

Siehe auch

fill_upfill_upFillUpFillUpFillUp

Modul

Foundation