erosion_circle erosion_circle ErosionCircle ErosionCircle (Operator)
Name
erosion_circle erosion_circle ErosionCircle ErosionCircle
— Ausführen einer Erosion mit einer Kreismaske.
Signatur
Beschreibung
erosion_circle erosion_circle ErosionCircle ErosionCircle ErosionCircle
führt eine Minkowski-Subtraktion mit
einer Kreismaske aus. Die Größe des Kreises, der als
strukturieredes Element verwendet wird, ist durch Radius Radius Radius Radius radius
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 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.
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 Erosion-Operator angewandt wird.
RegionErosion RegionErosion RegionErosion RegionErosion regionErosion
(output_object) region(-array) →
object HRegion HRegion Hobject *
Verkleinerte Regionen.
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 << "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);
}
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_circle erosion_circle ErosionCircle ErosionCircle ErosionCircle
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
,
watersheds watersheds Watersheds Watersheds Watersheds
,
class_ndim_norm class_ndim_norm ClassNdimNorm ClassNdimNorm ClassNdimNorm
Nachfolger
connection connection Connection Connection Connection
,
reduce_domain reduce_domain ReduceDomain ReduceDomain ReduceDomain
,
select_shape select_shape SelectShape SelectShape SelectShape
,
area_center area_center AreaCenter AreaCenter AreaCenter
Alternativen
minkowski_sub1 minkowski_sub1 MinkowskiSub1 MinkowskiSub1 MinkowskiSub1
Siehe auch
gen_circle gen_circle GenCircle GenCircle GenCircle
,
dilation_circle dilation_circle DilationCircle DilationCircle DilationCircle
,
closing_circle closing_circle ClosingCircle ClosingCircle ClosingCircle
,
opening_circle opening_circle OpeningCircle OpeningCircle OpeningCircle
Modul
Foundation