Choose regions having a certain relation to each other.
The operator select_shape2 puts two regions in relation to each other. Every i-th region from Regions is compared to the combination of regions from Pattern. The limits (Min and Max) are indicated absolutely or in percent (0..100) depending on the feature. Possible values for Feature are:
'distance_dilate'The minimum distance in the maximum norm from the edge of Pattern to the edge of every region from Regions is determined (see min_distance1).
'distance_contour'The minimum Euclidean distance from the edge of Pattern to the edge of every region from Regions is determined. (see min_distance2).
'distance_center'The Euclidean distance from the center of Pattern to the center of every region from Regions is determined.
'covers'It is examined how well the region Pattern fits into the regions from Regions. If there is no shift so that Pattern is a subset of Regions the overlap is 0. If Pattern corresponds to the region after a corresponding shift the overlap is 100. Otherwise the area of the opening of Regions with Pattern is put into relation with the area of Regions (in percent).
'fits'It is examined whether Pattern can be shifted in such a way that it fits in Regions. If this is possible the corresponding region is copied from Regions. The parameters Min and Max have no meaning here.
Regions (input_object) |
region(-array) -> object |
Regions to be examined. |
Pattern (input_object) |
region(-array) -> object |
Region compared to Regions. |
SelectedRegions (output_object) |
region(-array) -> object |
Regions not fulfilling the condition. |
Feature (input_control) |
string(-array) -> string |
Shape features to be checked. | |
Default value: 'covers' | |
List of values: 'distance_center', 'distance_dilate', 'distance_contour', 'covers', 'fits' |
Min (input_control) |
number -> real / integer |
Lower border of feature. | |
Default value: 50.0 | |
Suggested values: 0.0, 1.0, 5.0, 10.0, 20.0, 30.0, 50.0, 60.0, 70.0, 80.0, 90.0, 95.0, 99.0, 100.0, 200.0, 400.0 | |
Range of values: 0.0 <= Min | |
Minimum increment: 0.001 | |
Recommended increment: 5.0 |
Max (input_control) |
number -> real / integer |
Upper border of the feature. | |
Default value: 100.0 | |
Suggested values: 0.0, 10.0, 20.0, 30.0, 50.0, 60.0, 70.0, 80.0, 90.0, 95.0, 99.0, 100.0, 200.0, 300.0, 400.0 | |
Range of values: 0.0 <= Max | |
Minimum increment: 0.001 | |
Recommended increment: 5.0 |
#include#include "HCPP.H" int main (int argc, char *argv[]) { if (argc < 2) { cout << "Usage: " << argv[0] << " " << endl; exit (1); } double rad = atof (argv[1]); HImage img ("affe"); HWindow w; img.Display (w); HRegion circ = HRegion::Circle (100, 100, rad); HRegionArray reg = img.Regiongrowing (3, 3, 5, 0); HRegionArray seg = reg.SelectShape2 (circ, "fits", 0, 0); w.SetColor ("red"); seg.Display (w); w.Click (); return(0); }
The operator select_shape2 returns the value TRUE if the input is not empty. The behavior in case of empty input (no input regions available) is set via the operator set_system(::'no_object_result',<Result>:). The behavior in case of empty region (the region is the empty set) is set via set_system(::'empty_region_result',<Result>:). If necessary an exception is raised.
connection, draw_region, circle, rectangle1, rectangle2, ellipse
select_grey__, shape_trans, reduce_domain, count_obj
opening, erosion1, min_distance1, min_distance2