MIL_ID ResultBlobId,  //in 
MIL_INT64 Operation,  //in 
MIL_INT64 SelectionCriterion,  //in 
MIL_INT64 Condition,  //in 
MIL_DOUBLE CondLow,  //in 
MIL_DOUBLE CondHigh  //in 
This function selects or merges blobs that meet a specified criterion. These blobs will be included in or excluded from future operations (calculations or result retrieval), or deleted entirely from the result buffer. Selection criterion can be based on a calculated feature or on the current status of the blobs. MblobCalculate() must have been called at least once before calling this function.
If this function is not called at least once, all blobs are included by default. If there is more than one call to this function, the effect of the calls is cumulative unless M_INCLUDE_ONLY or M_EXCLUDE_ONLY is specified as the operation to perform.
If a blob is excluded or deleted, its index is reassigned; that is, the index of blobs with indices greater than that of the excluded/deleted blob are reduced by one. This ensures that included blobs have consecutive indices. Label values of included and excluded blobs, however, are left as is; therefore, it is possible to specify the label value of an excluded blob. You can get a list of valid blob label values by calling MblobGetResult() with M_LABEL_VALUE. Deleted blobs' label values are set to 0.
Once a blob has been excluded, it can normally be reincluded only by specifying M_INCLUDE or M_INCLUDE_ONLY in a future call to this function (with the correct criterion). However, if you change the processing mode of a Blob analysis context (using MblobControl()), or use the result buffer with different images, the subsequent call to MblobCalculate() will cause all results in the buffer to be discarded and all blobs will be reincluded.
The limits of the blob selection criterion are set using the CondLow and CondHigh parameters. If the blobs were taken from a calibrated image, these parameters can be set in pixel units or world units. To set the units, use MblobControl() with M_INPUT_SELECT_UNITS. Note that if you set this control type to M_WORLD but you don't pass MblobSelect() a result buffer whose results were obtained from a calibrated target image, the function will generate an error.
Specifies the identifier of the Blob Analysis result buffer to use in the blob selection process.
Specifies the operation to perform on the specified blobs. This parameter can be set to one of the following.
For specifying the operation to perform


Value  Description  
M_DELETE 
Deletes blobs that meet the specified condition. 

M_EXCLUDE 
Excludes all blobs that meet the specified condition. 

M_EXCLUDE_ONLY 
Excludes only those blobs that meet the specified condition and includes all others. 

M_INCLUDE 
Includes all blobs that meet the specified condition. 

M_INCLUDE_ONLY 
Includes only those blobs that meet the specified condition and excludes all others. 

M_MERGE 
Groups all the blobs that meet the specified condition. 
Specifies the feature to use as part of the selection criterion or the status of the blobs to affect. See MblobControl() for a full description of the features. The specified result buffer must already contain the results for the specified feature.
To use as part of the criterion a feature that has only a binary definition, select one of the following.
For a selection criterion based on a feature that has
only a binary definition


Value  Description  
M_AREA 
Uses the number of foreground pixels in a blob (holes are not counted). 

M_BLOB_TOUCHING_IMAGE_BORDERS 
Uses all blobs that touched the border of the blob identifier image. 

M_BOX_AREA 
Uses the area covered by the bounding box of a blob. 

M_BOX_ASPECT_RATIO 
Uses the ratio of the horizontal size to the vertical size of the bounding box of a blob. 

M_BOX_FILL_RATIO 
Uses the ratio of the area of a blob to the area of the bounding box of the blob. 

M_BOX_X_MAX 
Uses the extreme right coordinate of the bounding box of a blob. 

M_BOX_X_MIN 
Uses the extreme left coordinate of the bounding box of a blob. 

M_BOX_Y_MAX 
Uses the extreme bottom coordinate of the bounding box of a blob. 

M_BOX_Y_MIN 
Uses the extreme top coordinate of the bounding box of a blob. 

M_BREADTH 
Uses the breadth of a blob. 

M_COMPACTNESS 
Uses the compactness feature. 

M_CONVEX_HULL_AREA 
Uses the area of the convex hull of a blob. 

M_CONVEX_HULL_COG_X 
Uses the Xcomponent of the center of gravity of a blob. 

M_CONVEX_HULL_COG_Y 
Uses the Ycomponent of the center of gravity of a blob. 

M_CONVEX_HULL_FILL_RATIO 
Uses the ratio of the area of a blob to the area of its convex hull. 

M_CONVEX_HULL_PERIMETER 
Uses the perimeter of the convex hull of a blob. 

M_CONVEX_PERIMETER 
Uses the approximation of the perimeter of the convex hull of a blob. 

M_ELONGATION 
Uses the elongation of a blob. 

M_EULER_NUMBER 
Uses the number of blobs  number of holes. 

