【Halcon-2D测量】reset_metrology_object_fuzzy_param 函数功能(用于参数重置)
2026/6/3 0:34:26 网站建设 项目流程

HALCON算子reset_metrology_object_fuzzy_param全解析

一、算子核心定位

reset_metrology_object_fuzzy_param是HALCON 2D计量(2D Metrology)模块的参数重置类算子,核心功能是清除指定计量对象中所有通过set_metrology_object_fuzzy_param配置的模糊参数和模糊函数,恢复其默认值。它专门针对2D计量模型中的“模糊规则配置”做重置,不影响计量对象的普通参数(如测量长度、Sigma、振幅阈值等),是调试模糊规则、回滚模糊配置的关键工具。

二、算法核心原理

  1. 句柄与索引校验:验证输入的计量模型句柄(MetrologyHandle)有效性,并解析Index参数确定要重置的计量对象范围(all遍历所有,指定索引则仅处理对应对象);
  2. 模糊参数定位:针对每个指定的计量对象,定位其内存中存储的所有模糊参数/模糊函数(如模糊评分阈值、边缘类型模糊规则、尺寸模糊区间等);
  3. 参数重置:清除已配置的模糊参数/函数,将所有模糊相关属性恢复为HALCON默认值;
  4. 状态同步:修改MetrologyHandle对应的计量模型内存状态(因此该句柄被标记为“状态可修改”);
  5. 无返回结果:仅执行重置操作,无输出参数,仅通过返回值(H_MSG_TRUE)确认执行成功。

三、参数全详解

(一)输入参数(Input Parameters)

参数名类型功能说明默认值关键取值规则注意事项
MetrologyHandlemetrology_model → (handle)
(input_control, state is modified)
指定要重置的2D计量模型句柄-必须为已有效创建/加载的计量模型句柄1. 需通过create_metrology_model/read_metrology_model生成,未被clear_metrology_model释放;
2. 该算子会修改句柄对应的模型状态,多线程使用时需同步访问;
3. 无效句柄直接抛出“句柄无效”异常
Indexinteger(-array) → (string / integer)指定要重置的计量对象索引‘all’可选值:
▪ ‘all’:重置模型内所有计量对象的模糊参数;
▪ 整数/整数数组:重置指定索引的计量对象(如0、[0,1])
1. 整数索引必须是get_metrology_object_indices返回的有效索引;
2. 若Index为数组,会按顺序重置每个索引对应的对象

(二)输出参数

该算子无输出参数,仅通过返回值(2=H_MSG_TRUE)确认执行成功。

四、使用关键注意事项

  1. 作用范围约束:仅重置模糊参数/模糊函数(由set_metrology_object_fuzzy_param设置的参数),完全不影响普通参数(如num_instancesSigmameasure_length等,这些需用reset_metrology_object_param重置);
  2. 句柄状态修改
    • MetrologyHandle是“状态可修改的输入参数”,执行该算子后,模型的内部状态会变化;
    • 若多线程同时访问该句柄(如一个线程重置、一个线程读取模糊参数),必须做同步处理,否则可能导致参数读取异常;
  3. 默认值恢复规则:重置后,所有模糊相关参数回到HALCON出厂默认值(如模糊评分阈值恢复为0.5、无自定义模糊函数等),需重新调用set_metrology_object_fuzzy_param才能配置新的模糊规则;
  4. 多线程特性
    • 多线程类型:可重入(能与非排他算子并行运行);
    • 多线程范围:全局(可从任意线程调用);
    • 无并行优化:仅单线程执行重置操作;
    • 关键提醒:因修改句柄状态,跨线程使用该句柄时需手动同步;
  5. 返回值规则:执行成功返回2(H_MSG_TRUE),参数无效(如索引错误、句柄无效)时直接抛出异常,而非返回错误码;
  6. 执行时序无约束:无需先调用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释放整个计量模型句柄,销毁所有参数(含模糊+普通)彻底清理模型,释放内存

八、总结

关键点回顾

  1. reset_metrology_object_fuzzy_param核心作用是清除指定计量对象的所有模糊参数/函数,恢复其默认值,仅作用于模糊相关配置,不影响普通测量参数;
  2. 该算子会修改计量模型句柄的状态,多线程访问该句柄时需手动同步;
  3. 重置后需重新调用set_metrology_object_fuzzy_param才能配置新的模糊规则,常用于调试模糊规则时的回滚操作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询