Filters
Filter values by
Calculation type
  • Binary results
  • Grayscale results
Type of results
  • General results
  • Miscellaneous results
  • Area and perimeter results
  • Dimension results
    • General dimension results
    • Feret feature results
  • Shape results
  • Location and bounding box results
    • Bounding box results
    • Center of gravity results
    • Convex hull results
    • Chain results
    • World unit results
  • Moment related results
  • Run related results
  • Statistic results
| Customize Help
| Save Settings

MblobGetResult



Function Map
Synopsis
Get results for a feature of the included blobs, from a blob result buffer.
Syntax
void MblobGetResult(
MIL_ID ResultBlobId, //in
MIL_INT LabelOrIndex, //in
MIL_INT64 ResultType, //in
void *ResultArrayPtr //out
)
Description

This function retrieves the results for a specified feature of one or all included blobs, from the specified Blob Analysis result buffer.

If your target image was associated with a camera calibration context, positional and dimensional results are, by default, returned with respect to the relative coordinate system of the image. Otherwise, these results are returned in pixels, relative to the top-left pixel in the target image.

If your target image was associated with a camera calibration context but you want to retrieve positional and dimensional results in pixel units, use MblobControl() with the M_RESULT_OUTPUT_UNITS control type set to M_PIXEL. Note that if you set M_RESULT_OUTPUT_UNITS to M_WORLD without having specified a calibrated image from which to calculate the results, MblobGetResult() will generate an error.

When calculated in pixel units, the pixel aspect ratio, specified using MblobControl() with M_PIXEL_ASPECT_RATIO, is taken into account horizontally. Results are returned in units of "pixel height" since the pixel width is adjusted to be equal to the pixel height.

Note that MblobGetResult() generates an error if you try to retrieve a result whose corresponding feature, or the group of features to which it belongs, was not enabled for calculation. You can add the M_AVAILABLE combination constant to a feature to determine if the result is available for retrieval.

Note that this function reference has not been updated for a MIL system added during a MIL update. Refer to the MIL system's release note to see which MIL system’s documentation you should use in its place and any possible differences.
Parameters
This function is not supported on the selected boards.
This function reference has not been updated for the selected MIL system. To show the content of this page, choose a second MIL system; refer to the MIL system's release note to see which MIL system’s documentation to choose and any possible differences.
Parameters
ResultBlobId

Specifies the identifier of the Blob Analysis result buffer from which to get results. The specified feature(s) must have already been calculated with MblobCalculate().

LabelOrIndex

Specifies the label or index of the blob for which to get results, or specifies that you are getting general results related to all blobs. This parameter must be set to one of the following values:

function map For specifying the label or index of the blob
Click to summarizeValue Description
Click to summarize M_DEFAULT

Same as M_INCLUDED_BLOBS for features that apply to one or all occurrences. Same as M_GENERAL for general result types.

(summarize)
Click to summarize
M_BLOB_INDEX(
MIL_INT Index
)

Specifies the index of the blob for which to get results. You can get the number of included blobs in the result buffer using M_NUMBER.

(summarize)
Parameters

Specifies the index.

0 <= Value < M_NUMBER

Specifies the valid indices of a blob.

Click to summarize
M_BLOB_LABEL(
MIL_INT Label
)

Specifies the label of the blob for which to get results. You can get a list of valid blob label values with M_LABEL_VALUE.

(summarize)
Parameters

Specifies the label.

Click to summarize M_GENERAL

Retrieves a result relating to the entire blob result buffer.

Click to summarize M_INCLUDED_BLOBS

Retrieves all included blob results.

ResultType

Specifies the type of result to retrieve.

See the Parameter associations section for possible values that can be specified.

ResultArrayPtr
Accepts the address of one of the following (see the Parameter associations section for specifics on which is expected):
  • array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ]
  • array of type MIL_FLOAT [optionally, in C++: a reference to a std::vector<MIL_FLOAT> ]
  • array of type MIL_INT [optionally, in C++: a reference to a std::vector<MIL_INT> ]
  • array of type MIL_INT16 [optionally, in C++: a reference to a std::vector<MIL_INT16> ]
  • array of type MIL_INT32 [optionally, in C++: a reference to a std::vector<MIL_INT32> ]
  • array of type MIL_INT64 [optionally, in C++: a reference to a std::vector<MIL_INT64> ]
  • MIL_DOUBLE
  • MIL_FLOAT
  • MIL_INT
  • MIL_INT16
  • MIL_INT32
  • MIL_INT64

Specifies the address of the array in which to write results.

See the Parameter associations section for possible values that can be returned.

To retrieve a general result, the ResultType parameter should be set to one of the following values. In this case, you must set LabelOrIndex to M_GENERAL.

function map For retrieving general results from the blob result buffer
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_BLOB_IDENTIFICATION_MODE +

Retrieves whether features were calculated for each blob, or for groups of blobs treated as single blobs.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_DEFAULT

Same as M_INDIVIDUAL.

Click to summarize M_INDIVIDUAL

Specifies that all blobs were measured individually.

Click to summarize M_LABELED

Specifies that blobs with the same label were grouped together, and that touching blobs with different labels were also grouped together.

Click to summarize M_LABELED_TOUCHING

Specifies that blobs with the same label were grouped together, and that touching blobs with different labels were measured individually.

Click to summarize M_WHOLE_IMAGE

Specifies that all blobs were grouped together.

Click to summarize M_CALCULATION_TYPE +

Retrieves the type of calculation that was performed during the last call to MblobCalculate(), based on the types of images that were passed (that is, only a binary image, or both a binary and grayscale image).

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_BINARY

Specifies that the previous call to MblobCalculate() was only performed on a binary image, and that enabled features with a binary definition are available for retrieval.

Click to summarize M_BINARY_AND_GRAYSCALE

Specifies that the previous call to MblobCalculate() was performed on both a binary and a grayscale image, and that enabled feature results with a binary and grayscale definition are available for retrieval.

Click to summarize M_NOT_CALCULATED

Specifies that MblobCalculate() has not been called, and that feature results are not available for retrieval.

Click to summarize M_MAX_BLOBS_END +

Retrieves whether the maximum number of blobs was reached. You can use MblobControl() with M_MAX_BLOBS to set the limit.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_FALSE

Specifies that the maximum number of blobs was not reached.

Click to summarize M_TRUE

Specifies that the maximum number of blobs was reached.

Click to summarize M_MAX_LABEL_VALUE +

Retrieves the maximum label value of all blobs in the result buffer, regardless of included or excluded status.

Label values for blobs are generated when a call to MblobCalculate() is made. The maximum label value is not necessarily the same as the total number of blobs because some label values might not be used, depending on the blob's shape. One of the uses for obtaining the maximum label value is to determine if an 8 or 16-bit image buffer is needed for MblobLabel().

Note that if zero is returned, no blobs were found.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_NUMBER +

Retrieves the number of currently included blobs. All blobs are included unless their status is changed using MblobSelect(). Included blobs will be included in future operations and result retrievals.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_TIMEOUT_END +

Retrieves whether the timeout limit was reached. You can set the timeout limit using MblobControl() with M_TIMEOUT.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_FALSE

Specifies that the timeout limit was not reached.

Click to summarize M_TRUE

Specifies that the timeout limit was reached.

Click to summarize M_TOTAL_NUMBER_OF_CHAINED_PIXELS +

Retrieves the total number of chained pixels in all blobs in the target image. The calculation of this result type can be enabled using MblobControl() with M_CHAINS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_TOTAL_NUMBER_OF_CONVEX_HULL_POINTS +

Retrieves the total number of convex hull points in all blobs in the target image. The calculation of this result type can be enabled using MblobControl() with M_CONVEX_HULL.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_TOTAL_NUMBER_OF_FERETS +

Retrieves the total number of Ferets for all blobs in the target image. The calculation of this result type can be enabled using MblobControl() with M_FERETS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE
Click to summarize M_TOTAL_NUMBER_OF_RUNS +

Retrieves the total number of runs in all blobs in the target image. The calculation of this result type can be enabled using MblobControl() with M_RUNS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE

To retrieve one or more results for a feature that has only a binary definition and cannot be used as a sorting key, the ResultType parameter should be set to one of the following values. In this case, you must set LabelOrIndex to a specific blob, or all blobs, using M_BLOB_INDEX() or M_BLOB_LABEL() for individual blobs, or M_INCLUDED_BLOBS for all blobs.

function map For retrieving results of a feature with a binary definition, and that cannot be used as a sorting key
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_BLOB_INCLUSION_STATE +

Retrieves whether each blob is included in calculations and retrieval of results.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_EXCLUDED

Specifies that the blob is not included in calculations and retrieval of results.

Click to summarize M_INCLUDED

Specifies that the blob is included in calculations and retrieval of results.

Click to summarize M_CHAIN_INDEX +

Retrieves the indices which indicate the chain to which each chained pixel belongs. Each blob's border chain is identified as index 1. Chains that delimit holes in the blob are identified by subsequent indices. When retrieving the chain index of each chained pixel for all included blobs in the image, you can use M_NUMBER_OF_CHAINED_PIXELS to determine the number of chained pixels in each blob, and therefore determine to which blob each chained pixel belongs. The calculation of this feature can be enabled using MblobControl() with M_CHAINS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CHAIN_X +

Retrieves the X-coordinate of each chained pixel in the specified blob, for all chains contained within the blob (both the pixels bordering a blob and those delimiting its holes). Chained pixels always form a closed chain. This implies that the starting pixel in the chain is also the closing one. If your blob has regions which are 1 pixel wide, these pixels are chained twice, once in the forward direction and then in the opposite direction. The calculation of this feature can be enabled using MblobControl() with M_CHAINS.

Blobs with holes have multiple chains. To determine the chain to which a pixel's X-coordinate belongs, use M_CHAIN_INDEX.

Results are only available in pixel units.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CHAIN_Y +

Retrieves the Y-coordinate of each chained pixel in the specified blob, for all chains contained within the blob (both the pixels bordering a blob and those delimiting its holes). Chained pixels always form a closed chain. This implies that the starting pixel in the chain is also the closing one. If your blob has regions which are 1 pixel wide, these pixels are chained twice, once in the forward direction and then in the opposite direction. The calculation of this feature can be enabled using MblobControl() with M_CHAINS.

Blobs with holes have multiple chains. To determine the chain to which a pixel's Y-coordinate belongs, use M_CHAIN_INDEX.

Results are only available in pixel units.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_X +

Retrieves the X-coordinate of each point on the convex perimeter of the specified blob. Convex perimeter pixels always form a closed figure. This implies that the starting pixel on the convex perimeter is also the closing one. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_XY_PACKED +

Retrieves the packed coordinates (X, Y) of each point on the perimeter of the specified blob. Convex perimeter pixels always form a closed figure. This implies that the starting pixel on the convex perimeter is also the closing one. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_Y +

Retrieves the Y-coordinate of each point on the convex perimeter of the specified blob. Convex perimeter pixels always form a closed figure. This implies that the starting pixel on the convex perimeter is also the closing one. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_DIAMETERS +

Retrieves all the Feret diameters of the specified blob in the image.

This feature is not available if you have previously set M_NUMBER_OF_FERETS to M_INFINITE using MblobControl(). The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_INDEX_VALUE +

Retrieves the index value for the specified blob(s) in the image. Note that when blob's are excluded or deleted, the index of blobs with indices greater than that of the excluded/deleted blob are reduced by one. Therefore, if you need to specify a specific blob, you might want to use its blob label instead since it doesn't change.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_Xn +

Retrieves the X-coordinate of the n th vertex of the minimum-area bounding box of each blob, where n stands for an integer between 1 and 4. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

Note that the labeling of the vertices might be inconsistent from one blob to another within the blob identifier image.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_Yn +

Retrieves the Y-coordinate of the n th vertex of the minimum-area bounding box of each blob, where n stands for an integer between 1 and 4. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

Note that the labeling of the vertices might be inconsistent from one blob to another within the blob identifier image.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_Xn +

Retrieves the X-coordinate of the n th vertex of the minimum-perimeter bounding box of each blob, where n stands for an integer between 1 and 4. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

Note that the labeling of the vertices might be inconsistent from one blob to another within the blob identifier image.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_Yn +

Retrieves the Y-coordinate of the n th vertex of the minimum-perimeter bounding box of each blob, where n stands for an integer between 1 and 4. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

Note that the labeling of the vertices might be inconsistent from one blob to another within the blob identifier image.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NUMBER_OF_FERETS +

