Name
dilation_circledilation_circleDilationCircledilation_circleDilationCircleDilationCircle — Ausführen einer Dilatation mit einer Kreismaske.
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.
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Regionen auf die der Dilation-Operator angewandt wird.
Regionen mit aufgefüllten Lücken.
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
#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);
}
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);
}
#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);
}
#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);
}
#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);
}
#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);
}
Sei F1 die Fläche einer Eingaberegion, dann ist die
Laufzeitkomplexität für eine Region:
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:
-
keine Region:
set_system('no_object_result',<RegionResult>)
-
leere Region:
set_system('empty_region_result',<RegionResult>)
Andernfalls wird eine Fehlerbehandlung durchgeführt.
thresholdthresholdThresholdthresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionconnectionConnectionConnection,
union1union1Union1union1Union1Union1,
watershedswatershedsWatershedswatershedsWatershedsWatersheds,
class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm
reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain,
select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape,
area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter,
connectionconnectionConnectionconnectionConnectionConnection
minkowski_add1minkowski_add1MinkowskiAdd1minkowski_add1MinkowskiAdd1MinkowskiAdd1,
minkowski_add2minkowski_add2MinkowskiAdd2minkowski_add2MinkowskiAdd2MinkowskiAdd2,
expand_regionexpand_regionExpandRegionexpand_regionExpandRegionExpandRegion,
dilation1dilation1Dilation1dilation1Dilation1Dilation1,
dilation2dilation2Dilation2dilation2Dilation2Dilation2,
dilation_rectangle1dilation_rectangle1DilationRectangle1dilation_rectangle1DilationRectangle1DilationRectangle1
gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle,
erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle,
closing_circleclosing_circleClosingCircleclosing_circleClosingCircleClosingCircle,
opening_circleopening_circleOpeningCircleopening_circleOpeningCircleOpeningCircle
Foundation