HALCON算子get_metrology_object_fuzzy_param全解析
一、算子核心定位
get_metrology_object_fuzzy_param是HALCON 2D计量(2D Metrology)模块中读取计量对象模糊测量参数的专用算子,区别于查询模型全局参数的get_metrology_model_param和查询计量对象普通参数的get_metrology_object_param,该算子专门用于获取计量模型中指定计量对象的模糊测量相关配置(如模糊阈值、对比度/位置模糊函数)。其核心价值在于验证模糊参数的设置是否生效,或在模糊测量后读取配置以辅助结果解析(如判断测量结果是否受模糊阈值影响)。
二、算法核心原理
get_metrology_object_fuzzy_param的核心逻辑是精准定位+参数匹配读取,具体流程如下:
- 通过输入的
MetrologyHandle定位目标计量模型的内存数据区; - 根据
Index筛选要查询的计量对象(单个对象/所有对象); - 按
GenParamName中的参数名(支持多个)依次匹配对应计量对象的模糊参数配置项; - 读取配置项的数值,并按
GenParamName的顺序将结果存入GenParamValue返回; - 整个过程为只读操作,不修改计量模型或对象的任何状态,且支持多线程安全调用。
三、参数全详解
(一)输入参数(Input Parameters)
| 参数名 | 类型 | 功能说明 | 默认值 | 合法取值 | 关键注意事项 |
|---|---|---|---|---|---|
| MetrologyHandle | 计量模型句柄(metrology_model → handle) | 要查询模糊参数的目标计量模型句柄 | - | 合法、未释放的计量模型句柄 | 句柄无效(如已关闭、空句柄、非计量模型句柄)会直接抛出异常 |
| Index | 计量对象索引(integer(-array) → string/integer) | 指定查询哪个/哪些计量对象的模糊参数 | 'all' | 1.'all':查询模型中所有计量对象的模糊参数2. 非负整数(如0、1、2):查询指定索引的单个计量对象 | 1. 索引需在模型现有计量对象范围内(如模型只有2个对象,传入3会触发异常) 2. 支持数组形式(如 [0,1]),但通常仅用'all'或单个整数 |
| GenParamName | 模糊参数名(attribute.name-array → string) | 要查询的模糊参数名称(支持多个) | 'fuzzy_thresh' | 'fuzzy_thresh'、'function_contrast'、'function_position' | 1. 字符串大小写敏感,传入其他值会触发参数异常 2. 支持数组形式(如 ['fuzzy_thresh','function_contrast']),返回值会按此顺序排列 |
(二)输出参数(Output Parameters)
| 参数名 | 类型 | 功能说明 | 各参数名对应的返回值详情 |
|---|---|---|---|
| GenParamValue | 模糊参数值(attribute.value-array → real/integer) | 对应GenParamName的模糊参数值,顺序与GenParamName完全一致 | 1.'fuzzy_thresh':实数,模糊阈值,等价于fuzzy_measure_pos算子的FuzzyThresh参数,用于控制模糊测量的阈值2. 'function_contrast':实数/整数,对比度模糊函数配置,等价于set_fuzzy_measure算子中SetType='contrast'时的模糊函数参数3. 'function_position':整数,位置模糊函数类型标识,返回最后设置的位置模糊函数类型(如对应'function_position'/'function_position_center'等类型的数值编码) |
四、使用关键注意事项
- 多参数批量查询:
GenParamName支持传入参数名数组(如['fuzzy_thresh','function_position']),GenParamValue会按相同顺序返回对应参数值,无需多次调用算子; - Index的有效性:若传入整数索引,需确保该索引在计量模型的有效范围内(可通过
get_metrology_object_num_instances先查询模型中对象数量); - 参数默认值:若未通过
set_metrology_object_fuzzy_param主动设置过模糊参数,算子会返回各参数的HALCON默认值(如'fuzzy_thresh'默认值为0.5); - 多线程特性:
- 多线程类型:可重入(可与非排他算子并行运行);
- 多线程范围:全局(可从任意线程调用);
- 处理方式:单线程读取,无并行优化;
- 返回值规则:参数全部合法时返回
2 (H_MSG_TRUE),任意参数非法(如无效句柄、错误参数名)会抛出异常。
五、算子调用链路
(一)前置算子(Possible Predecessors)
| 算子名称 | 核心作用 | 关联场景 |
|---|---|---|
set_metrology_object_fuzzy_param | 为计量对象设置模糊参数 | 先配置模糊参数,再调用本算子验证设置是否生效 |
get_metrology_object_indices | 获取计量模型中所有计量对象的索引 | 先确认有效索引,再精准查询指定对象的模糊参数 |
(二)后置算子(Possible Successors)
| 算子名称 | 核心作用 | 关联场景 |
|---|---|---|
set_metrology_object_fuzzy_param | 修改计量对象的模糊参数 | 读取当前参数后,根据需求调整模糊阈值/模糊函数 |
apply_metrology_model | 执行计量测量(含模糊测量) | 验证模糊参数后,基于配置执行实际的模糊测量任务 |
六、与相似算子的核心差异
| 算子名称 | 核心区别 | 适用场景 |
|---|---|---|
get_metrology_object_fuzzy_param | 查询计量对象的模糊测量参数(阈值、对比度/位置模糊函数) | 模糊测量场景下,验证对象的模糊配置 |
get_metrology_object_param | 查询计量对象的普通参数(如Sigma、振幅阈值、测量区域尺寸) | 非模糊测量场景,验证对象的基础测量配置 |
get_metrology_model_param | 查询计量模型的全局参数(如相机内参、参考坐标系) | 验证模型级的全局配置,不针对单个对象 |
七、总结
关键点回顾
get_metrology_object_fuzzy_param是模糊测量专属算子,仅用于读取计量对象的3个模糊参数(fuzzy_thresh/function_contrast/function_position);Index支持'all'(所有对象)或具体整数索引,GenParamName支持多参数批量查询,返回值顺序与参数名顺序一致;- 该算子为只读操作,不修改模型状态,常与
set_metrology_object_fuzzy_param配合完成“设置-验证”模糊参数的流程。