Retrieves the number of Feret diameters calculated for each blob. The calculation of this feature can be enabled using MblobControl() with M_FERETS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_RUN_LENGTH +

Retrieves the length of each run in the specified blob(s). A run is defined as a horizontal series of consecutive foreground pixels. When retrieving the length of each run for all included blobs in the image, you can use M_NUMBER_OF_RUNS to determine the number of runs each blob has, and therefore determine to which blob each length corresponds. The calculation of this feature can be enabled using MblobControl() with M_RUNS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_RUN_X +

Retrieves the X-coordinate of the start (left-most pixel) of each run in the specified blob(s). The calculation of this feature can be enabled using MblobControl() with M_RUNS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_RUN_Y +

Retrieves the Y-coordinate of the start (left-most pixel) of each run in the specified blob(s). The calculation of this feature can be enabled using MblobControl() with M_RUNS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE

To retrieve one or more results for a feature that has only a binary definition and can be used as a sorting key, the ResultType parameter should be set to one of the following values. In this case, you must set LabelOrIndex to a specific blob, or all blobs, using M_BLOB_INDEX() or M_BLOB_LABEL() for individual blobs, or M_INCLUDED_BLOBS for all blobs. Unless otherwise stated, the following features are calculated in the pixel coordinate system.

function map For retrieving results of a feature with a binary definition, and that can be used as a sorting key
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_AREA +

Retrieves the number of foreground pixels in each blob (holes are not counted). This feature is always calculated.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BLOB_TOUCHING_IMAGE_BORDERS +

Retrieves whether each blob is touching the borders of the image.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NO

Specifies that the blob is not touching the borders of the image.

Click to summarize M_YES

Specifies that the blob is touching one or more borders of the image.

Click to summarize M_BOX_AREA +

Retrieves the area covered by the image-axis-aligned bounding box of each blob.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_ASPECT_RATIO +

Retrieves the ratio between the horizontal size and the vertical size of the image-axis-aligned bounding box of each blob.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_FILL_RATIO +

Retrieves the ratio between the area of the blob and the area of the image-axis-aligned bounding box of each blob.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_X_MAX +

Retrieves the extreme right X-coordinate of each blob, of the image-axis-aligned bounding box.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_X_MIN +

Retrieves the extreme left X-coordinate of each blob, of the image-axis-aligned bounding box.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_Y_MAX +

Retrieves the extreme bottom Y-coordinate of each blob, of the image-axis-aligned bounding box.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BOX_Y_MIN +

Retrieves the extreme top Y-coordinate of each blob, of the image-axis-aligned bounding box.

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_BREADTH +

Retrieves the breadth of each blob. This feature is only accurate for certain blob types (for example, long thin blobs) because it is derived from the perimeter (P) and area (A) assuming that P = 2(length + breadth) and A = length x breadth. The calculation of this feature can be enabled using MblobControl() with M_BREADTH.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_COMPACTNESS +

Retrieves the compactness of each blob. This is the ratio between the area of a circle with the same perimeter as the blob in question, and the area of the blob itself. The minimum theoretical value of 1.0 is obtained if the blob is a perfect circle. In practice, the minimum obtainable value is slightly above 1. This is due to the effect of square pixel discretization. The more convoluted the shape, the greater the value.

The formula used is equal to where A is the area of the blob and p is the perimeter of the blob.

In the illustration above, the blobs have similar sizes but can be distinguished by their shapes. The compactness of the left blob is slightly above 1.0, while the compactness of the right blob is 1.24. The calculation of this feature can be enabled using MblobControl() with M_COMPACTNESS.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_AREA +

Retrieves the area of the convex hull of each blob. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_COG_X +

Retrieves the X-component of the center of gravity of the convex hull of each blob. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_COG_Y +

Retrieves the Y-component of the center of gravity of the convex hull of each blob. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_FILL_RATIO +

Retrieves the ratio between the blob's area and the area of its convex hull.

In the example above, the left blob has a convex hull fill ratio of 1.0, whereas the middle and right-most blobs have a convex hull fill ratio of 0.9. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_HULL_PERIMETER +

Retrieves the perimeter of the convex hull of each blob. The perimeter is calculated by summing up the distance between every 2 consecutive points on the convex hull of a blob. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CONVEX_PERIMETER +

Retrieves an approximation of the perimeter of the convex hull of each blob. It is derived from several Feret diameters; so, a larger number of Ferets gives a more accurate result. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_PERIMETER.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_ELONGATION +

Retrieves a value that is equal to M_LENGTH / M_BREADTH of each blob. It is similar to M_FERET_ELONGATION, except that it should be used for long thin objects. The calculation of this feature can be enabled using MblobControl() with M_ELONGATION.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_EULER_NUMBER +

Retrieves the number of blobs minus the number of holes (number of blobs - number of holes). This value is more useful if calculated using the M_WHOLE_IMAGE blob identification mode instead of the M_INDIVIDUAL blob identification mode. Unlike its usual effect, when using the M_WHOLE_IMAGE blob identification mode, each blob is treated individually, as opposed to grouping all of the blobs in an image together. So M_EULER_NUMBER returns (number of blobs - number of holes). Whereas as usual, when using the M_INDIVIDUAL blob identification mode, each blob is treated separately; therefore, the Euler number for each blob is just 1 - the number of holes. The calculation of this feature can be enabled using MblobControl() with M_EULER_NUMBER.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_ELONGATION +

Retrieves the measure of the shape of each blob. It is equal to M_FERET_MAX_DIAMETER / M_FERET_MIN_DIAMETER. The calculation of this feature can be enabled using MblobControl() with M_FERETS.

It is accurate for reasonably compact objects, but becomes less accurate for very elongated objects (because M_FERET_MIN_DIAMETER becomes less accurate). For very elongated objects, M_ELONGATION should be used.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_GENERAL +

Retrieves the Feret diameter at the user-specified angle (set using MblobControl() with M_FERET_GENERAL_ANGLE). The calculation of this feature can be enabled using MblobControl() with M_FERET_GENERAL.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MAX_ANGLE +

Retrieves the angle, in degrees, at which the maximum Feret diameter is found for each blob. The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

An angle interpreted with respect to the pixel coordinate system is always measured counter-clockwise. For information on the angle's direction of rotation when interpreting the angle with respect to the relative coordinate system, see the Angle convention in MIL subsection of the Working with real-world units section of Chapter 26: Calibrating your camera setup.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MAX_DIAMETER +