M_FERET_ELONGATION 
Uses the measure of the shape of a blob. 

M_FERET_GENERAL 
Uses the Feret diameter feature. 

M_FERET_MAX_ANGLE 
Uses the angle at which the maximum Feret diameter is found, in degrees, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 

M_FERET_MAX_DIAMETER 
Uses the largest Feret diameter found after checking a certain number of angles. 

M_FERET_MAX_DIAMETER_ELONGATION 
Uses the ratio of the maximum Feret diameter by its perpendicular Feret diameter. 

M_FERET_MEAN_DIAMETER 
Uses the average Feret diameter at all the angles checked. 

M_FERET_MIN_ANGLE 
Uses the angle at which the minimum Feret diameter is found, in degrees, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 

M_FERET_MIN_DIAMETER 
Uses the smallest Feret diameter found after checking a certain number of angles. 

M_FERET_MIN_DIAMETER_ELONGATION 
Uses the ratio of the minimum Feret diameter by its perpendicular Feret diameter. 

M_FERET_PERPENDICULAR_TO_MAX_DIAMETER 
Uses the Feret diameter that is perpendicular to the maximum Feret diameter. 

M_FERET_PERPENDICULAR_TO_MIN_DIAMETER 
Uses the Feret diameter that is perpendicular to the minimum Feret diameter. 

M_FERET_X 
Uses the dimension of the minimum bounding box of a blob in the horizontal direction. 

M_FERET_Y 
Uses the dimension of the minimum bounding box of a blob in the vertical direction. 

M_FIRST_POINT_X 
Uses the xcoordinate of the top leftmost pixel along the perimeter of a blob. 

M_FIRST_POINT_Y 
Uses the ycoordinate of the top leftmost pixel along the perimeter of a blob. 

M_INDEX_VALUE 
Uses the index value. 

M_INTERCEPT_0 
Uses the number of times a transition from background to foreground (not vice versa) occurs in the horizontal direction for the entire blob. 

M_INTERCEPT_45 
Determines the number of times that the neighborhood configuration occurs in a blob, where F is a foreground pixel, B is a background pixel, and a dot can be any pixel value. 

M_INTERCEPT_90 
Determines the number of times that the neighborhood configuration occurs in a blob. 

M_INTERCEPT_135 
Determines the number of times that the neighborhood configuration occurs in a blob. 

M_LABEL_VALUE 
Uses the label feature. 

M_LENGTH 
Uses the measure of the true length of a blob. 

M_MIN_AREA_BOX_ANGLE 
Uses the angle of the minimumarea bounding box. 

M_MIN_AREA_BOX_AREA 
Uses the area of the minimumarea bounding box. 

M_MIN_AREA_BOX_CENTER_X 
Uses the Xcoordinate of the center of the minimumarea bounding box. 

M_MIN_AREA_BOX_CENTER_Y 
Uses the Ycoordinate of the center of the minimumarea bounding box. 

M_MIN_AREA_BOX_HEIGHT 
Uses the height of the minimumarea bounding box. 

M_MIN_AREA_BOX_PERIMETER 
Uses the perimeter of the minimumarea bounding box. 

M_MIN_AREA_BOX_WIDTH 
Uses the width of the minimumarea bounding box. 

M_MIN_PERIMETER_BOX_ANGLE 
Uses the angle of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_AREA 
Uses the area of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_CENTER_X 
Uses the Xcoordinate of the center of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_CENTER_Y 
Uses the Ycoordinate of the center of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_HEIGHT 
Uses the height of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_PERIMETER 
Uses the perimeter of the minimumperimeter bounding box. 

M_MIN_PERIMETER_BOX_WIDTH 
Uses the width of the minimumperimeter bounding box. 

M_MOMENT_GENERAL 
Uses the moment calculation. 

M_NUMBER_OF_CHAINED_PIXELS 
Uses the number of chained pixels in a blob. 

M_NUMBER_OF_HOLES 
Uses the number of holes in a blob. 

M_NUMBER_OF_RUNS 
Uses the total number of runs in a blob. 

M_PERIMETER 
Uses the total length of edges in a blob (including the edges of any holes), with an allowance made for the staircase effect that is produced when diagonal edges are digitized. 

M_RECTANGULARITY 
Uses the degree to which a blob is similar to a rectangle. 

M_ROUGHNESS 
Uses the roughness feature. 

M_WORLD_BOX_X_MAX 
Uses the extreme right Xcoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_BOX_X_MIN 
Uses the extreme left Xcoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_BOX_Y_MAX 
Uses the extreme bottom Ycoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_BOX_Y_MIN 
Uses the extreme top Ycoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_FERET_X 
Uses the dimension of the minimum bounding box of a blob in the horizontal direction, calculated in the relative coordinate system (that is, M_WORLD_BOX_X_MAX  M_WORLD_BOX_X_MIN + 1). 

