connectionconnectionConnectionConnectionconnection (Operator)
Name
connectionconnectionConnectionConnectionconnection
— Compute connected components of a region.
Signature
def connection(region: HObject) -> HObject
Description
connectionconnectionConnectionConnectionConnectionconnection
determines the connected components of the
input regions given in RegionRegionRegionRegionregionregion
. The neighborhood used for
this can be set via 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>)
.
The default is 8-neighborhood, which is useful for determining the
connected components of the foreground. The maximum number of
connected components that is returned by connectionconnectionConnectionConnectionConnectionconnection
can be
set via 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>)
. The default
value of 0 causes all connected components to be returned.
The inverse operator of connectionconnectionConnectionConnectionConnectionconnection
is union1union1Union1Union1Union1union1
.
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on internal data level.
Parameters
RegionRegionRegionRegionregionregion
(input_object) region(-array) →
objectHRegionHObjectHRegionHobject
Input region.
ConnectedRegionsConnectedRegionsConnectedRegionsConnectedRegionsconnectedRegionsconnected_regions
(output_object) region-array →
objectHRegionHObjectHRegionHobject *
Connected components.
Example (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)
Example (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);
Example (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);
}
Example (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)
Example (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)
Complexity
Let F be the area of the input region and N be the number of
generated connected components. Then the runtime complexity is
O(sqrt(F) * sqrt(N)).
Result
connectionconnectionConnectionConnectionConnectionconnection
always returns the value 2 (H_MSG_TRUE). The
behavior in case of empty input (no regions given) can be set via
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>)
and the behavior in case of an empty input region via
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>)
.
If necessary, an exception is raised.
Possible Predecessors
auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThresholdauto_threshold
,
thresholdthresholdThresholdThresholdThresholdthreshold
,
dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold
,
erosion1erosion1Erosion1Erosion1Erosion1erosion1
Possible Successors
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
Alternatives
background_segbackground_segBackgroundSegBackgroundSegBackgroundSegbackground_seg
See also
set_systemset_systemSetSystemSetSystemSetSystemset_system
,
union1union1Union1Union1Union1union1
Module
Foundation