
在 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 分析要么分不开要么筛不准。