M_WORLD_FERET_Y 
Uses the dimension of the minimum bounding box of a blob in the vertical direction, calculated in the relative coordinate system (that is, M_WORLD_BOX_Y_MAX  M_WORLD_BOX_Y_MIN + 1). 

M_WORLD_X_AT_Y_MAX 
Uses the Xcoordinate at the maximum Ycoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_X_AT_Y_MIN 
Uses the Xcoordinate at the minimum Ycoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_Y_AT_X_MAX 
Uses the Ycoordinate at the maximum Xcoordinate of a blob, calculated in the relative coordinate system. 

M_WORLD_Y_AT_X_MIN 
Uses the Ycoordinate at the minimum Xcoordinate of a blob, calculated in the relative coordinate system. 

M_X_MAX_AT_Y_MAX 
Uses the maximum Xcoordinate at the maximum Ycoordinate of the blob, calculated in the pixel coordinate system. 

M_X_MAX_AT_Y_MIN 
Uses the maximum Xcoordinate at the minimum Ycoordinate of the blob, calculated in the pixel coordinate system. 

M_X_MIN_AT_Y_MAX 
Uses the minimum Xcoordinate at the maximum Ycoordinate of the blob, calculated in the pixel coordinate system. 

M_X_MIN_AT_Y_MIN 
Uses the minimum Xcoordinate at the minimum Ycoordinate of the blob, calculated in the pixel coordinate system. 

M_Y_MAX_AT_X_MAX 
Uses the maximum Ycoordinate at the maximum Xcoordinate of the blob, calculated in the pixel coordinate system. 

M_Y_MAX_AT_X_MIN 
Uses the maximum Ycoordinate at the minimum Xcoordinate of the blob, calculated in the pixel coordinate system. 

M_Y_MIN_AT_X_MAX 
Uses the minimum Ycoordinate at the maximum Xcoordinate of the blob, calculated in the pixel coordinate system. 

M_Y_MIN_AT_X_MIN 
Uses the minimum Ycoordinate at the minimum Xcoordinate of the blob, calculated in the pixel coordinate system. 
To use as part of the criterion a feature that has only a grayscale definition, select one of the following. You can specify one of these features as part of your selection criterion only if both a blob identifier image and a grayscale image were passed to MblobCalculate() (and the features were selected for calculation).
For a selection criterion based on a feature that has
only a grayscale definition


Value  Description  
M_BLOB_CONTRAST 
Uses the difference between the maximum and minimum pixel values of a blob. 

M_MAX_PIXEL 
Uses the maximum pixel value in a blob. 

M_MEAN_PIXEL 
Uses the mean pixel value in a blob. 

M_MIN_PIXEL 
Uses the minimum pixel value in a blob. 

M_SIGMA_PIXEL 
Uses the standard deviation of pixel values in a blob. 

M_SUM_PIXEL 
Uses the sum of all pixel values in a blob. 

M_SUM_PIXEL_SQUARED 
Uses the sum of the squares of the pixel values in a blob. 
To use as part of the criterion a feature that has two different definitions (a binary and a grayscale definition), select one of the following.
If you did not provide both a blob identifier image and a grayscale image to MblobCalculate(), only the binary version was calculated. If you did provide a grayscale image, both versions were calculated, unless otherwise specified. In the latter case, see combination values below to specify which to use as part of the criterion. If both versions were calculated and no version is specified, then the grayscale version of the feature is selected as the criterion.
For a selection criterion based on a feature that has
two different definitions


Value  Description  
M_AXIS_PRINCIPAL_ANGLE + 
Uses the feature specifying the angle, in degrees, at which a blob has the least moment of inertia, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 

M_AXIS_SECONDARY_ANGLE + 
Uses the feature specifying the angle, in degrees, perpendicular to M_AXIS_PRINCIPAL_ANGLE, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 

M_CENTER_OF_GRAVITY_X + 
Uses the feature specifying the Xposition of the center of gravity of a blob. 

M_CENTER_OF_GRAVITY_Y + 
Uses the feature specifying the Yposition of the center of gravity of a blob. 

M_FERET_AT_PRINCIPAL_AXIS_ANGLE + 
Uses the Feret diameter at the principal axis of a blob. 

M_FERET_AT_SECONDARY_AXIS_ANGLE + 
Uses the Feret diameter at the secondary axis of a blob. 

M_FERET_PRINCIPAL_AXIS_ELONGATION + 
Uses the ratio of the Feret diameter at the principal axis to the Feret diameter at the secondary axis. 

M_MOMENT_CENTRAL_X0_Y2 + 
Uses the feature specifying the central moment of a blob, where the order of X equals 0 and the order of Y equals 2. 

