Separate overlapping regions.
The ::opening_seg operation is defined as a sequence of the following operators: ::erosion1, ::connection and ::dilation1 (see example). Only one iteration is done in ::erosion1 and ::dilation1.
::opening_seg serves to separate overlapping regions whose area of overlap is smaller than StructElement. It should be noted that the resulting regions can overlap without actually merging (see ::expand_region). ::opening_seg uses the center of gravity as the reference point of the structuring element.
Structuring elements (StructElement) can be generated with operators such as ::gen_circle, ::gen_rectangle1, ::gen_rectangle2, ::gen_ellipse, ::draw_region, ::gen_region_polygon, ::gen_region_points, etc.
|
Region (input_object) |
region(-array) -> Hobject: HRegion(Array) |
| Regions to be opened. | |
|
StructElement (input_object) |
region -> Hobject: HRegion |
| Structuring element (position-invariant). | |
|
RegionOpening (output_object) |
region-array -> Hobject * : HRegionArray |
| Opened regions. | |
#include <iostream.h>
#include "HalconCpp.h"
main()
{
HWindow w;
HRegionArray regs = HRegionArray::GenRandomRegions("circle",8.5,10.5,
0,0,0,0,400,512,512);
HRegionArray ureg = regs.Union1();
HRegion crc = HRegion::GenCircle(100,100,8.5);
HRegionArray ops = ureg.OpeningSeg(crc);
w.SetColor("red"); regs.Display(w); w.Click();
w.SetColored(12); ops.Display(w); w.Click();
return(0);
}
Let F1 be the area of the input region, and F2 be the area of the structuring element. Then the runtime complexity for one region is:
O(sqrt(F1) * sqrt(F2) * sqrt(sqrt(F1)) .
::opening_seg returns H_MSG_TRUE if all parameters are correct. The behavior in case of empty or no input region can be set via:
a) no region: set_system('no_object_result',<RegionResult>)
b) empty region: set_system('empty_region_result',<RegionResult>)
Otherwise, an exception is raised.
::threshold, ::regiongrowing, ::connection, ::union1, ::watersheds, ::class_ndim_norm, ::gen_circle, ::gen_ellipse, ::gen_rectangle1, ::gen_rectangle2, ::draw_region, ::gen_region_points, ::gen_struct_elements, ::gen_region_polygon_filled
::expand_region, ::reduce_domain, ::select_shape, ::area_center, ::connection
::erosion1, ::connection, ::dilation1
Morphology