1. 从“卡尺”到“测量”:理解Halcon Metrology的真正定位
很多刚接触Halcon的朋友,尤其是从菜单栏的“助手”开始摸索的,可能会和我当初一样,掉进一个“命名陷阱”里。在助手栏里,你看到一个叫“Measure”的工具,点进去发现它功能挺单一,就是沿着一条线放一排卡尺,找找边缘,测测距离。那时候我心里就嘀咕,这也能叫“测量工具”?我们工业视觉里天天要干的找圆、找椭圆、量矩形边长,这些更复杂的几何测量跑哪去了?
后来踩过不少坑,翻遍了手册,我才恍然大悟:Halcon把真正的“重型武器”藏在了算子库里,它们都有一个共同的名字前缀——Metrology。你可以把助手里的“Measure”理解成一把游标卡尺,功能直接但单一;而Metrology系列算子,则是一整套三坐标测量机,它能基于卡尺的原理,通过精密的算法拟合,完成对圆、椭圆、直线、矩形等几何特征的高精度、鲁棒性测量。这个认知上的转变非常重要,它决定了你是只能做简单的边缘检测,还是能处理复杂的实际工业检测任务。
我花了很长时间才把这一套工具摸熟,因为它的设计思路和那些“一键式”的助手工具不太一样。Metrology更像一个可编程的测量框架。你需要先创建一个测量模型(create_metrology_model),这就像搭一个空的测量台。然后,往这个台子上安装你需要的“传感器”,也就是各种测量对象,比如用 add_metrology_object_circle_measure 装一个“找圆传感器”。最后,调用 apply_metrology_model 让整个系统对图像进行一次扫描和计算。这种“模型-对象-执行”的三段式工作流,一开始觉得有点绕,但用熟了就会发现其强大之处:参数可复用、模型可保存、工具可组合。
举个例子,在检测手机中框时,我可能需要同时测量多个螺丝孔(圆)和边框边缘(直线)。用助手工具,你得一个个手动画ROI,调参数,代码会变得又长又乱。而用Metrology,我创建一个模型,往里添加多个圆形和直线测量对象,设定好各自的初始位置和参数,一次apply就能得到所有结果。后期如果产品型号变了,我只需要调整模型里对应对象的参数,或者用set_metrology_object_param算子动态修改,整个程序架构非常清晰,维护起来也方便得多。这就是从“工具”思维到“系统”思维的升级。
2. 核心四剑客:直线、圆、椭圆、矩形的测量实战
Metrology工具家族主要针对四种基本几何形状:直线、圆、椭圆和矩形。别看只有四种,它们通过灵活的初始参数和拟合算法,能覆盖工业现场绝大部分的尺寸测量需求。下面我结合自己项目里的真实代码片段,带你逐个拆解,看看怎么把它们用起来,并避开那些新手常踩的“坑”。
2.1 直线测量:不只是找边,更是找“最佳拟合线”
找直线听起来简单,但工业图像里的“边”往往不是完美的直线,可能有毛刺、断裂或者光照不均。add_metrology_object_line_measure 这个算子的核心思想是:我给你一条大概的线(由起点和终点定义),你沿着这条线的法线方向,在两侧布置一系列卡
1358




被折叠的 条评论
为什么被折叠?



