connectionconnectionConnectionConnectionconnection (Operator)

Name

connectionconnectionConnectionConnectionconnection — Berechnen von zusammenhängenden Regionen.

Signatur

connection(Region : ConnectedRegions : : )

Herror connection(const Hobject Region, Hobject* ConnectedRegions)

Herror T_connection(const Hobject Region, Hobject* ConnectedRegions)

void Connection(const HObject& Region, HObject* ConnectedRegions)

HRegion HRegion::Connection() const

static void HOperatorSet.Connection(HObject region, out HObject connectedRegions)

HRegion HRegion.Connection()

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

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