Register a measurement function
#include "dip_measurement.h"
dip_Error dip_MeasurementFeatureRegister ( registry )
This function registers a measurement function, specified by registry. Once a function is registered, it can be used through the Measure function by specifying registry.id.rtid as the measurement ID. registry contains pointers to a series of functions related to making the measurement, and contains information on how these functions should be called. See below for more information.
Data type | Name | Description |
dip_MeasurementFeatureRegistry | registry | Registry |
The dip_MeasurementFeatureRegistry structure contains the following fields:
Data type | Name | Description |
dip_Identifier | id | Unique identifier |
dipf_FeatureMeasureFunction | type | Type of function measure points to |
dip_FeatureCreateFunction | create | Function pointer, see FeatureCreateFunction |
dip_FeatureComposeFunction | compose | Function pointer, see FeatureComposeFunction |
dip_FeatureMeasureFunction | measure | Union of function pointers |
dip_FeatureValueFunction | value | Function pointer, see FeatureValueFunction |
dip_FeatureDescriptionFunction | description | Function pointer, see FeatureDescriptionFunction |
dip_FeatureConvertFunction | convert | Function pointer, see FeatureConvertFunction |
dip_int | iterations | Currently ignored (set to 1) |
dip_Boolean | needIntensityIm | Whether or not a grey-value image is needed |
dip_Identifier is a struct with two values: uuid and rtid. rtid is of type dip_int, and needs to be set to a unique number (use GetUniqueNumber for that). uuid is curently ignored, but should be set to a universally unique number by using the time, date and processor ID at the time of writing the code. The UNIX command uuidgen should be used for this.
measure points to the main measuring function, and can be of four different types, based on how it does the measuring. measure is a union with the following fields:
Data type | Name | Description |
dip_FeatureLineFunction | line | Takes one image line at the time, see FeatureLineFunction |
dip_FeatureImageFunction | image | Takes the whole image at once, see FeatureImageFunction |
dip_FeatureChainCodeFunction | chaincode | Takes one chain code at the time, see FeatureChainCodeFunction |
dip_FeatureConvHullFunction | convhull | Takes one convex polygon at the time, see FeatureConvHullFunction |
dip_FeatureCompositeFunction | composite | Combines the results of various other measurements, see FeatureCompositeFunction |
The type flag should match the function type pointed to, and can be one of the following:
Name | Description |
DIP_MSR_FUNCTION_LINE_BASED | measure.line is set |
DIP_MSR_FUNCTION_IMAGE_BASED | measure.image is set |
DIP_MSR_FUNCTION_CHAINCODE_BASED | measure.chaincode is set |
DIP_MSR_FUNCTION_CONVHULL_BASED | measure.convhull is set |
DIP_MSR_FUNCTION_COMPOSITE | measure.composite is set |
create points to a function that allocates and initialises any data before the measurement can start. value points to a function that returns the measurement result (called by MeasurementObjectValue). description points to a function that returns information on the measurement performed (called by MeasurementFeatureDescription). convert points to a function that copies the collected measurement data to a second measurement object (called MeasurementFeatureConvert). Finally, the compose element points to a function that returns the list of measurement IDs that the DIP_MSR_FUNCTION_COMPOSITE function depends on. This value is ignored for other types of measurement functions.
needIntensityIm should be set if the measurement function expects a grey-value input as well as the labeled image.
Measure, MeasurementFeatureRegistryList, MeasurementFeatureRegistryGet, MeasurementFeatureRegistryFeatureDescription, MeasurementFeatureRegistryFeatureNeedsIntensityImage, MeasurementFeatureValid, MeasurementFeatureDescription, MeasurementObjectData, MeasurementObjectValue, MeasurementFeatureConvert, FeatureLineFunction, FeatureImageFunction, FeatureChainCodeFunction, FeatureConvHullFunction, FeatureCompositeFunction, FeatureCreateFunction, FeatureComposeFunction, FeatureValueFunction, FeatureConvertFunction, FeatureDescriptionFunction