dilation_circle dilation_circle DilationCircle DilationCircle (Operator)
Name
dilation_circle dilation_circle DilationCircle DilationCircle
— Ausführen einer Dilatation mit einer Kreismaske.
Signatur
Beschreibung
dilation_circle dilation_circle DilationCircle DilationCircle DilationCircle
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 Radius Radius Radius Radius radius
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 Radius Radius Radius Radius radius
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_circle dilation_circle DilationCircle DilationCircle DilationCircle
wird für jede Region einzeln angewandt.
Sollen Lücken zwischen den Regionen geschlossen werden, dann muss
vorher ein union1 union1 Union1 Union1 Union1
oder union2 union2 Union2 Union2 Union2
ausgeführt
werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Parameter
Region Region Region Region region
(input_object) region(-array) →
object HRegion HRegion Hobject
Regionen auf die der Dilation-Operator angewandt wird.
RegionDilation RegionDilation RegionDilation RegionDilation regionDilation
(output_object) region(-array) →
object HRegion HRegion Hobject *
Regionen mit aufgefüllten Lücken.
Radius Radius Radius Radius radius
(input_control) real →
HTuple HTuple Htuple (real / integer) (double / int / long) (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
≤
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);
}
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_circle dilation_circle DilationCircle DilationCircle DilationCircle
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.
Vorgänger
threshold threshold Threshold Threshold Threshold
,
regiongrowing regiongrowing Regiongrowing Regiongrowing Regiongrowing
,
connection connection Connection Connection Connection
,
union1 union1 Union1 Union1 Union1
,
watersheds watersheds Watersheds Watersheds Watersheds
,
class_ndim_norm class_ndim_norm ClassNdimNorm ClassNdimNorm ClassNdimNorm
Nachfolger
reduce_domain reduce_domain ReduceDomain ReduceDomain ReduceDomain
,
select_shape select_shape SelectShape SelectShape SelectShape
,
area_center area_center AreaCenter AreaCenter AreaCenter
,
connection connection Connection Connection Connection
Alternativen
minkowski_add1 minkowski_add1 MinkowskiAdd1 MinkowskiAdd1 MinkowskiAdd1
,
minkowski_add2 minkowski_add2 MinkowskiAdd2 MinkowskiAdd2 MinkowskiAdd2
,
expand_region expand_region ExpandRegion ExpandRegion ExpandRegion
,
dilation1 dilation1 Dilation1 Dilation1 Dilation1
,
dilation2 dilation2 Dilation2 Dilation2 Dilation2
,
dilation_rectangle1 dilation_rectangle1 DilationRectangle1 DilationRectangle1 DilationRectangle1
Siehe auch
gen_circle gen_circle GenCircle GenCircle GenCircle
,
erosion_circle erosion_circle ErosionCircle ErosionCircle ErosionCircle
,
closing_circle closing_circle ClosingCircle ClosingCircle ClosingCircle
,
opening_circle opening_circle OpeningCircle OpeningCircle OpeningCircle
Modul
Foundation