【Halcon-2D测量】reset_metrology_object_fuzzy_param 函数功能(用于参数重置)
HALCON算子reset_metrology_object_fuzzy_param全解析
一、算子核心定位
reset_metrology_object_fuzzy_param是HALCON 2D计量(2D Metrology)模块的参数重置类算子,核心功能是清除指定计量对象中所有通过set_metrology_object_fuzzy_param配置的模糊参数和模糊函数,恢复其默认值。它专门针对2D计量模型中的“模糊规则配置”做重置,不影响计量对象的普通参数(如测量长度、Sigma、振幅阈值等),是调试模糊规则、回滚模糊配置的关键工具。
二、算法核心原理
- 句柄与索引校验:验证输入的计量模型句柄(MetrologyHandle)有效性,并解析
Index参数确定要重置的计量对象范围(all遍历所有,指定索引则仅处理对应对象); - 模糊参数定位:针对每个指定的计量对象,定位其内存中存储的所有模糊参数/模糊函数(如模糊评分阈值、边缘类型模糊规则、尺寸模糊区间等);
- 参数重置:清除已配置的模糊参数/函数,将所有模糊相关属性恢复为HALCON默认值;
- 状态同步:修改
MetrologyHandle对应的计量模型内存状态(因此该句柄被标记为“状态可修改”); - 无返回结果:仅执行重置操作,无输出参数,仅通过返回值(H_MSG_TRUE)确认执行成功。
三、参数全详解
(一)输入参数(Input Parameters)
| 参数名 | 类型 | 功能说明 | 默认值 | 关键取值规则 | 注意事项 |
|---|---|---|---|---|---|
| MetrologyHandle | metrology_model → (handle) (input_control, state is modified) | 指定要重置的2D计量模型句柄 | - | 必须为已有效创建/加载的计量模型句柄 | 1. 需通过create_metrology_model/read_metrology_model生成,未被clear_metrology_model释放;2. 该算子会修改句柄对应的模型状态,多线程使用时需同步访问; 3. 无效句柄直接抛出“句柄无效”异常 |
| Index | integer(-array) → (string / integer) | 指定要重置的计量对象索引 | ‘all’ | 可选值: ▪ ‘all’:重置模型内所有计量对象的模糊参数; ▪ 整数/整数数组:重置指定索引的计量对象(如0、[0,1]) | 1. 整数索引必须是get_metrology_object_indices返回的有效索引;2. 若 Index为数组,会按顺序重置每个索引对应的对象 |
(二)输出参数
该算子无输出参数,仅通过返回值(2=H_MSG_TRUE)确认执行成功。
四、使用关键注意事项
- 作用范围约束:仅重置模糊参数/模糊函数(由
set_metrology_object_fuzzy_param设置的参数),完全不影响普通参数(如num_instances、Sigma、measure_length等,这些需用reset_metrology_object_param重置); - 句柄状态修改:
MetrologyHandle是“状态可修改的输入参数”,执行该算子后,模型的内部状态会变化;- 若多线程同时访问该句柄(如一个线程重置、一个线程读取模糊参数),必须做同步处理,否则可能导致参数读取异常;
- 默认值恢复规则:重置后,所有模糊相关参数回到HALCON出厂默认值(如模糊评分阈值恢复为0.5、无自定义模糊函数等),需重新调用
set_metrology_object_fuzzy_param才能配置新的模糊规则; - 多线程特性:
- 多线程类型:可重入(能与非排他算子并行运行);
- 多线程范围:全局(可从任意线程调用);
- 无并行优化:仅单线程执行重置操作;
- 关键提醒:因修改句柄状态,跨线程使用该句柄时需手动同步;
- 返回值规则:执行成功返回
2(H_MSG_TRUE),参数无效(如索引错误、句柄无效)时直接抛出异常,而非返回错误码; - 执行时序无约束:无需先调用
apply_metrology_model,可在创建计量对象后、配置模糊参数后任意时机调用。
五、算子调用链路
(一)前置算子(Possible Predecessors)
create_metrology_model:创建空2D计量模型(基础前置);add_metrology_object_*(如add_metrology_object_circle_measure):向模型添加计量对象;set_metrology_object_fuzzy_param:配置模糊参数/函数(该算子的核心前置,无此操作则重置无实际意义);read_metrology_model:加载含模糊参数配置的计量模型(可选)。
(二)后置算子(Possible Successors)
set_metrology_object_fuzzy_param:重新配置模糊参数/函数(最常用后置);apply_metrology_model:使用重置后的模糊默认参数执行检测;get_metrology_object_fuzzy_param:验证模糊参数是否已恢复默认值;clear_metrology_model:释放计量模型句柄(收尾操作)。
六、与相似算子的核心差异
| 算子名称 | 核心区别 | 适用场景 |
|---|---|---|
reset_metrology_object_fuzzy_param | 仅重置模糊参数/模糊函数,恢复其默认值 | 调试模糊规则、回滚错误的模糊配置 |
reset_metrology_object_param | 仅重置普通参数(如Sigma、振幅阈值、num_instances等),恢复其默认值 | 调试普通测量参数、回滚错误的基础配置 |
clear_metrology_model | 释放整个计量模型句柄,销毁所有参数(含模糊+普通) | 彻底清理模型,释放内存 |
八、总结
关键点回顾
reset_metrology_object_fuzzy_param核心作用是清除指定计量对象的所有模糊参数/函数,恢复其默认值,仅作用于模糊相关配置,不影响普通测量参数;- 该算子会修改计量模型句柄的状态,多线程访问该句柄时需手动同步;
- 重置后需重新调用
set_metrology_object_fuzzy_param才能配置新的模糊规则,常用于调试模糊规则时的回滚操作。
