☰
在 Halcon 中,**形态学处理是 Blob 分析的“前置净化”步骤**,而 Blob 分析本身则是在净化后的区域上做“连通域分解与特征筛选”
2026/10/12 6:53:58 网站建设 项目流程

在 Halcon 中,形态学处理是 Blob 分析的“前置净化”步骤,而 Blob 分析本身则是在净化后的区域上做“连通域分解与特征筛选”。两者的关系可以概括为:形态学负责让区域“长得对”,Blob 分析负责从中“挑出想要的”。

形态学处理:Blob 分析的预处理基石

Blob 分析的第一步是分割(如threshold),但分割结果往往不理想——有噪点、有空洞、有粘连。形态学处理就是用来修正这些问题的。

Halcon 的形态学核心操作与 Blob 分析的对应关系:

形态学操作Halcon 算子对 Blob 分析的作用
开运算opening_circle/opening_rectangle1去噪:消除分割后的小噪点,保留主体形状
闭运算closing_circle/closing_rectangle1填孔:填充目标内部的细小空洞,连接邻近区域
腐蚀erosion_circle断开粘连:分离粘在一起的物体(如糖豆计数)
膨胀dilation_circle恢复大小:腐蚀断开后,把物体还原到原始尺寸
填充fill_up补内部:填充区域内部的孔洞,使 Blob 成为实心体

一个典型的组合是**“腐蚀 + 膨胀”分离粘连物体**:先erosion_circle把粘在一起的区域“切”开,用connection提取独立连通域,再dilation_circle把每个区域“还原”到原始大小用于显示或测量。

Blob 分析的完整流程:从区域到目标

Halcon 的 Blob 分析遵循一条清晰的流水线:分割 → 形态学处理 → 连通域提取 → 特征筛选。

第一步:分割得到区域。用threshold或binary_threshold把图像变成“区域”(Region),此时所有前景像素可能连成一大块。

第二步:形态学净化。用开运算去噪、闭运算填孔、腐蚀断开粘连——这是 Blob 分析前最关键的一步,直接决定后续能否正确分离目标。

第三步:connection分离连通域。connection算子把一大块区域拆成一个个独立的连通域(Blob),每个 Blob 是一个潜在目标。

第四步:select_shape特征筛选。根据面积、圆度、宽度、高度等特征,从所有 Blob 中选出符合条件的目标。例如选圆形硬币用'circularity',选字符用'width'和'height'。

第五步:area_center等提取最终特征。对筛选后的目标计算面积、质心、最小外接矩形等,输出给下游使用。

实战案例:Halcon 毛刺检测

Halcon 官方示例fin.hdev展示了形态学与 Blob 分析的配合逻辑:

核心思路:先提取零件区域,然后用闭运算构造一个“理想平滑”的参考区域,再用difference求出原始区域与理想区域的差异——差异部分就是毛刺。

* 1. 自动阈值分割,提取零件亮区域 binary_threshold (Fin, Background, 'max_separability', 'light', UsedThreshold) * 2. 闭运算:用大半径圆形结构元素“抚平”边界 closing_circle (Background, ClosedBackground, 250) * 3. 差集:原始区域 - 平滑区域 = 毛刺候选 difference (ClosedBackground, Background, RegionDifference) * 4. 开运算去除小干扰,保留真正的毛刺 opening_rectangle1 (RegionDifference, FinRegion, 5, 5) * 5. 计算毛刺面积与中心 area_center (FinRegion, FinArea, Row, Column)

这个案例的精髓在于:形态学操作(闭运算)不是用来“净化”区域,而是用来“构造参考”——用平滑后的理想形状作为基准,与真实形状做差,异常就暴露出来了。

一句话总结

Halcon 中形态学与 Blob 的关系是**“净化”与“筛选”的配合**:形态学让分割结果变得干净、完整、可分离,connection把干净的区域拆成独立的候选目标,select_shape从中挑出真正想要的那些。形态学做不好,Blob 分析要么分不开,要么筛不准。

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

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

立即咨询