名称
set_fuzzy_measure - 指定一个模糊函数。
用法
set_fuzzy_measure( : : MeasureHandle, SetType, Function : )
描述
set_fuzzy_measure指定在函数中传递的模糊函数。 指定的模糊函数使得fuzzy_measure_pos和fuzzy_measure_pairs / fuzzy_measure_pairing能够评估和选择检测到的候选边缘。 为此,不同边缘特征的加权特征可以由一个函数来定义。 这种特定的特征被称为模糊集合。 模糊集没有指定的功能意味着不使用此功能进行最终边缘评估。 将第二个模糊函数设置意味着放弃第一个定义的函数并将其替换为第二个函数。 以前定义的模糊函数可以通过reset_fuzzy_measure完全丢弃。
可以定义由SetType参数选择的五种不同模糊集合类型的函数,一个集合的子类型是互斥的:
'contrast'将使用模糊函数来评估候选边缘的幅度。 在提取边缘对时,通过两边的模糊对比度评分的几何平均来获得模糊评估。
'position'的模糊函数评估由gen_measure_arc或gen_measure_rectangle2生成的每个候选边缘到度量对象的参考点的距离。 参考点位于开始位置,而“position_center”或“position_end”将参考点设置为一维灰度值轮廓的中间或末端。 如果模糊位置评估取决于物体沿着轮廓的位置,‘position_first_edge’/‘position_last_edge’将参考点设置在第一个/最后提取的边缘的位置处。 当提取边缘对时,边缘对的位置被两边的模糊位置分数的几何平均值所引用。
与'position'相似,'position_pair'计算每个边对与measure对象的参考点之间的距离。 一个边缘对的位置由两个边缘之间的中心点定义。 对象的参考点可以分别由'position_pair_center','position_pair_end'和'position_first_pair','position_last_pair'来设置。 与'position'不同的是,该设置仅由fuzzy_measure_pairs / fuzzy_measure_pairing使用。
'size'表示一个模糊设置,该设置为以像素为单位评估一对的两条边的规定距离。 该集合仅由fuzzy_measure_pairs / fuzzy_measure_pairing使用。 通过以相应的模糊值0.0终止函数来指定大小的上限将加快fuzzy_measure_pairs / fuzzy_measure_pairing,因为不需要考虑所有可能的对。
'gray'设置模糊函数来对一对的两个边缘之间的平均投影灰度值进行加权。 该集合仅由fuzzy_measure_pairs / fuzzy_measure_pairing使用。
一个模糊函数被定义为一个分段线性函数,由至少两对值按升序按x值排序。 x值表示边缘特征,并且必须位于设置类型的参数空间内,即,在'contrast'和'gray'特征的情况下,例如在0.0≤x≤255.0的范围内的byte图像。 'size'x必须满足0.0 <= x,而 'position'x可以是任何实数。 模糊函数的y值表示相应特征值的权重,并且必须满足0.0 <= y <= 1.0。 在由最小和最大x值定义的函数间隔之外,间隔边界外的y值仍连续。 这样的模糊函数可以由create_funct_1d_pairs生成。
如果定义了多个集合,则fuzzy_measure_pos / fuzzy_measure_pairs / fuzzy_measure_pairing通过每个集合的权重的几何中间产生整体模糊加权。
并行
● 多线程类型:可重入(与非独占算子并行运行)。
● 多线程范围:全局(可以从任何线程调用)。
● 不并行处理。
该算子修改以下输入参数的状态:
MeasureHandle
如果没有全局同步,此参数的值可能不会在多个线程之间共享。
参数
SetType (input_control) string → (string)
模糊集合的选择。: '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'
Function (input_control) function_1d → (real / integer)
模糊函数。
示例(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', SizeFunction) fuzzy_measure_pairs (Image, MeasureHandle, 1, 30, 0.5, 'all', RowEdgeFirst, \ ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, \ ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, \ ColumnEdgeCenter, FuzzyScore, IntraDistance, \ InterDistance)
Possible Predecessors
gen_measure_arc, gen_measure_rectangle2, create_funct_1d_pairs, transform_funct_1d
Possible Successors
fuzzy_measure_pos, fuzzy_measure_pairs
Alternatives
set_fuzzy_measure_norm_pair
See also
reset_fuzzy_measure
模块
1D Metrology
HDevelop例程
inspect_bottle_label_360_degree.hdev 将一个瓶子的四个图像组合成拼接图像,显示瓶子的展开标签
fuzzy_measure_switch.hdev 用一个模糊度量对象确定一个开关引脚的宽度和距离