boundaryboundaryBoundaryBoundary (Operator)

Name

boundaryboundaryBoundaryBoundary — Reduce a region to its boundary.

Signature

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   (Windows only)

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

HRegion HRegion.Boundary(string boundaryType)

Description

boundaryboundaryBoundaryBoundaryBoundary computes the boundary of a region by using morphological operations. The parameter BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType determines the type of boundary to compute:

'inner', 'inner_filled' and 'outer'.

boundaryboundaryBoundaryBoundaryBoundary computes the contour of each input region. The resulting regions consist only of the minimal border of the input regions. If BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType is set to 'inner', the contour lies within the original region, if it is set to 'outer', it is one pixel outside of the original region. If BoundaryTypeBoundaryTypeBoundaryTypeBoundaryTypeboundaryType is set to 'inner_filled', holes in the interior of the input region are suppressed.

Execution Information

Parameters

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHobject

Regions for which the boundary is to be computed.

RegionBorderRegionBorderRegionBorderRegionBorderregionBorder (output_object)  region(-array) objectHRegionHRegionHobject *

Resulting boundaries.

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

Boundary type.

Default value: 'inner' "inner" "inner" "inner" "inner"

List of values: 'inner'"inner""inner""inner""inner", 'inner_filled'"inner_filled""inner_filled""inner_filled""inner_filled", 'outer'"outer""outer""outer""outer"

Example (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);
}

Example (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);
}

Example (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);
}

Example (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);
}

Example (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);
}

Complexity

Let F be the area of the input region. Then the runtime complexity for one region is

Result

boundaryboundaryBoundaryBoundaryBoundary returns 2 (H_MSG_TRUE) if all parameters are correct. The behavior in case of empty or no input region can be set via:

Otherwise, an exception is raised.

Possible Predecessors

thresholdthresholdThresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, connectionconnectionConnectionConnectionConnection, union1union1Union1Union1Union1, watershedswatershedsWatershedsWatershedsWatersheds, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm

Possible Successors

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, area_centerarea_centerAreaCenterAreaCenterAreaCenter, connectionconnectionConnectionConnectionConnection

Alternatives

dilation_circledilation_circleDilationCircleDilationCircleDilationCircle, erosion_circleerosion_circleErosionCircleErosionCircleErosionCircle, differencedifferenceDifferenceDifferenceDifference

See also

fill_upfill_upFillUpFillUpFillUp

Module

Foundation