Skip to content

set_fuzzy_measureSetFuzzyMeasureSetFuzzyMeasureset_fuzzy_measureT_set_fuzzy_measureπŸ”—

Short descriptionπŸ”—

set_fuzzy_measureSetFuzzyMeasureSetFuzzyMeasureset_fuzzy_measureT_set_fuzzy_measure β€” Specify a fuzzy function.

SignatureπŸ”—

set_fuzzy_measure( measure MeasureHandle, string SetType, function_1d Function )void SetFuzzyMeasure( const HTuple& MeasureHandle, const HTuple& SetType, const HTuple& Function )static void HOperatorSet.SetFuzzyMeasure( HTuple measureHandle, HTuple setType, HTuple function )def set_fuzzy_measure( measure_handle: HHandle, set_type: str, function: Sequence[Union[float, int]] ) -> None

Herror T_set_fuzzy_measure( const Htuple MeasureHandle, const Htuple SetType, const Htuple Function )

void HMeasure::SetFuzzyMeasure( const HString& SetType, const HFunction1D& Function ) const

void HMeasure::SetFuzzyMeasure( const char* SetType, const HFunction1D& Function ) const

void HMeasure::SetFuzzyMeasure( const wchar_t* SetType, const HFunction1D& Function ) const (Windows only)

void HMeasure.SetFuzzyMeasure( string setType, HFunction1D function )

DescriptionπŸ”—

set_fuzzy_measureSetFuzzyMeasure specifies a fuzzy function passed in Functionfunctionfunction. The specified fuzzy functions enable fuzzy_measure_posFuzzyMeasurePos and fuzzy_measure_pairsFuzzyMeasurePairs / fuzzy_measure_pairingFuzzyMeasurePairing to evaluate and select the detected edge candidates. For this purpose, weighting characteristics for different edge features can be defined by one function each. Such a specified feature is called fuzzy set. Specifying no function for a fuzzy set means not to use this feature for the final edge evaluation. Setting a second fuzzy function to a set means to discard the first defined function and replace it by the second one. A previously defined fuzzy function can be discarded completely by reset_fuzzy_measureResetFuzzyMeasure.

For an explanation of the concept of 1D measuring see the introduction of chapter 1D Measuring.

Functions for five different fuzzy set types selected by the SetTypesetTypeset_type parameter can be defined, the sub types of a set being mutual exclusive:

  • 'contrast'"contrast" will use the fuzzy function to evaluate the amplitudes of the edge candidates. When extracting edge pairs, the fuzzy evaluation is obtained by the geometric average of the fuzzy contrast scores of both edges.

  • The fuzzy function of 'position'"position" evaluates the distance of each edge candidate to the reference point of the measure object, generated by gen_measure_arcGenMeasureArc or gen_measure_rectangle2GenMeasureRectangle2. The reference point is located at the beginning whereas 'position_center'"position_center" or 'position_end'"position_end" sets the reference point to the middle or the end of the one-dimensional gray value profile instead. If the fuzzy position evaluation depends on the position of the object along the profile, 'position_first_edge'"position_first_edge" / 'position_last_edge'"position_last_edge" sets the reference point at the position of the first/last extracted edge. When extracting edge pairs the position of a pair is referenced by the geometric average of the fuzzy position scores of both edges.

  • Similar to 'position'"position", 'position_pair'"position_pair" evaluates the distance of each edge pair to the reference point of the measure object. The position of a pair is defined by the center point between both edges. The object’s reference can be set by 'position_pair_center'"position_pair_center", 'position_pair_end'"position_pair_end" and 'position_first_pair'"position_first_pair", 'position_last_pair'"position_last_pair", respectively. Contrary to 'position'"position", this set is only used by fuzzy_measure_pairsFuzzyMeasurePairs/fuzzy_measure_pairingFuzzyMeasurePairing.

  • 'size'"size" denotes a fuzzy set that evaluates the normed distance of the two edges of a pair in pixels. This set is only used by fuzzy_measure_pairsFuzzyMeasurePairs/fuzzy_measure_pairingFuzzyMeasurePairing. Specifying an upper bound for the size by terminating the function with a corresponding fuzzy value of 0.0 will speed up fuzzy_measure_pairsFuzzyMeasurePairs / fuzzy_measure_pairingFuzzyMeasurePairing because not all possible pairs need to be considered.

  • 'gray'"gray" sets a fuzzy function to weight the mean projected gray value between two edges of a pair. This set is only used by fuzzy_measure_pairsFuzzyMeasurePairs / fuzzy_measure_pairingFuzzyMeasurePairing.