Retrieves the largest Feret diameter found after checking a certain number of angles. More angles will give a more accurate result, but will take longer to calculate. With regards to the number of angles evaluated, the maximum Feret diameter is less sensitive than the minimum Feret diameter; generally, evaluating the potential maximum Feret diameter over 8 angles will give an accurate result.

The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MAX_DIAMETER_ELONGATION +

Retrieves the ratio between the maximum Feret diameter of each blob and its perpendicular Feret diameter. The calculation of this feature can be enabled using MblobControl() with M_FERET_MAX_DIAMETER_ELONGATION.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MEAN_DIAMETER +

Retrieves the average of the Feret diameters at the angles checked for each blob. The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MIN_ANGLE +

Retrieves the angle, in degrees, at which the minimum Feret diameter is found for each blob. The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

An angle interpreted with respect to the pixel coordinate system is always measured counter-clockwise. For information on the angle's direction of rotation when interpreting the angle with respect to the relative coordinate system, see the Angle convention in MIL subsection of the Working with real-world units section of Chapter 26: Calibrating your camera setup.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MIN_DIAMETER +

Retrieves the minimum Feret diameter found after checking a certain number of angles. More angles will give a more accurate result, but will take longer to calculate. Note that this feature will not be very accurate for long thin blobs. However, you can get an accurate measure of the breadth of long thin blobs more quickly using M_BREADTH.

The calculation of this feature can be enabled using MblobControl() with M_FERETS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_MIN_DIAMETER_ELONGATION +

Retrieves the ratio between the minimum Feret diameter of each blob and its perpendicular Feret diameter. The calculation of this feature can be enabled using MblobControl() with M_FERET_MIN_DIAMETER_ELONGATION.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_PERPENDICULAR_TO_MAX_DIAMETER +

Retrieves the Feret diameter that is perpendicular to the maximum Feret diameter of each blob. The calculation of this feature can be enabled using MblobControl() with M_FERET_PERPENDICULAR_TO_MAX_DIAMETER.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_PERPENDICULAR_TO_MIN_DIAMETER +

Retrieves the Feret diameter that is perpendicular to the minimum Feret diameter of each blob. The calculation of this feature can be enabled using MblobControl() with M_FERET_PERPENDICULAR_TO_MIN_DIAMETER.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_X +

Retrieves the dimension of the image-axis-aligned minimum bounding box of each blob, along the X-axis of the pixel coordinate system (that is, M_BOX_X_MAX - M_BOX_X_MIN + 1).

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_Y +

Retrieves the dimension of the image-axis-aligned minimum bounding box of each blob, along the Y-axis of the pixel coordinate system (that is, M_BOX_Y_MAX - M_BOX_Y_MIN + 1).

The image-axis-aligned bounding box is the bounding box that is aligned with the pixel coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FIRST_POINT_X +

Retrieves the X-coordinate of a unique point (along with M_FIRST_POINT_Y) for each blob, that is on the perimeter of the blob. The X-coordinate is that of the left-most pixel on the top-most line of the blob. The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FIRST_POINT_Y +

Retrieves the Y-coordinate of a unique point (along with M_FIRST_POINT_X) for each blob, that is on the perimeter of the blob. The Y-coordinate is that of the top-most line of the blob. The calculation of this feature can be enabled using MblobControl() with M_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_INTERCEPT_0 +

Retrieves the number of times a transition from background to foreground (not vice versa) occurs in the horizontal direction for the entire blob. In other words, it is equal to the number of times the neighborhood configuration [B, F] occurs in a blob, where B is a background pixel and F is a foreground pixel. The calculation of this feature can be enabled using MblobControl() with M_INTERCEPT.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_INTERCEPT_45 +

Retrieves 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. The calculation of this feature can be enabled using MblobControl() with M_INTERCEPT.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_INTERCEPT_90 +

Retrieves the number of times that the neighborhood configuration occurs in a blob. The calculation of this feature can be enabled using MblobControl() with M_INTERCEPT.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_INTERCEPT_135 +

Retrieves the number of times that the neighborhood configuration occurs in a blob. The calculation of this feature can be enabled using MblobControl() with M_INTERCEPT.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_LABEL_VALUE +

Retrieves the label value of each blob. You can retrieve the label value of included or excluded blobs, but not deleted blobs. The label value is a positive integer (>= 1) that is unique for each blob.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_LENGTH +

Retrieves the length of each blob. This feature is only accurate for certain object types (for example, long thin blobs) because it is derived from the perimeter (P) and area (A) assuming that P = 2(length + breadth) and A = length x breadth. It complements M_FERET_MAX_DIAMETER because it is accurate for different blob types (for example, long thin blobs). Note, it is calculated much faster than the maximum Feret diameter. The calculation of this feature can be enabled using MblobControl() with M_LENGTH.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_ANGLE +

Retrieves the angle of the minimum-area bounding box of each blob. The angle is always measured from the X-axis of the pixel coordinate system, to the side of the box from which the width is measured. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_AREA +

Retrieves the area of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_CENTER_X +

Retrieves the X-coordinate of the center of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_CENTER_Y +

Retrieves the Y-coordinate of the center of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_HEIGHT +

Retrieves the height (shortest side) of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_PERIMETER +

Retrieves the perimeter of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_AREA_BOX_WIDTH +

Retrieves the width (longest side) of the minimum-area bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_AREA_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_ANGLE +

Retrieves the angle of the minimum-perimeter bounding box of each blob. The angle is always measured from the X-axis of the pixel coordinate system to the side of the box from which the width is measured. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_AREA +

Retrieves the area of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_CENTER_X +

Retrieves the X-coordinate of the center of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_CENTER_Y +

Retrieves the Y-coordinate of the center of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_HEIGHT +

Retrieves the height (shortest side) of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_PERIMETER +

Retrieves the perimeter of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PERIMETER_BOX_WIDTH +

Retrieves the width (longest side) of the minimum-perimeter bounding box of each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PERIMETER_BOX.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NUMBER_OF_CHAINED_PIXELS +

Retrieves the number of chained pixels in each blob. The calculation of this feature can be enabled using MblobControl() with M_CHAINS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NUMBER_OF_CONVEX_HULL_POINTS +

Retrieves the number of points on the convex perimeter of each blob. A better approximation of convex hull features can be taken by increasing the number of Feret diameters evaluated using MblobControl() with M_NUMBER_OF_FERETS; this has the effect of increasing the number of convex hull points evaluated. The calculation of this feature can be enabled using MblobControl() with M_CONVEX_HULL.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NUMBER_OF_HOLES +

Retrieves the number of holes in each blob. Holes that intersect the edge of the image are not counted (they might not be holes). This value is equal to 1 - M_EULER_NUMBER (1 - (1 - number of holes)) and is therefore a true hole count if calculated using the M_INDIVIDUAL blob identification mode. The calculation of this feature can be enabled using MblobControl() with M_NUMBER_OF_HOLES.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NUMBER_OF_RUNS +

Retrieves the total number of runs in each blob. A run is defined as a horizontal series of consecutive foreground pixels. The calculation of this feature can be enabled using MblobControl() with M_RUNS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_PERIMETER +

Retrieves the total length of edges in each blob (including the edges of any holes), whereby an allowance made for the staircase effect that is produced when diagonal edges are digitized (inside corners are counted as 1.414, rather than 2.0). A single pixel blob (area = 1) has a perimeter of 4.0. The calculation of this feature can be enabled using MblobControl() with M_PERIMETER.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_RECTANGULARITY +

Retrieves the degree to which each blob is similar to a rectangle. To do this, MblobGetResult() calculates the ratio between the blob's area and the product of its minimum Feret diameter and the Feret diameter perpendicular to the minimum Feret diameter.

The three blobs above have the same minimum Feret diameter and the same Feret diameter perpendicular to the minimum Feret diameter. Only their shape and area differs. The rectangularity of the left blob is 1.0, indicating a perfect rectangle. The rectangularity of the middle blob is 0.8 and the rectangularity of the right-most blob is 0.5. The calculation of this feature can be enabled using MblobControl() with M_RECTANGULARITY.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_ROUGHNESS +

Retrieves the roughness and irregularity of a blob is, and is equal to M_PERIMETER / M_CONVEX_PERIMETER. A smooth convex blob will have the minimum roughness of 1.0.

In the example above, the left blob has a roughness of 1.0, the middle blob has a roughness of 1.1, and the right blob has a roughess of 1.5. The calculation of this feature can be enabled using MblobControl() with M_ROUGHNESS.

Even if you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS, this result is calculated and returned in the pixel coordinate system.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_BOX_X_MAX +

Retrieves the extreme right X-coordinate of the world-axis-aligned bounding box, of each blob.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_BOX_X_MIN +

Retrieves the extreme left X-coordinate of the world-axis-aligned bounding box, of each blob.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_BOX_Y_MAX +

Retrieves the extreme bottom Y-coordinate of the world-axis-aligned bounding box, of each blob.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_BOX_Y_MIN +

Retrieves the extreme top Y-coordinate of the world-axis-aligned bounding box, of each blob.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_FERET_X +

Retrieves the dimension of the world-axis-aligned minimum bounding box, along the X-axis of the relative coordinate system (that is, M_WORLD_BOX_X_MAX - M_WORLD_BOX_X_MIN + 1).

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_FERET... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_FERET_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_FERET_Y +

Retrieves the dimension of the world-axis-aligned minimum bounding box, along the Y-axis of the relative coordinate system (that is, M_WORLD_BOX_Y_MAX - M_WORLD_BOX_Y_MIN + 1).

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_FERET... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_FERET_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_X_AT_Y_MAX +

Retrieves the X-coordinate at the maximum Y-coordinate of each blob, of the world-axis-aligned bounding box.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_X_AT_Y_MIN +

Retrieves the X-coordinate at the minimum Y-coordinate of each blob, of the world-axis-aligned bounding box.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_Y_AT_X_MAX +

Retrieves the Y-coordinate at the maximum X-coordinate of each blob, of the world-axis-aligned bounding box.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_WORLD_Y_AT_X_MIN +

Retrieves the Y-coordinate at the minimum X-coordinate of each blob, of the world-axis-aligned bounding box.

The world-axis-aligned bounding box is the bounding box that is aligned with the relative coordinate system's axes.

The calculation of this feature can be enabled using MblobControl() with M_WORLD_BOX.

The M_WORLD_BOX... features are actually calculated in the world coordinate system. If these features were enabled for calculation in MblobControl(), you should have passed MblobCalculate() a calibrated blob identifier image. If an uncalibrated image was passed to MblobCalculate(), these features are the equivalent to the corresponding M_BOX_... features.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_X_MAX_AT_Y_MAX +

Retrieves the maximum X-coordinate at the maximum Y-coordinate of each blob. Together with M_BOX_Y_MAX, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_X_MAX_AT_Y_MIN +

Retrieves the maximum X-coordinate at the minimum Y-coordinate of each blob. Together with M_BOX_Y_MIN, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_X_MIN_AT_Y_MAX +

Retrieves the minimum X-coordinate at the maximum Y-coordinate of each blob. Together with M_BOX_Y_MAX, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_X_MIN_AT_Y_MIN +

Retrieves the minimum X-coordinate at the minimum Y-coordinate of each blob. Together with M_BOX_Y_MIN, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_Y_MAX_AT_X_MAX +

Retrieves the maximum Y-coordinate at the maximum X-coordinate of each blob. Together with M_BOX_X_MAX, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_Y_MAX_AT_X_MIN +

Retrieves the maximum Y-coordinate at the minimum X-coordinate of each blob. Together with M_BOX_X_MIN, this determines one of the contact points of the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_Y_MIN_AT_X_MAX +

Retrieves the minimum Y-coordinate at the maximum X-coordinate of each blob. Together with M_BOX_X_MAX, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_Y_MIN_AT_X_MIN +

Retrieves the minimum Y-coordinate at the minimum X-coordinate of each blob. Together with M_BOX_X_MIN, this determines one of the contact points on the convex perimeter of the blob. The calculation of this feature can be enabled using MblobControl() with M_CONTACT_POINTS.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE

To retrieve the result for a feature with a grayscale definition, and that can be used as a sorting key, select one of the following. Results for these features are only available if both a blob identifier image and a grayscale image were passed to MblobCalculate() (and the corresponding features were selected for calculation). In this case, you must set LabelOrIndex to a specific blob or all blobs, using M_BLOB_INDEX() or M_BLOB_LABEL() for a specific blob, or M_INCLUDED_BLOBS for all blobs.

function map For retrieving results for a feature with a grayscale definition, and that can be used as a sorting key
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_BLOB_CONTRAST +

Retrieves the difference between the maximum and minimum pixel values of a blob. It is equal to M_MAX_PIXEL - M_MIN_PIXEL. The calculation of this feature can be enabled using MblobControl() with M_BLOB_CONTRAST.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MAX_PIXEL +

Retrieves the maximum pixel value found in each blob. The calculation of this feature can be enabled using MblobControl() with M_MAX_PIXEL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MEAN_PIXEL +

Retrieves the mean pixel value in each blob. It is equal to M_SUM_PIXEL / M_AREA. The calculation of this feature can be enabled using MblobControl() with M_MEAN_PIXEL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MIN_PIXEL +

Retrieves the minimum pixel value found in each blob. The calculation of this feature can be enabled using MblobControl() with M_MIN_PIXEL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_SIGMA_PIXEL +

Retrieves the standard deviation of pixel values in each blob. It is equal to , where N = number of pixels and p = pixel value. The calculation of this feature can be enabled using MblobControl() with M_SIGMA_PIXEL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_SUM_PIXEL +

Retrieves the sum of all pixel values in each blob. The calculation of this feature can be enabled using MblobControl() with M_SUM_PIXEL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_SUM_PIXEL_SQUARED +

Retrieves the sum of the squares of each pixel value in each blob. The calculation of this feature can be enabled using MblobControl() with M_SUM_PIXEL_SQUARED.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE

To retrieve the result for a feature that has two different definitions (a binary and a grayscale definition), and that can be used as a sorting key, select one of the following values. If you did not provide both a blob identifier image and a grayscale image, only the binary version was calculated. If you did provide a grayscale image, both versions were calculated, unless otherwise specified. You must set LabelOrIndex to a specific blob or all blobs, using M_BLOB_INDEX() or M_BLOB_LABEL() for a specific blob, or M_INCLUDED_BLOBS for all blobs.

function map For retrieving results for a result of a feature that has two different definitions, and that can be used as a sorting key
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_AXIS_PRINCIPAL_ANGLE +

Retrieves the angle, in degrees, at which each blob has the least moment of inertia. When the blob identifier image is calibrated, this feature is calculated in calibrated units; otherwise, it is calculated in pixel units. For elongated blobs, the angle of the blobs' longest length is taken. The result is calculated as:

The result is always between -90° and +90°, relative to the output coordinate system specified using MblobControl() with M_RESULT_OUTPUT_UNITS. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

An angle interpreted with respect to the pixel coordinate system is always measured counter-clockwise. For information on the angle's direction of rotation when interpreting the angle with respect to the relative coordinate system, see the Angle convention in MIL subsection of the Working with real-world units section of Chapter 26: Calibrating your camera setup.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_AXIS_SECONDARY_ANGLE +

Retrieves the angle perpendicular to M_AXIS_PRINCIPAL_ANGLE of each blob, in degrees. When the blob identifier image is calibrated, this feature is calculated in calibrated units; otherwise, it is calculated in pixel units. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER. The result is always between -90° and +90°, relative to the output coordinate system specified using MblobControl() with M_RESULT_OUTPUT_UNITS.

An angle interpreted with respect to the pixel coordinate system is always measured counter-clockwise. For information on the angle's direction of rotation when interpreting the angle with respect to the relative coordinate system, see the Angle convention in MIL subsection of the Working with real-world units section of Chapter 26: Calibrating your camera setup.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CENTER_OF_GRAVITY_X +

Retrieves the X-position of the center of gravity of each blob. The grayscale version is M_MOMENT_X1_Y0 / M_SUM_PIXEL. The binary version uses M_AREA instead of M_SUM_PIXEL. The calculation of this feature can be enabled using MblobControl() with M_CENTER_OF_GRAVITY.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_CENTER_OF_GRAVITY_Y +

Retrieves the Y-position of the center of gravity of each blob. The grayscale version is M_MOMENT_X0_Y1 / M_SUM_PIXEL. The binary version uses M_AREA instead of M_SUM_PIXEL. The calculation of this feature can be enabled using MblobControl() with M_CENTER_OF_GRAVITY.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_AT_PRINCIPAL_AXIS_ANGLE +

Retrieves the Feret diameter at the principal axis of each blob. The calculation of this feature can be enabled using MblobControl() with M_FERET_AT_PRINCIPAL_AXIS_ANGLE.

The principal axis is the axis at which the blob has the least moment of inertia. Also, if the blob is symmetrical, the principal axis is aligned with the blob's axis of symmetry.

You can retrieve the angle of the principal axis, by calling MblobGetResult() with M_AXIS_PRINCIPAL_ANGLE.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_AT_SECONDARY_AXIS_ANGLE +

Retrieves the Feret diameter at the secondary axis of each blob. The calculation of this feature can be enabled using MblobControl() with M_FERET_AT_SECONDARY_AXIS_ANGLE.

The secondary axis is perpendicular to the principal axis. You can retrieve the angle of the secondary axis by calling MblobGetResult() with M_AXIS_SECONDARY_ANGLE.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into world units, taking into account distortions as best as possible.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_FERET_PRINCIPAL_AXIS_ELONGATION +

Retrieves the ratio between the Feret diameter at the principal axis and the Feret diameter at the secondary axis of each blob. It is equal to M_FERET_AT_PRINCIPAL_AXIS_ANGLE / M_FERET_AT_SECONDARY_AXIS_ANGLE. The calculation of this feature can be enabled using MblobControl() with M_FERET_PRINCIPAL_AXIS_ELONGATION.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_CENTRAL_X0_Y2 +

Retrieves the central moment of each blob where the order of X equals 0 and the order of Y equals 2. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This central moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments), yi = its Y-coordinate, = the weighted mean of yi .

The weighted mean is the first order ordinary moment divided by the sum of the pixel values (M_SUM_PIXEL for grayscale definitions, M_AREA for binary definitions).

For central moments, coordinates are relative to each blob's center of gravity, as opposed to ordinary moments, which use coordinates that are relative to the image origin (top-left corner).

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_CENTRAL_X1_Y1 +

Retrieves the central moment of each blob where the order of X equals 1 and the order of Y equals 1. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This central moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments), xi = its X-coordinate and, yi = its Y-coordinate, = the weighted mean of xi , and = the weighted mean of yi .

The weighted mean is the first order ordinary moment divided by the sum of the pixel values (M_SUM_PIXEL for grayscale definitions, M_AREA for binary definitions).

For central moments, coordinates are relative to each blob's center of gravity, as opposed to ordinary moments, which use coordinates that are relative to the image origin (top-left corner).

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_CENTRAL_X2_Y0 +

Retrieves the central moment of each blob where the order of X equals 2 and the order of Y equals 0. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This central moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments), xi = its X-coordinate, = the weighted mean of xi .

The weighted mean is the first order ordinary moment divided by the sum of the pixel values (M_SUM_PIXEL for grayscale definitions, M_AREA for binary definitions).

For central moments, coordinates are relative to each blob's center of gravity, as opposed to ordinary moments, which use coordinates that are relative to the image origin (top-left corner).

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_GENERAL +

Retrieves the moment calculation, based on the settings specified using MblobControl() with M_MOMENT_GENERAL_MODE, M_MOMENT_GENERAL_ORDER_X, and M_MOMENT_GENERAL_ORDER_Y. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_GENERAL.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_X0_Y1 +

Retrieves the ordinary moment of each blob where the order of X equals 0 and the order of Y equals 1. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_FIRST_ORDER.

This ordinary moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments) and yi = its Y-coordinate.

This calculation returns the mean of Y for each blob. Therefore, in order to calculate the weighted arithmetic mean about Y, take the result returned by the calculation of this feature and divide it by the M_SUM_PIXEL feature (for a grayscale definition), for a binary definition divide it by the number of pixels in the blob (M_AREA).

For ordinary moments, coordinates are relative to the image origin (top-left corner), as opposed to central moments, which use coordinates that are relative to each blob's center of gravity.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_X0_Y2 +

Retrieves the ordinary moment of each blob where the order of X equals 0 and the order of Y equals 2. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This ordinary moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments) and yi = its Y-coordinate.

For ordinary moments, coordinates are relative to the image origin (top-left corner), as opposed to central moments, which use coordinates that are relative to each blob's center of gravity.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_X1_Y0 +

Retrieves the ordinary moment of each blob where the order of X equals 1 and the order of Y equals 0. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_FIRST_ORDER.

This ordinary moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments) and xi = its X-coordinate.

This calculation returns the mean of X for each blob. Therefore, in order to calculate the weighted arithmetic mean about X, take the result returned by the calculation of this feature and divide it by the M_SUM_PIXEL feature (for a grayscale definition), for a binary definition divide it by the number of pixels in the blob (M_AREA).

For ordinary moments, coordinates are relative to the image origin (top-left corner), as opposed to central moments, which use coordinates that are relative to each blob's center of gravity.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_X1_Y1 +

Retrieves the ordinary moment of each blob where the order of X equals 1 and the order of Y equals 1. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This ordinary moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments), xi = its X-coordinate and yi = its Y-coordinate.

For ordinary moments, coordinates are relative to the image origin (top-left corner), as opposed to central moments, which use coordinates that are relative to each blob's center of gravity.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_MOMENT_X2_Y0 +

Retrieves the ordinary moment of each blob where the order of X equals 2 and the order of Y equals 0. The calculation of this feature can be enabled using MblobControl() with M_MOMENT_SECOND_ORDER.

This ordinary moment is defined as , where i runs from 1 to the number of pixels in the blob, where n is the number of pixels in the blob, pi = value of a pixel (always 1 for binary moments) and xi = its X-coordinate.

For ordinary moments, coordinates are relative to the image origin (top-left corner), as opposed to central moments, which use coordinates that are relative to each blob's center of gravity.

This result is not affected by the setting of M_RESULT_OUTPUT_UNITS.

Results are only available in pixel units.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE

You can add one of the following values to the above-mentioned values to specify to retrieve the contact points of the Feret.

The calculation of Feret contact points (M_FERET_CONTACT_POINTS) must have been enabled to use these combination constants.

function map For retrieving Feret contact points
Click to summarize
Combination value
Description
Click to summarize M_FERET_CONTACT_POINTS_X1

Retrieves the X-coordinate for the first contact point of the Feret diameter of each blob.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Click to summarize M_FERET_CONTACT_POINTS_X2

Retrieves the X-coordinate for the second contact point of the Feret diameter of each blob.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Click to summarize M_FERET_CONTACT_POINTS_Y1

Retrieves the Y-coordinate for the first contact point of the Feret diameter of each blob.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)
Click to summarize M_FERET_CONTACT_POINTS_Y2

Retrieves the Y-coordinate for the second contact point of the Feret diameter of each blob.

If you requested to retrieve results in world units with M_RESULT_OUTPUT_UNITS and the calculation was performed on appropriate buffers, the results returned are transformed into the relative coordinate system, taking into account distortions as best as possible.

(summarize)

You must add one of the following values to the above-mentioned values to set whether the results should be returned for the binary or grayscale definition of the selected feature.

function map For features that have two definitions
Click to summarize
Combination value
Description
Click to summarize M_BINARY +

Retrieves the result for the binary definition of the selected feature.

Click to summarize M_GRAYSCALE +

Retrieves the result for the grayscale definition of the selected feature.

This is the default value.

(summarize)

You can add the following value to the above-mentioned values to specify whether a result is available.

function map For determining whether results are available
Click to summarizeResultType Description
ResultArrayPtr
- Possible values returned
Click to summarize M_AVAILABLE

Retrieves whether a result is available to be returned.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_NULL

Specifies that the result is not available to be retrieved.

Click to summarize Value != 0

Specifies that the result is available to be retrieved.

You can add the following value to the above-mentioned values to determine the required array size (number of elements) to store the returned values.

function map For determining the required array size (number of elements) to store the returned values
Click to summarizeResultType combination value Description
ResultArrayPtr
- Possible values returned
Click to summarize M_NB_ELEMENTS

Retrieves the required array size (number of elements) to store the returned values.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE MORE

You can add one of the following values to the above-mentioned values to set the requested results to a data type.

Note: In C++, when using a standard vector (std::vector) instead of an array, the values listed in this combination table must not be used. If you need to use a specific data type, instantiate the vector with the necessary data type.

function map For specifying a data type
Click to summarize
ResultType
Description
ResultArrayPtr
- Possible values returned
Click to summarize M_TYPE_MIL_DOUBLE

