KlassenKlassenKlassenKlassen | | | | Operatoren

erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle (Operator)

Name

erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle — Ausführen einer Erosion mit einer Kreismaske.

Signatur

erosion_circle(Region : RegionErosion : Radius : )

Herror erosion_circle(const Hobject Region, Hobject* RegionErosion, double Radius)

Herror T_erosion_circle(const Hobject Region, Hobject* RegionErosion, const Htuple Radius)

Herror erosion_circle(Hobject Region, Hobject* RegionErosion, const HTuple& Radius)

HRegion HRegion::ErosionCircle(const HTuple& Radius) const

HRegionArray HRegionArray::ErosionCircle(const HTuple& Radius) const

void ErosionCircle(const HObject& Region, HObject* RegionErosion, const HTuple& Radius)

HRegion HRegion::ErosionCircle(const HTuple& Radius) const

HRegion HRegion::ErosionCircle(double Radius) const

void HOperatorSetX.ErosionCircle(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*RegionErosion, [in] VARIANT Radius)

IHRegionX* HRegionX.ErosionCircle([in] VARIANT Radius)

static void HOperatorSet.ErosionCircle(HObject region, out HObject regionErosion, HTuple radius)

HRegion HRegion.ErosionCircle(HTuple radius)

HRegion HRegion.ErosionCircle(double radius)

Beschreibung

erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle führt eine Minkowski-Subtraktion mit einer Kreismaske aus. Die Größe des Kreises, der als strukturieredes Element verwendet wird, ist durch RadiusRadiusRadiusRadiusRadiusradius angegeben.

Die erkennbare Wirkung dieser Funktion ist die Glättung der Regionenränder. Zusätzlich werden Regionen, die flächenmäßig kleiner sind als die Kreismaske eliminiert. Sinnvollerweise wird der RadiusRadiusRadiusRadiusRadiusradius auf Werte wie 3.5, 5.5 etc. gesetzt, um so Translationen der Region zu vermeiden. Bei ganzzahligen Radien hat der Kreis nämlich keinen ganzzahligen Schwerpunkt, der aber gerundet werden muss.

Parallelisierung

Parameter

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Regionen auf die der Erosion-Operator angewandt wird.

RegionErosionRegionErosionRegionErosionRegionErosionRegionErosionregionErosion (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Verkleinerte Regionen.

RadiusRadiusRadiusRadiusRadiusradius (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Radius der Kreismaske.

Defaultwert: 3.5

Wertevorschläge: 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 12.5, 15.5, 19.5, 25.5, 33.5, 45.5, 60.5, 110.5

Typischer Wertebereich: 0.5 ≤ Radius Radius Radius Radius Radius radius ≤ 511.5 (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 1.0

Beispiel (C++ (HALCON 5.0-10.0))

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"

main()
{
  cout << "Simulation of 'erosion_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Red   = after segmentation " << endl;
  cout << "Blue  = after erosion " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegion      circ   = HRegion::GenCircle (10, 10, 1.5);
  HRegionArray regs   = (img >= 128).Connection();
  HRegionArray minsub = regs.MinkowskiSub1 (circ, 1);

                         img.Display (w);      w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();
  w.SetColor ("blue");  minsub.Display (w);   w.Click ();

  return(0);
}

Beispiel (C)

my_erosion_circle(Hobject In, double Radius, Hobject *Out)
{
  Hobject Circle;
  gen_circle(&Circle,100.0,100.0,Radius);
  minkowski_sub1(In,Circle,Out,1);
  clear_obj(Circle);
}

Beispiel (C++ (HALCON 5.0-10.0))

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"

main()
{
  cout << "Simulation of 'erosion_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Red   = after segmentation " << endl;
  cout << "Blue  = after erosion " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegion      circ   = HRegion::GenCircle (10, 10, 1.5);
  HRegionArray regs   = (img >= 128).Connection();
  HRegionArray minsub = regs.MinkowskiSub1 (circ, 1);

                         img.Display (w);      w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();
  w.SetColor ("blue");  minsub.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"

main()
{
  cout << "Simulation of 'erosion_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Red   = after segmentation " << endl;
  cout << "Blue  = after erosion " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegion      circ   = HRegion::GenCircle (10, 10, 1.5);
  HRegionArray regs   = (img >= 128).Connection();
  HRegionArray minsub = regs.MinkowskiSub1 (circ, 1);

                         img.Display (w);      w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();
  w.SetColor ("blue");  minsub.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"

main()
{
  cout << "Simulation of 'erosion_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Red   = after segmentation " << endl;
  cout << "Blue  = after erosion " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegion      circ   = HRegion::GenCircle (10, 10, 1.5);
  HRegionArray regs   = (img >= 128).Connection();
  HRegionArray minsub = regs.MinkowskiSub1 (circ, 1);

                         img.Display (w);      w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();
  w.SetColor ("blue");  minsub.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"

main()
{
  cout << "Simulation of 'erosion_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Red   = after segmentation " << endl;
  cout << "Blue  = after erosion " << endl;

  HByteImage img("monkey");
  HWindow    w;

  HRegion      circ   = HRegion::GenCircle (10, 10, 1.5);
  HRegionArray regs   = (img >= 128).Connection();
  HRegionArray minsub = regs.MinkowskiSub1 (circ, 1);

                         img.Display (w);      w.Click ();
  w.SetColor ("red");   regs.Display (w);     w.Click ();
  w.SetColor ("blue");  minsub.Display (w);   w.Click ();

  return(0);
}

Komplexität

Sei F1 die Fläche einer Eingaberegion, dann ist die Laufzeitkomplexität für eine Region:

Ergebnis

Bei korrekter Parametrisierung liefert die Funktion erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle 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

thresholdthresholdThresholdthresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, watershedswatershedsWatershedswatershedsWatershedsWatersheds, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Nachfolger

connectionconnectionConnectionconnectionConnectionConnection, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter

Alternativen

minkowski_sub1minkowski_sub1MinkowskiSub1minkowski_sub1MinkowskiSub1MinkowskiSub1

Siehe auch

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle, closing_circleclosing_circleClosingCircleclosing_circleClosingCircleClosingCircle, opening_circleopening_circleOpeningCircleopening_circleOpeningCircleOpeningCircle

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren