select_shapeselect_shapeSelectShapeSelectShapeselect_shape (Operator)

Name

select_shapeselect_shapeSelectShapeSelectShapeselect_shape — Choose regions with the aid of shape features.

Signature

select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )

Herror select_shape(const Hobject Regions, Hobject* SelectedRegions, const char* Features, const char* Operation, double Min, double Max)

Herror T_select_shape(const Hobject Regions, Hobject* SelectedRegions, const Htuple Features, const Htuple Operation, const Htuple Min, const Htuple Max)

void SelectShape(const HObject& Regions, HObject* SelectedRegions, const HTuple& Features, const HTuple& Operation, const HTuple& Min, const HTuple& Max)

HRegion HRegion::SelectShape(const HTuple& Features, const HString& Operation, const HTuple& Min, const HTuple& Max) const

HRegion HRegion::SelectShape(const HString& Features, const HString& Operation, double Min, double Max) const

HRegion HRegion::SelectShape(const char* Features, const char* Operation, double Min, double Max) const

HRegion HRegion::SelectShape(const wchar_t* Features, const wchar_t* Operation, double Min, double Max) const   ( Windows only)

static void HOperatorSet.SelectShape(HObject regions, out HObject selectedRegions, HTuple features, HTuple operation, HTuple min, HTuple max)

HRegion HRegion.SelectShape(HTuple features, string operation, HTuple min, HTuple max)

HRegion HRegion.SelectShape(string features, string operation, double min, double max)

def select_shape(regions: HObject, features: MaybeSequence[str], operation: str, min: MaybeSequence[Union[int, float, str]], max: MaybeSequence[Union[int, float, str]]) -> HObject

Description

The operator select_shapeselect_shapeSelectShapeSelectShapeselect_shape chooses regions according to shape. For each input region from RegionsRegionsRegionsregionsregions the indicated features (FeaturesFeaturesFeaturesfeaturesfeatures) are calculated. If each (OperationOperationOperationoperationoperation = 'and'"and""and""and""and") or at least one (OperationOperationOperationoperationoperation = 'or'"or""or""or""or") of the calculated features is within the default limits (MinMinMinminmin,MaxMaxMaxmaxmax) the region is adapted into the output (duplicated). The parameters MinMinMinminmin and MaxMaxMaxmaxmax can be set to 'min'"min""min""min""min" or 'max'"max""max""max""max" in order to leave bottom and top limits, respectively, open.

Condition:

For an illustration of these features, please refer to the documentation of this chapter (Regions / Features).

Possible values for FeaturesFeaturesFeaturesfeaturesfeatures:

'area':

Area of the object

'row':

Row index of the center

'column':

Column index of the center

'width':

Width of the region (parallel to the coordinate axes; see height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioheight_width_ratio)

'height':

Height of the region (parallel to the coordinate axes; see height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioheight_width_ratio)

'ratio':

Ratio of the height and width of the region (parallel to the coordinate axes; see height_width_ratioheight_width_ratioHeightWidthRatioHeightWidthRatioheight_width_ratio)

'row1':

Row index of upper left corner

'column1':

Column index of upper left corner

'row2':

Row index of lower right corner

'column2':

Column index of lower right corner

'circularity':

Circularity (see circularitycircularityCircularityCircularitycircularity)

'compactness':

Compactness (see compactnesscompactnessCompactnessCompactnesscompactness)

'contlength':

Total length of contour (see operator contlengthcontlengthContlengthContlengthcontlength)

'convexity':

Convexity (see convexityconvexityConvexityConvexityconvexity)

'rectangularity':

Rectangularity (see rectangularityrectangularityRectangularityRectangularityrectangularity)

'ra':

Main radius of the equivalent ellipse (see elliptic_axiselliptic_axisEllipticAxisEllipticAxiselliptic_axis)

'rb':

Secondary radius of the equivalent ellipse (see elliptic_axiselliptic_axisEllipticAxisEllipticAxiselliptic_axis)

'phi':

Orientation of the equivalent ellipse (see elliptic_axiselliptic_axisEllipticAxisEllipticAxiselliptic_axis)

'anisometry:'

Anisometry (see eccentricityeccentricityEccentricityEccentricityeccentricity)

'bulkiness:'

Bulkiness (see operator eccentricityeccentricityEccentricityEccentricityeccentricity)

'struct_factor:'

Structure Factor (see operator eccentricityeccentricityEccentricityEccentricityeccentricity)

'outer_radius':

Radius of smallest surrounding circle (see smallest_circlesmallest_circleSmallestCircleSmallestCirclesmallest_circle)

'inner_radius':

Radius of largest inner circle (see inner_circleinner_circleInnerCircleInnerCircleinner_circle)

'inner_width':

Width of the largest axis-parallel rectangle that fits into the region (see inner_rectangle1inner_rectangle1InnerRectangle1InnerRectangle1inner_rectangle1)

'inner_height':

Height of the largest axis-parallel rectangle that fits into the region (see inner_rectangle1inner_rectangle1InnerRectangle1InnerRectangle1inner_rectangle1)

'dist_mean':

Mean distance from the region border to the center (see operator roundnessroundnessRoundnessRoundnessroundness)

'dist_deviation:'

Deviation of the distance from the region border from the center (see operator roundnessroundnessRoundnessRoundnessroundness)

'roundness':

Roundness (see operator roundnessroundnessRoundnessRoundnessroundness)

'num_sides':

Number of polygon sides (see operator roundnessroundnessRoundnessRoundnessroundness)

'connect_num':

Number of connection components (see operator connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesconnect_and_holes)

'holes_num':

Number of holes (see operator connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesconnect_and_holes)

'area_holes':

Area of the holes of the object (see operator area_holesarea_holesAreaHolesAreaHolesarea_holes)

'max_diameter':

Maximum diameter of the region (see operator diameter_regiondiameter_regionDiameterRegionDiameterRegiondiameter_region)

'orientation':

Orientation of the region (see operator orientation_regionorientation_regionOrientationRegionOrientationRegionorientation_region)

'euler_number':

Euler number (see operator euler_numbereuler_numberEulerNumberEulerNumbereuler_number)

'rect2_phi':

Orientation of the smallest surrounding rectangle (see operator smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2smallest_rectangle2)

'rect2_len1':

Half the length of the smallest surrounding rectangle (see operator smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2smallest_rectangle2)

'rect2_len2':

Half the width of the smallest surrounding rectangle (see operator smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2smallest_rectangle2)

'moments_m11':

Geometric moments of the region (see operator moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd)

'moments_m20':

Geometric moments of the region (see operator moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd)

'moments_m02':

Geometric moments of the region (see operator moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd)

'moments_ia':

Geometric moments of the region (see operator moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd)

'moments_ib':

Geometric moments of the region (see operator moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd)

'moments_m11_invar':

Geometric moments of the region (see operator moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvarmoments_region_2nd_invar)

'moments_m20_invar':

Geometric moments of the region (see operator moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvarmoments_region_2nd_invar)

'moments_m02_invar':

Geometric moments of the region (see operator moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvarmoments_region_2nd_invar)

'moments_phi1':

Geometric moments of the region (see operator moments_region_2nd_rel_invarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarmoments_region_2nd_rel_invar)

'moments_phi2':

Geometric moments of the region (see operator moments_region_2nd_rel_invarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarmoments_region_2nd_rel_invar)

'moments_m21':

Geometric moments of the region (see operator moments_region_3rdmoments_region_3rdMomentsRegion3rdMomentsRegion3rdmoments_region_3rd)

'moments_m12':

Geometric moments of the region (see operator moments_region_3rdmoments_region_3rdMomentsRegion3rdMomentsRegion3rdmoments_region_3rd)

'moments_m03':

Geometric moments of the region (see operator moments_region_3rdmoments_region_3rdMomentsRegion3rdMomentsRegion3rdmoments_region_3rd)

'moments_m30':

Geometric moments of the region (see operator moments_region_3rdmoments_region_3rdMomentsRegion3rdMomentsRegion3rdmoments_region_3rd)

'moments_m21_invar':

Geometric moments of the region (see operator moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar)

'moments_m12_invar':

Geometric moments of the region (see operator moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar)

'moments_m03_invar':

Geometric moments of the region (see operator moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar)

'moments_m30_invar':

Geometric moments of the region (see operator moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar)

'moments_i1':

Geometric moments of the region (see operator moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralmoments_region_central)

'moments_i2':

Geometric moments of the region (see operator moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralmoments_region_central)

'moments_i3':

Geometric moments of the region (see operator moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralmoments_region_central)

'moments_i4':

Geometric moments of the region (see operator moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralmoments_region_central)

'moments_psi1':

Geometric moments of the region (see operator moments_region_central_invarmoments_region_central_invarMomentsRegionCentralInvarMomentsRegionCentralInvarmoments_region_central_invar)

'moments_psi2':

Geometric moments of the region (see operator moments_region_central_invarmoments_region_central_invarMomentsRegionCentralInvarMomentsRegionCentralInvarmoments_region_central_invar)

'moments_psi3':

Geometric moments of the region (see operator moments_region_central_invarmoments_region_central_invarMomentsRegionCentralInvarMomentsRegionCentralInvarmoments_region_central_invar)

'moments_psi4':

Geometric moments of the region (see operator moments_region_central_invarmoments_region_central_invarMomentsRegionCentralInvarMomentsRegionCentralInvarmoments_region_central_invar)

If only one feature (FeaturesFeaturesFeaturesfeaturesfeatures) is used the value of OperationOperationOperationoperationoperation is meaningless. Several features are processed in the sequence in which they are entered.

Execution Information

Parameters

RegionsRegionsRegionsregionsregions (input_object)  region-array objectHRegionHObjectHObjectHobject

Regions to be examined.

SelectedRegionsSelectedRegionsSelectedRegionsselectedRegionsselected_regions (output_object)  region-array objectHRegionHObjectHObjectHobject *

Regions fulfilling the condition.

FeaturesFeaturesFeaturesfeaturesfeatures (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Shape features to be checked.

Default: 'area' "area" "area" "area" "area"

List of values: 'anisometry'"anisometry""anisometry""anisometry""anisometry", 'area'"area""area""area""area", 'area_holes'"area_holes""area_holes""area_holes""area_holes", 'bulkiness'"bulkiness""bulkiness""bulkiness""bulkiness", 'circularity'"circularity""circularity""circularity""circularity", 'column'"column""column""column""column", 'column1'"column1""column1""column1""column1", 'column2'"column2""column2""column2""column2", 'compactness'"compactness""compactness""compactness""compactness", 'connect_num'"connect_num""connect_num""connect_num""connect_num", 'contlength'"contlength""contlength""contlength""contlength", 'convexity'"convexity""convexity""convexity""convexity", 'dist_deviation'"dist_deviation""dist_deviation""dist_deviation""dist_deviation", 'dist_mean'"dist_mean""dist_mean""dist_mean""dist_mean", 'euler_number'"euler_number""euler_number""euler_number""euler_number", 'height'"height""height""height""height", 'holes_num'"holes_num""holes_num""holes_num""holes_num", 'inner_height'"inner_height""inner_height""inner_height""inner_height", 'inner_radius'"inner_radius""inner_radius""inner_radius""inner_radius", 'inner_width'"inner_width""inner_width""inner_width""inner_width", 'max_diameter'"max_diameter""max_diameter""max_diameter""max_diameter", 'moments_i1'"moments_i1""moments_i1""moments_i1""moments_i1", 'moments_i2'"moments_i2""moments_i2""moments_i2""moments_i2", 'moments_i3'"moments_i3""moments_i3""moments_i3""moments_i3", 'moments_i4'"moments_i4""moments_i4""moments_i4""moments_i4", 'moments_ia'"moments_ia""moments_ia""moments_ia""moments_ia", 'moments_ib'"moments_ib""moments_ib""moments_ib""moments_ib", 'moments_m02'"moments_m02""moments_m02""moments_m02""moments_m02", 'moments_m02_invar'"moments_m02_invar""moments_m02_invar""moments_m02_invar""moments_m02_invar", 'moments_m03'"moments_m03""moments_m03""moments_m03""moments_m03", 'moments_m03_invar'"moments_m03_invar""moments_m03_invar""moments_m03_invar""moments_m03_invar", 'moments_m11'"moments_m11""moments_m11""moments_m11""moments_m11", 'moments_m11_invar'"moments_m11_invar""moments_m11_invar""moments_m11_invar""moments_m11_invar", 'moments_m12'"moments_m12""moments_m12""moments_m12""moments_m12", 'moments_m12_invar'"moments_m12_invar""moments_m12_invar""moments_m12_invar""moments_m12_invar", 'moments_m20'"moments_m20""moments_m20""moments_m20""moments_m20", 'moments_m20_invar'"moments_m20_invar""moments_m20_invar""moments_m20_invar""moments_m20_invar", 'moments_m21'"moments_m21""moments_m21""moments_m21""moments_m21", 'moments_m21_invar'"moments_m21_invar""moments_m21_invar""moments_m21_invar""moments_m21_invar", 'moments_m30'"moments_m30""moments_m30""moments_m30""moments_m30", 'moments_m30_invar'"moments_m30_invar""moments_m30_invar""moments_m30_invar""moments_m30_invar", 'moments_phi1'"moments_phi1""moments_phi1""moments_phi1""moments_phi1", 'moments_phi2'"moments_phi2""moments_phi2""moments_phi2""moments_phi2", 'moments_psi1'"moments_psi1""moments_psi1""moments_psi1""moments_psi1", 'moments_psi2'"moments_psi2""moments_psi2""moments_psi2""moments_psi2", 'moments_psi3'"moments_psi3""moments_psi3""moments_psi3""moments_psi3", 'moments_psi4'"moments_psi4""moments_psi4""moments_psi4""moments_psi4", 'num_sides'"num_sides""num_sides""num_sides""num_sides", 'orientation'"orientation""orientation""orientation""orientation", 'outer_radius'"outer_radius""outer_radius""outer_radius""outer_radius", 'phi'"phi""phi""phi""phi", 'ra'"ra""ra""ra""ra", 'ratio'"ratio""ratio""ratio""ratio", 'rb'"rb""rb""rb""rb", 'rect2_len1'"rect2_len1""rect2_len1""rect2_len1""rect2_len1", 'rect2_len2'"rect2_len2""rect2_len2""rect2_len2""rect2_len2", 'rect2_phi'"rect2_phi""rect2_phi""rect2_phi""rect2_phi", 'rectangularity'"rectangularity""rectangularity""rectangularity""rectangularity", 'roundness'"roundness""roundness""roundness""roundness", 'row'"row""row""row""row", 'row1'"row1""row1""row1""row1", 'row2'"row2""row2""row2""row2", 'struct_factor'"struct_factor""struct_factor""struct_factor""struct_factor", 'width'"width""width""width""width"

OperationOperationOperationoperationoperation (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Linkage type of the individual features.

Default: 'and' "and" "and" "and" "and"

List of values: 'and'"and""and""and""and", 'or'"or""or""or""or"

MinMinMinminmin (input_control)  real(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Lower limits of the features or 'min'.

Default: 150.0

Value range: 0.0 ≤ Min Min Min min min ≤ 99999.0

Minimum increment: 0.001

Recommended increment: 1.0

MaxMaxMaxmaxmax (input_control)  real(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Upper limits of the features or 'max'.

Default: 99999.0

Value range: 0.0 ≤ Max Max Max max max ≤ 99999.0

Minimum increment: 0.001

Recommended increment: 1.0

Restriction: Max >= Min

Example (HDevelop)

* Where are the eyes of the Mandrill?
read_image(Image,'monkey')
threshold(Image,Region,128,255)
connection(Region,ConnectedRegions)
select_shape(ConnectedRegions,Eyes,['area','max_diameter'],\
             'and',[500,30.0],[1000,50.0])
dev_display(Eyes)

Example (C)

/* Where are the eyes of the Mandrill? */
read_image(&Image,"monkey");
threshold(Image,&Region,128.0,255.0);
connection(Region,&ConnectedRegions);
select_shape(ConnectedRegions,&SelectedRegions,"area","and",500.0,1000.0);
select_shape(SelectedRegions,&Eyes,"max_diameter","and",30.0,50.0);
disp_region(Eyes,WindowHandle);

Example (HDevelop)

* Where are the eyes of the Mandrill?
read_image(Image,'monkey')
threshold(Image,Region,128,255)
connection(Region,ConnectedRegions)
select_shape(ConnectedRegions,Eyes,['area','max_diameter'],\
             'and',[500,30.0],[1000,50.0])
dev_display(Eyes)

Example (HDevelop)

* Where are the eyes of the Mandrill?
read_image(Image,'monkey')
threshold(Image,Region,128,255)
connection(Region,ConnectedRegions)
select_shape(ConnectedRegions,Eyes,['area','max_diameter'],\
             'and',[500,30.0],[1000,50.0])
dev_display(Eyes)

Result

The operator select_shapeselect_shapeSelectShapeSelectShapeselect_shape returns the value 2 ( H_MSG_TRUE) if the input is not empty. The behavior in case of empty input (no input objects available) is set via the operator set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)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>)set_system("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

thresholdthresholdThresholdThresholdthreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingregiongrowing, connectionconnectionConnectionConnectionconnection, runlength_featuresrunlength_featuresRunlengthFeaturesRunlengthFeaturesrunlength_features

Possible Successors

select_grayselect_graySelectGraySelectGrayselect_gray, shape_transshape_transShapeTransShapeTransshape_trans, reduce_domainreduce_domainReduceDomainReduceDomainreduce_domain, count_objcount_objCountObjCountObjcount_obj

Alternatives

select_shape_stdselect_shape_stdSelectShapeStdSelectShapeStdselect_shape_std

See also

area_centerarea_centerAreaCenterAreaCenterarea_center, circularitycircularityCircularityCircularitycircularity, compactnesscompactnessCompactnessCompactnesscompactness, contlengthcontlengthContlengthContlengthcontlength, convexityconvexityConvexityConvexityconvexity, rectangularityrectangularityRectangularityRectangularityrectangularity, elliptic_axiselliptic_axisEllipticAxisEllipticAxiselliptic_axis, eccentricityeccentricityEccentricityEccentricityeccentricity, inner_circleinner_circleInnerCircleInnerCircleinner_circle, smallest_circlesmallest_circleSmallestCircleSmallestCirclesmallest_circle, smallest_rectangle1smallest_rectangle1SmallestRectangle1SmallestRectangle1smallest_rectangle1, smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2smallest_rectangle2, inner_rectangle1inner_rectangle1InnerRectangle1InnerRectangle1inner_rectangle1, roundnessroundnessRoundnessRoundnessroundness, connect_and_holesconnect_and_holesConnectAndHolesConnectAndHolesconnect_and_holes, area_holesarea_holesAreaHolesAreaHolesarea_holes, diameter_regiondiameter_regionDiameterRegionDiameterRegiondiameter_region, orientation_regionorientation_regionOrientationRegionOrientationRegionorientation_region, moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd, moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvarmoments_region_2nd_invar, moments_region_2nd_rel_invarmoments_region_2nd_rel_invarMomentsRegion2ndRelInvarMomentsRegion2ndRelInvarmoments_region_2nd_rel_invar, moments_region_3rdmoments_region_3rdMomentsRegion3rdMomentsRegion3rdmoments_region_3rd, moments_region_3rd_invarmoments_region_3rd_invarMomentsRegion3rdInvarMomentsRegion3rdInvarmoments_region_3rd_invar, moments_region_centralmoments_region_centralMomentsRegionCentralMomentsRegionCentralmoments_region_central, moments_region_central_invarmoments_region_central_invarMomentsRegionCentralInvarMomentsRegionCentralInvarmoments_region_central_invar, select_objselect_objSelectObjSelectObjselect_obj

Module

Foundation