Casts the requested results to a MIL_DOUBLE.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_DOUBLE  |  array of type MIL_DOUBLE [optionally, in C++: a reference to a std::vector<MIL_DOUBLE> ] MORE
Click to summarize M_TYPE_MIL_FLOAT

Casts the requested results to a MIL_FLOAT.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_FLOAT  |  array of type MIL_FLOAT [optionally, in C++: a reference to a std::vector<MIL_FLOAT> ] MORE
Click to summarize M_TYPE_MIL_INT

Casts the requested results to a MIL_INT.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_INT  |  array of type MIL_INT [optionally, in C++: a reference to a std::vector<MIL_INT> ] MORE
Click to summarize M_TYPE_MIL_INT16

Casts the requested results to a MIL_INT16.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_INT16  |  array of type MIL_INT16 [optionally, in C++: a reference to a std::vector<MIL_INT16> ] MORE
Click to summarize M_TYPE_MIL_INT32

Casts the requested results to a MIL_INT32.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_INT32  |  array of type MIL_INT32 [optionally, in C++: a reference to a std::vector<MIL_INT32> ] MORE
Click to summarize M_TYPE_MIL_INT64

Casts the requested results to a MIL_INT64.

(summarize)
Expand data type infoCollapse data type info ResultArrayPtr extra info
Data type info: Data type: address of a MIL_INT64  |  array of type MIL_INT64 [optionally, in C++: a reference to a std::vector<MIL_INT64> ] MORE
Compilation information
Header Include mil.h.
Library Use mil.lib; milblob.lib.
DLL Requires mil.dll; milblob.dll.
DEFAULT NUMBER MAX LABEL VALUE GENERAL INCLUDED BLOBS BLOB IDENTIFICATION MODE DEFAULT INDIVIDUAL LABELED LABELED TOUCHING WHOLE IMAGE CALCULATION TYPE BINARY BINARY AND GRAYSCALE NOT CALCULATED MAX BLOBS END FALSE TRUE MAX LABEL VALUE NUMBER TIMEOUT END FALSE TRUE TOTAL NUMBER OF CHAINED PIXELS TOTAL NUMBER OF CONVEX HULL POINTS TOTAL NUMBER OF FERETS TOTAL NUMBER OF RUNS BLOB INCLUSION STATE EXCLUDED INCLUDED CHAIN INDEX CHAIN X CHAIN Y CONVEX HULL X CONVEX HULL XY PACKED CONVEX HULL Y FERET DIAMETERS INDEX VALUE MIN AREA BOX Xn MIN AREA BOX Yn MIN PERIMETER BOX Xn MIN PERIMETER BOX Yn NUMBER OF FERETS RUN LENGTH RUN X RUN Y AREA BLOB TOUCHING IMAGE BORDERS NO YES BOX AREA BOX ASPECT RATIO BOX FILL RATIO BOX X MAX BOX X MIN BOX Y MAX BOX Y MIN BREADTH COMPACTNESS CONVEX HULL AREA CONVEX HULL COG X CONVEX HULL COG Y CONVEX HULL FILL RATIO CONVEX HULL PERIMETER CONVEX PERIMETER ELONGATION EULER NUMBER FERET ELONGATION FERET GENERAL FERET MAX ANGLE FERET MAX DIAMETER FERET MAX DIAMETER ELONGATION FERET MEAN DIAMETER FERET MIN ANGLE FERET MIN DIAMETER FERET MIN DIAMETER ELONGATION FERET PERPENDICULAR TO MAX DIAMETER FERET PERPENDICULAR TO MIN DIAMETER FERET X FERET Y FIRST POINT X FIRST POINT Y INTERCEPT 0 INTERCEPT 45 INTERCEPT 90 INTERCEPT 135 LABEL VALUE LENGTH MIN AREA BOX ANGLE MIN AREA BOX AREA MIN AREA BOX CENTER X MIN AREA BOX CENTER Y MIN AREA BOX HEIGHT MIN AREA BOX PERIMETER MIN AREA BOX WIDTH MIN PERIMETER BOX ANGLE MIN PERIMETER BOX AREA MIN PERIMETER BOX CENTER X MIN PERIMETER BOX CENTER Y MIN PERIMETER BOX HEIGHT MIN PERIMETER BOX PERIMETER MIN PERIMETER BOX WIDTH NUMBER OF CHAINED PIXELS NUMBER OF CONVEX HULL POINTS NUMBER OF HOLES NUMBER OF RUNS PERIMETER RECTANGULARITY ROUGHNESS WORLD BOX X MAX WORLD BOX X MIN WORLD BOX Y MAX WORLD BOX Y MIN WORLD FERET X WORLD FERET Y WORLD X AT Y MAX WORLD X AT Y MIN WORLD Y AT X MAX WORLD Y AT X MIN X MAX AT Y MAX X MAX AT Y MIN X MIN AT Y MAX X MIN AT Y MIN Y MAX AT X MAX Y MAX AT X MIN Y MIN AT X MAX Y MIN AT X MIN BLOB CONTRAST MAX PIXEL MEAN PIXEL MIN PIXEL SIGMA PIXEL SUM PIXEL SUM PIXEL SQUARED AXIS PRINCIPAL ANGLE AXIS SECONDARY ANGLE CENTER OF GRAVITY X CENTER OF GRAVITY Y FERET AT PRINCIPAL AXIS ANGLE FERET AT SECONDARY AXIS ANGLE FERET PRINCIPAL AXIS ELONGATION MOMENT CENTRAL X0 Y2 MOMENT CENTRAL X1 Y1 MOMENT CENTRAL X2 Y0 MOMENT GENERAL MOMENT X0 Y1 MOMENT X0 Y2 MOMENT X1 Y0 MOMENT X1 Y1 MOMENT X2 Y0 FERET CONTACT POINTS X1 FERET CONTACT POINTS X2 FERET CONTACT POINTS Y1 FERET CONTACT POINTS Y2 BINARY GRAYSCALE AVAILABLE NULL NB ELEMENTS TYPE MIL DOUBLE TYPE MIL FLOAT TYPE MIL INT TYPE MIL INT16 TYPE MIL INT32 TYPE MIL INT64 NOT CALCULATED BINARY AND GRAYSCALE INCLUDED BLOBS GENERAL DEFAULT INCLUDED BLOBS GENERAL DEFAULT