connectionconnectionConnectionConnectionconnection (Operator)
Name
connectionconnectionConnectionConnectionconnection — Berechnen von zusammenhängenden Regionen.
Signatur
def connection(region: HObject) -> HObject
Beschreibung
connectionconnectionConnectionConnectionConnectionconnection bestimmt die Zusammenhangskomponenten der
Regionen in RegionRegionRegionRegionregionregion, zerlegt also die Regionen in
zusammenhängende Bereiche. Die Nachbarschaft wird mit
set_system('neighborhood',<4/8>)set_system("neighborhood",<4/8>)SetSystem("neighborhood",<4/8>)SetSystem("neighborhood",<4/8>)SetSystem("neighborhood",<4/8>)set_system("neighborhood",<4/8>) eingestellt.
Voreingestellt ist die 8-ter Nachbarschaft, die für Vordergrund
sinnvoll eingesetzt werden kann. Die maximale Anzahl von
Zusammenhangskomponenten, die connectionconnectionConnectionConnectionConnectionconnection zurückliefert,
kann mittels set_system('max_connection',<Num>)set_system("max_connection",<Num>)SetSystem("max_connection",<Num>)SetSystem("max_connection",<Num>)SetSystem("max_connection",<Num>)set_system("max_connection",<Num>) festgelegt
werden. Die Voreinstellung von 0 bewirkt, dass alle
Zusammenhangskomponenten zurückliefert werden. Die Umkehrung von
connectionconnectionConnectionConnectionConnectionconnection für eine zusammenhängende Region ist
union1union1Union1Union1Union1union1.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
Parameter
RegionRegionRegionRegionregionregion (input_object) region(-array) → objectHRegionHObjectHRegionHobject
Zu zerlegende Region.
ConnectedRegionsConnectedRegionsConnectedRegionsConnectedRegionsconnectedRegionsconnected_regions (output_object) region-array → objectHRegionHObjectHRegionHobject *
Zusammenhängende Regionen.
Beispiel (HDevelop)
read_image(Image,'clip')
dev_set_colored(12)
threshold(Image,Dark,0,150)
count_obj(Dark,NumThresholded)
dev_display (Dark)
connection(Dark,ConnectedRegions)
count_obj(ConnectedRegions,NumConnected)
dev_display (ConnectedRegions)
Beispiel (C)
read_image(&Image,"monkey");
set_colored(WindowHandle,12);
threshold(Image,&Light,150.0,255.0);
count_obj(Light,&Number1);
printf("Number of regions after threshold = %d\n",Number1);
disp_region(Light,WindowHandle);
connection(Light,&Many);
count_obj(Many,&Number2);
printf("Number of regions after threshold = %d\n",Number2);
disp_region(Many,WindowHandle);
Beispiel (C++)
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
using namespace Halcon;
int main (int argc, char *argv[])
{
HImage image (argv[1]);
HWindow w;
w.SetColored(12);
HRegion Light = image >= 128;
Light.Display(w);
HRegionArray Many = Light.Connection();
cout << "Number of regions after threshold = " << Many.Num();
Many.Display(w);
}
Beispiel (HDevelop)
read_image(Image,'clip')
dev_set_colored(12)
threshold(Image,Dark,0,150)
count_obj(Dark,NumThresholded)
dev_display (Dark)
connection(Dark,ConnectedRegions)
count_obj(ConnectedRegions,NumConnected)
dev_display (ConnectedRegions)
Beispiel (HDevelop)
read_image(Image,'clip')
dev_set_colored(12)
threshold(Image,Dark,0,150)
count_obj(Dark,NumThresholded)
dev_display (Dark)
connection(Dark,ConnectedRegions)
count_obj(ConnectedRegions,NumConnected)
dev_display (ConnectedRegions)
Komplexität
Sei F die Fläche der Eingaberegion und N die Anzahl der daraus
erzeugten Zusammenhangskomponenten, dann ist die
Laufzeitkomplexität: O(sqrt(F) * sqrt(N)).
Ergebnis
connectionconnectionConnectionConnectionConnectionconnection liefert normalerweise den Wert 2 (H_MSG_TRUE). Das
Verhalten bei leerer Eingabe (keine Eingaberegionen vorhanden)
lässt sich mittels
set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>),
das bei leerer Region mit
set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThresholdauto_threshold,
thresholdthresholdThresholdThresholdThresholdthreshold,
dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold,
erosion1erosion1Erosion1Erosion1Erosion1erosion1
Nachfolger
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape,
select_grayselect_graySelectGraySelectGraySelectGrayselect_gray,
shape_transshape_transShapeTransShapeTransShapeTransshape_trans,
set_coloredset_coloredSetColoredSetColoredSetColoredset_colored,
dilation1dilation1Dilation1Dilation1Dilation1dilation1,
count_objcount_objCountObjCountObjCountObjcount_obj,
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain,
add_channelsadd_channelsAddChannelsAddChannelsAddChannelsadd_channels
Alternativen
background_segbackground_segBackgroundSegBackgroundSegBackgroundSegbackground_seg
Siehe auch
set_systemset_systemSetSystemSetSystemSetSystemset_system,
union1union1Union1Union1Union1union1
Modul
Foundation