M_MOMENT_CENTRAL_X1_Y1 + 
Uses the feature specifying the central moment of a blob, where the order of X equals 1 and the order of Y equals 1. 

M_MOMENT_CENTRAL_X2_Y0 + 
Uses the feature specifying the central moment of a blob, where the order of X equals 2 and the order of Y equals 0. 

M_MOMENT_X0_Y1 + 
Uses the feature specifying the ordinary moment of a blob, where the order of X equals 0 and the order of Y equals 1. 

M_MOMENT_X0_Y2 + 
Uses the feature specifying the ordinary moment of a blob, where the order of X equals 0 and the order of Y equals 2. 

M_MOMENT_X1_Y0 + 
Uses the feature specifying the ordinary moment of a blob, where the order of X equals 1 and the order of Y equals 0. 

M_MOMENT_X1_Y1 + 
Uses the feature specifying the ordinary moment of a blob, where the order of X equals 1 and the order of Y equals 1. 

M_MOMENT_X2_Y0 + 
Uses the feature specifying the ordinary moment of a blob, where the order of X equals 2 and the order of Y equals 0. 
You can add one of the following values to the abovementioned values to set whether to use the binary or grayscale version of the selected feature.
Note that the selected feature must have both a binary definition and a grayscale definition, and both versions must have been calculated.
For features with a binary and grayscale definition
(both have been calculated)


Combination value  Description  
M_BINARY 
Uses the binary version of the selected feature. 

M_GRAYSCALE 
Uses the grayscale version of the selected feature. 
To use as part of the selection criterion the current status of the blobs, set the SelectionCriterion parameter to one of the following values. For example, you can delete all currently excluded blobs from the list of blobs on which to operate.
When the selection criterion is based on the current status of blobs, you must set the Condition, CondLow, and CondHigh parameters to M_NULL.
For a selection criterion based on the current status
of blobs


Value  Description  
M_ALL_BLOBS 
Uses all blobs. 

M_EXCLUDED_BLOBS 
Uses all excluded blobs. 

M_INCLUDED_BLOBS 
Uses all included blobs. 
Specifies the condition for the blob selection. This parameter must be set to one of the values below.
When the selection criterion is based on the current status of blobs or M_BLOB_TOUCHING_IMAGE_BORDERS, set the Condition parameter to M_NULL.
When the selection criterion is based on a feature (except M_BLOB_TOUCHING_IMAGE_BORDERS), you can specify one of the following conditions that use two limits (CondLow and CondHigh).
For blob selection using two limits


Value  Description  
M_IN_RANGE 
Specifies that blobs with values for the specified feature in the range CondLow to CondHigh, inclusive, are included, excluded, or deleted from future operations on the specified result buffer. 

M_OUT_RANGE 
Specifies that blobs with values for the specified feature less than CondLow, or greater than CondHigh, are included, excluded, or deleted from future operations on the specified result buffer. 
When the selection criterion is based on a feature (except M_BLOB_TOUCHING_IMAGE_BORDERS), you can specify one of the following conditions that use only one limit (CondLow).
For blob selection using only one limit


Value  Description  
M_EQUAL 
Specifies that blobs with values for the specified feature equal to CondLow are included, excluded, or deleted from future operations on the specified result buffer. 

M_GREATER 
Specifies that blobs with values for the specified feature greater than CondLow are included, excluded, or deleted from future operations on the specified result buffer. 

M_GREATER_OR_EQUAL 
Specifies that blobs with values for the specified feature greater than or equal to CondLow are included, excluded, or deleted from future operations on the specified result buffer. 

M_LESS 
Specifies that blobs with values for the specified feature less than CondLow are included, excluded, or deleted from future operations on the specified result buffer. 

M_LESS_OR_EQUAL 
Specifies that blobs with values for the specified feature less than or equal to CondLow are included, excluded, or deleted from future operations on the specified result buffer. 

M_NOT_EQUAL 
Specifies that blobs with values for the specified feature not equal to CondLow are included, excluded, or deleted from future operations on the specified result buffer. 
Specifies the lower limit of the selected condition.
For the lower limit of the selected
condition


Value  Description  
M_NULL 
Specifies that this parameter is not applicable. 

Value 
Specifies the lower limit of the condition, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 
Specifies the upper limit of the selected condition.
For the upper limit of the selected
condition


Value  Description  
M_NULL 
Specifies that this parameter is not applicable. 

Value 
Specifies the upper limit of the condition, relative to the input coordinate system specified using MblobControl() with M_INPUT_SELECT_UNITS. 
Header  Include mil.h. 
Library  Use mil.lib; milblob.lib. 
DLL  Requires mil.dll; milblob.dll. 