A fuzzy function is defined as a piecewise linear function by at least two pairs of values, sorted in an ascending order by their x value. The x values represent the edge feature and must lie within the parameter space of the set type, i.e., in case of 'contrast'"contrast" and 'gray'"gray" feature and, e.g., byte images within the range 0.0 <= x <= 255.0. In case of 'size'"size" x has to satisfy 0.0 <= x whereas in case of 'position'"position" x can be any real number. The y values of the fuzzy function represent the weight of the corresponding feature value and have to satisfy the range of 0.0 <= y <= 1.0. Outside of the function’s interval, defined by the smallest and the greatest x value, the y values of the interval borders are continued constantly. Such Fuzzy functions can be generated by create_funct_1d_pairsCreateFunct1dPairs.

If more than one set is defined, fuzzy_measure_posFuzzyMeasurePos / fuzzy_measure_pairsFuzzyMeasurePairs / fuzzy_measure_pairingFuzzyMeasurePairing yield the overall fuzzy weighting by the geometric middle of the weights of each set.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

This operator modifies the state of the following input parameter:

During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.

ParametersπŸ”—

MeasureHandlemeasureHandlemeasure_handle (input_control, state is modified) measure β†’ (handle)HTuple (HHandle)HMeasure, HTuple (IntPtr)HHandleHtuple (handle)

Measure object handle.

SetTypesetTypeset_type (input_control) string β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Selection of the fuzzy set.

Default: 'contrast'"contrast"
List of values: 'contrast', 'gray', 'position', 'position_center', 'position_end', 'position_first_edge', 'position_first_pair', 'position_last_edge', 'position_last_pair', 'position_pair_center', 'position_pair_end', 'size'"contrast", "gray", "position", "position_center", "position_end", "position_first_edge", "position_first_pair", "position_last_edge", "position_last_pair", "position_pair_center", "position_pair_end", "size"

Functionfunctionfunction (input_control) function_1d β†’ (real / integer)HTuple (double / Hlong)HFunction1D, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)

Fuzzy function.

ExampleπŸ”—

(HDevelop)


* how to use a fuzzy function
* ...
gen_measure_rectangle2 (50, 100, 0, 200, 100, 512, 512, 'nearest_neighbor', \
                        MeasureHandle)
* create a generalized fuzzy function to evaluate edge pairs
* * (30% uncertainty).
create_funct_1d_pairs ([0.7,1.0,1.3], [0.0,1.0,0.0], SizeFunction)
* and transform it to expected size of 13.45 pixels
transform_funct_1d (SizeFunction, [1.0,0.0,13.45,0.0], TransformedFunction)
set_fuzzy_measure (MeasureHandle, 'size', TransformedFunction)

fuzzy_measure_pairs (Image, MeasureHandle, 1, 30, 0.5, 'all', RowEdgeFirst, \
                     ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, \
                     ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, \
                     ColumnEdgeCenter, FuzzyScore, IntraDistance, \
                     InterDistance)

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

gen_measure_arcGenMeasureArc, gen_measure_rectangle2GenMeasureRectangle2, create_funct_1d_pairsCreateFunct1dPairs, transform_funct_1dTransformFunct1d

Possible successors

fuzzy_measure_posFuzzyMeasurePos, fuzzy_measure_pairsFuzzyMeasurePairs

Alternatives

set_fuzzy_measure_norm_pairSetFuzzyMeasureNormPair

See also

reset_fuzzy_measureResetFuzzyMeasure

ModuleπŸ”—

1D Metrology