select_shape select_shape SelectShape SelectShape select_shape (Operator)
Name
select_shape select_shape SelectShape SelectShape select_shape
— Choose regions with the aid of shape features.
Signature
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_shape select_shape SelectShape SelectShape select_shape
chooses regions according to
shape. For each input region from Regions Regions Regions regions regions
the indicated
features (Features Features Features features features
) are calculated. If each
(Operation Operation Operation operation operation
= 'and' "and" "and" "and" "and" ) or at least one (Operation Operation Operation operation operation
=
'or' "or" "or" "or" "or" ) of the calculated features is within the default limits
(Min Min Min min min
,Max Max Max max max
) the region is adapted into the output
(duplicated).
The parameters Min Min Min min min
and Max Max Max max max
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 Features Features Features features features
:
'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_ratio height_width_ratio HeightWidthRatio HeightWidthRatio height_width_ratio
)
'height':
Height of the region (parallel to the
coordinate axes; see
height_width_ratio height_width_ratio HeightWidthRatio HeightWidthRatio height_width_ratio
)
'ratio':
Ratio of the height and width of the region
(parallel to the coordinate axes; see
height_width_ratio height_width_ratio HeightWidthRatio HeightWidthRatio height_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 circularity circularity Circularity Circularity circularity
)
'compactness':
Compactness (see compactness compactness Compactness Compactness compactness
)
'contlength':
Total length of contour
(see operator contlength contlength Contlength Contlength contlength
)
'convexity':
Convexity (see convexity convexity Convexity Convexity convexity
)
'rectangularity':
Rectangularity (see rectangularity rectangularity Rectangularity Rectangularity rectangularity
)
'ra':
Main radius of the equivalent ellipse
(see elliptic_axis elliptic_axis EllipticAxis EllipticAxis elliptic_axis
)
'rb':
Secondary radius of the equivalent ellipse
(see elliptic_axis elliptic_axis EllipticAxis EllipticAxis elliptic_axis
)
'phi':
Orientation of the equivalent ellipse
(see elliptic_axis elliptic_axis EllipticAxis EllipticAxis elliptic_axis
)
'anisometry:'
Anisometry (see eccentricity eccentricity Eccentricity Eccentricity eccentricity
)
'bulkiness:'
Bulkiness (see operator eccentricity eccentricity Eccentricity Eccentricity eccentricity
)
'struct_factor:'
Structure Factor (see operator eccentricity eccentricity Eccentricity Eccentricity eccentricity
)
'outer_radius':
Radius of smallest surrounding circle
(see smallest_circle smallest_circle SmallestCircle SmallestCircle smallest_circle
)
'inner_radius':
Radius of largest inner circle
(see inner_circle inner_circle InnerCircle InnerCircle inner_circle
)
'inner_width':
Width of the largest axis-parallel rectangle that
fits into the region (see inner_rectangle1 inner_rectangle1 InnerRectangle1 InnerRectangle1 inner_rectangle1
)
'inner_height':
Height of the largest axis-parallel rectangle that
fits into the region (see inner_rectangle1 inner_rectangle1 InnerRectangle1 InnerRectangle1 inner_rectangle1
)
'dist_mean':
Mean distance from the region border to the
center (see operator roundness roundness Roundness Roundness roundness
)
'dist_deviation:'
Deviation of the distance from the region border
from the center (see operator roundness roundness Roundness Roundness roundness
)
'roundness':
Roundness (see operator roundness roundness Roundness Roundness roundness
)
'num_sides':
Number of polygon sides (see operator
roundness roundness Roundness Roundness roundness
)
'connect_num':
Number of connection components
(see operator connect_and_holes connect_and_holes ConnectAndHoles ConnectAndHoles connect_and_holes
)
'holes_num':
Number of holes
(see operator connect_and_holes connect_and_holes ConnectAndHoles ConnectAndHoles connect_and_holes
)
'area_holes':
Area of the holes of the object
(see operator area_holes area_holes AreaHoles AreaHoles area_holes
)
'max_diameter':
Maximum diameter of the region
(see operator diameter_region diameter_region DiameterRegion DiameterRegion diameter_region
)
'orientation':
Orientation of the region
(see operator orientation_region orientation_region OrientationRegion OrientationRegion orientation_region
)
'euler_number':
Euler number (see operator euler_number euler_number EulerNumber EulerNumber euler_number
)
'rect2_phi':
Orientation of the smallest surrounding rectangle
(see operator smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 smallest_rectangle2
)
'rect2_len1':
Half the length of the smallest surrounding
rectangle (see operator smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 smallest_rectangle2
)
'rect2_len2':
Half the width of the smallest surrounding
rectangle (see operator smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 smallest_rectangle2
)
'moments_m11':
Geometric moments of the region
(see operator moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
)
'moments_m20':
Geometric moments of the region
(see operator moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
)
'moments_m02':
Geometric moments of the region
(see operator moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
)
'moments_ia':
Geometric moments of the region
(see operator moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
)
'moments_ib':
Geometric moments of the region
(see operator moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
)
'moments_m11_invar':
Geometric moments of the region
(see operator moments_region_2nd_invar moments_region_2nd_invar MomentsRegion2ndInvar MomentsRegion2ndInvar moments_region_2nd_invar
)
'moments_m20_invar':
Geometric moments of the region
(see operator moments_region_2nd_invar moments_region_2nd_invar MomentsRegion2ndInvar MomentsRegion2ndInvar moments_region_2nd_invar
)
'moments_m02_invar':
Geometric moments of the region
(see operator moments_region_2nd_invar moments_region_2nd_invar MomentsRegion2ndInvar MomentsRegion2ndInvar moments_region_2nd_invar
)
'moments_phi1':
Geometric moments of the region
(see operator moments_region_2nd_rel_invar moments_region_2nd_rel_invar MomentsRegion2ndRelInvar MomentsRegion2ndRelInvar moments_region_2nd_rel_invar
)
'moments_phi2':
Geometric moments of the region
(see operator moments_region_2nd_rel_invar moments_region_2nd_rel_invar MomentsRegion2ndRelInvar MomentsRegion2ndRelInvar moments_region_2nd_rel_invar
)
'moments_m21':
Geometric moments of the region
(see operator moments_region_3rd moments_region_3rd MomentsRegion3rd MomentsRegion3rd moments_region_3rd
)
'moments_m12':
Geometric moments of the region
(see operator moments_region_3rd moments_region_3rd MomentsRegion3rd MomentsRegion3rd moments_region_3rd
)
'moments_m03':
Geometric moments of the region
(see operator moments_region_3rd moments_region_3rd MomentsRegion3rd MomentsRegion3rd moments_region_3rd
)
'moments_m30':
Geometric moments of the region
(see operator moments_region_3rd moments_region_3rd MomentsRegion3rd MomentsRegion3rd moments_region_3rd
)
'moments_m21_invar':
Geometric moments of the region
(see operator moments_region_3rd_invar moments_region_3rd_invar MomentsRegion3rdInvar MomentsRegion3rdInvar moments_region_3rd_invar
)
'moments_m12_invar':
Geometric moments of the region
(see operator moments_region_3rd_invar moments_region_3rd_invar MomentsRegion3rdInvar MomentsRegion3rdInvar moments_region_3rd_invar
)
'moments_m03_invar':
Geometric moments of the region
(see operator moments_region_3rd_invar moments_region_3rd_invar MomentsRegion3rdInvar MomentsRegion3rdInvar moments_region_3rd_invar
)
'moments_m30_invar':
Geometric moments of the region
(see operator moments_region_3rd_invar moments_region_3rd_invar MomentsRegion3rdInvar MomentsRegion3rdInvar moments_region_3rd_invar
)
'moments_i1':
Geometric moments of the region
(see operator moments_region_central moments_region_central MomentsRegionCentral MomentsRegionCentral moments_region_central
)
'moments_i2':
Geometric moments of the region
(see operator moments_region_central moments_region_central MomentsRegionCentral MomentsRegionCentral moments_region_central
)
'moments_i3':
Geometric moments of the region
(see operator moments_region_central moments_region_central MomentsRegionCentral MomentsRegionCentral moments_region_central
)
'moments_i4':
Geometric moments of the region
(see operator moments_region_central moments_region_central MomentsRegionCentral MomentsRegionCentral moments_region_central
)
'moments_psi1':
Geometric moments of the region
(see operator moments_region_central_invar moments_region_central_invar MomentsRegionCentralInvar MomentsRegionCentralInvar moments_region_central_invar
)
'moments_psi2':
Geometric moments of the region
(see operator moments_region_central_invar moments_region_central_invar MomentsRegionCentralInvar MomentsRegionCentralInvar moments_region_central_invar
)
'moments_psi3':
Geometric moments of the region
(see operator moments_region_central_invar moments_region_central_invar MomentsRegionCentralInvar MomentsRegionCentralInvar moments_region_central_invar
)
'moments_psi4':
Geometric moments of the region
(see operator moments_region_central_invar moments_region_central_invar MomentsRegionCentralInvar MomentsRegionCentralInvar moments_region_central_invar
)
If only one feature (Features Features Features features features
) is used the value of
Operation Operation Operation operation operation
is meaningless. Several features are processed in
the sequence in which they are entered.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Automatically parallelized on tuple level.
Parameters
Regions Regions Regions regions regions
(input_object) region-array →
object HRegion HObject HObject Hobject
Regions to be examined.
SelectedRegions SelectedRegions SelectedRegions selectedRegions selected_regions
(output_object) region-array →
object HRegion HObject HObject Hobject *
Regions fulfilling the condition.
Features Features Features features features
(input_control) string(-array) →
HTuple MaybeSequence[str] HTuple Htuple (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"
Operation Operation Operation operation operation
(input_control) string →
HTuple str HTuple Htuple (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"
Min Min Min min min
(input_control) real(-array) →
HTuple MaybeSequence[Union[int, float, str]] HTuple Htuple (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
Max Max Max max max
(input_control) real(-array) →
HTuple MaybeSequence[Union[int, float, str]] HTuple Htuple (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_shape select_shape SelectShape SelectShape select_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
threshold threshold Threshold Threshold threshold
,
regiongrowing regiongrowing Regiongrowing Regiongrowing regiongrowing
,
connection connection Connection Connection connection
,
runlength_features runlength_features RunlengthFeatures RunlengthFeatures runlength_features
Possible Successors
select_gray select_gray SelectGray SelectGray select_gray
,
shape_trans shape_trans ShapeTrans ShapeTrans shape_trans
,
reduce_domain reduce_domain ReduceDomain ReduceDomain reduce_domain
,
count_obj count_obj CountObj CountObj count_obj
Alternatives
select_shape_std select_shape_std SelectShapeStd SelectShapeStd select_shape_std
See also
area_center area_center AreaCenter AreaCenter area_center
,
circularity circularity Circularity Circularity circularity
,
compactness compactness Compactness Compactness compactness
,
contlength contlength Contlength Contlength contlength
,
convexity convexity Convexity Convexity convexity
,
rectangularity rectangularity Rectangularity Rectangularity rectangularity
,
elliptic_axis elliptic_axis EllipticAxis EllipticAxis elliptic_axis
,
eccentricity eccentricity Eccentricity Eccentricity eccentricity
,
inner_circle inner_circle InnerCircle InnerCircle inner_circle
,
smallest_circle smallest_circle SmallestCircle SmallestCircle smallest_circle
,
smallest_rectangle1 smallest_rectangle1 SmallestRectangle1 SmallestRectangle1 smallest_rectangle1
,
smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 smallest_rectangle2
,
inner_rectangle1 inner_rectangle1 InnerRectangle1 InnerRectangle1 inner_rectangle1
,
roundness roundness Roundness Roundness roundness
,
connect_and_holes connect_and_holes ConnectAndHoles ConnectAndHoles connect_and_holes
,
area_holes area_holes AreaHoles AreaHoles area_holes
,
diameter_region diameter_region DiameterRegion DiameterRegion diameter_region
,
orientation_region orientation_region OrientationRegion OrientationRegion orientation_region
,
moments_region_2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd moments_region_2nd
,
moments_region_2nd_invar moments_region_2nd_invar MomentsRegion2ndInvar MomentsRegion2ndInvar moments_region_2nd_invar
,
moments_region_2nd_rel_invar moments_region_2nd_rel_invar MomentsRegion2ndRelInvar MomentsRegion2ndRelInvar moments_region_2nd_rel_invar
,
moments_region_3rd moments_region_3rd MomentsRegion3rd MomentsRegion3rd moments_region_3rd
,
moments_region_3rd_invar moments_region_3rd_invar MomentsRegion3rdInvar MomentsRegion3rdInvar moments_region_3rd_invar
,
moments_region_central moments_region_central MomentsRegionCentral MomentsRegionCentral moments_region_central
,
moments_region_central_invar moments_region_central_invar MomentsRegionCentralInvar MomentsRegionCentralInvar moments_region_central_invar
,
select_obj select_obj SelectObj SelectObj select_obj
Module
Foundation