KlassenKlassenKlassenKlassen | | | | Operatoren

dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle (Operator)

Name

dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle — Ausführen einer Dilatation mit einer Kreismaske.

Signatur

dilation_circle(Region : RegionDilation : Radius : )

Herror dilation_circle(const Hobject Region, Hobject* RegionDilation, double Radius)

Herror T_dilation_circle(const Hobject Region, Hobject* RegionDilation, const Htuple Radius)

Herror dilation_circle(Hobject Region, Hobject* RegionDilation, const HTuple& Radius)

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

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

void DilationCircle(const HObject& Region, HObject* RegionDilation, const HTuple& Radius)

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

HRegion HRegion::DilationCircle(double Radius) const

void HOperatorSetX.DilationCircle(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*RegionDilation, [in] VARIANT Radius)

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

static void HOperatorSet.DilationCircle(HObject region, out HObject regionDilation, HTuple radius)

HRegion HRegion.DilationCircle(HTuple radius)

HRegion HRegion.DilationCircle(double radius)

Beschreibung

dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle führt eine Minkowski-Addition mit einer Kreismaske aus. Da die Kreismaske symmetrisch ist, ist dies identisch mit einer Dilatation. Die Größe des Kreises, der als strukturieredes Element verwendet wird, ist durch RadiusRadiusRadiusRadiusRadiusradius angegeben.

Die Wirkung dieser Funktion ist das Vergrößern der Region, die Glättung der Ränder, sowie das Verschließen von Löchern innerhalb der Region, die kleiner sind als die Kreismaske. 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.

Achtung

dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle wird für jede Region einzeln angewandt. Sollen Lücken zwischen den Regionen geschlossen werden, dann muss vorher ein union1union1Union1union1Union1Union1 oder union2union2Union2union2Union2Union2 ausgeführt werden.

Parallelisierung

Parameter

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Regionen auf die der Dilation-Operator angewandt wird.

RegionDilationRegionDilationRegionDilationRegionDilationRegionDilationregionDilation (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Regionen mit aufgefüllten Lücken.

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 << "Reproduction of 'dilation_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = before dilation " << endl;

  HByteImage img("monkey");
  HWindow    w;

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

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

  return(0);
}

Beispiel (C)

my_dilation_circle(Hobject In, double Radius, Hobject *Out)
{
  Hobject Circle;
  gen_circle(&Circle,100.0,100.0,Radius);
  minkowski_add1(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 << "Reproduction of 'dilation_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = before dilation " << endl;

  HByteImage img("monkey");
  HWindow    w;

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

                        img.Display (w);      w.Click ();
  w.SetColor ("blue");  minadd.Display (w);   w.Click ();
  w.SetColor ("red");   regs.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 << "Reproduction of 'dilation_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = before dilation " << endl;

  HByteImage img("monkey");
  HWindow    w;

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

                        img.Display (w);      w.Click ();
  w.SetColor ("blue");  minadd.Display (w);   w.Click ();
  w.SetColor ("red");   regs.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 << "Reproduction of 'dilation_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = before dilation " << endl;

  HByteImage img("monkey");
  HWindow    w;

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

                        img.Display (w);      w.Click ();
  w.SetColor ("blue");  minadd.Display (w);   w.Click ();
  w.SetColor ("red");   regs.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 << "Reproduction of 'dilation_circle ()'" << endl;
  cout << "First = original image " << endl;
  cout << "Blue  = after dilation " << endl;
  cout << "Red   = before dilation " << endl;

  HByteImage img("monkey");
  HWindow    w;

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

                        img.Display (w);      w.Click ();
  w.SetColor ("blue");  minadd.Display (w);   w.Click ();
  w.SetColor ("red");   regs.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 dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle 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, connectionconnectionConnectionconnectionConnectionConnection, union1union1Union1union1Union1Union1, watershedswatershedsWatershedswatershedsWatershedsWatersheds, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm

Nachfolger

reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter, connectionconnectionConnectionconnectionConnectionConnection

Alternativen

minkowski_add1minkowski_add1MinkowskiAdd1minkowski_add1MinkowskiAdd1MinkowskiAdd1, minkowski_add2minkowski_add2MinkowskiAdd2minkowski_add2MinkowskiAdd2MinkowskiAdd2, expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion, dilation1dilation1Dilation1dilation1Dilation1Dilation1, dilation2dilation2Dilation2dilation2Dilation2Dilation2, dilation_rectangle1dilation_rectangle1DilationRectangle1dilation_rectangle1DilationRectangle1DilationRectangle1

Siehe auch

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle, closing_circleclosing_circleClosingCircleclosing_circleClosingCircleClosingCircle, opening_circleopening_circleOpeningCircleopening_circleOpeningCircleOpeningCircle

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren