Halcon学习--(6)Blob分析 1、简介Blob即binary large object二进制大型对象是事务处理过程中遇到的一些大型的、复杂的数据项必须作为一个完整的数据项看待。如一幅图形、一帧图像、一段语言等。在计算机视觉中的Blob是指图像中的具有相似颜色、纹理等特征所组成的一块连通区域。Blob分析Blob Analysis是对图像中相同像素的连通域进行分析(该连通域称为Blob)。其过程其实就是将图像进行二值化分割得到前景和背景然后进行连通区域检测从而得到Blob块的过程。简单来说blob分析就是在一块“光滑”区域内将出现“灰度突变”的小区域寻找出来。Blob分析工具可以从背景中分离出目标并可以计算出目标的数量、位置、形状、方向和大小还可以提供相关斑点间的拓扑结构。在处理过程中不是对单个像素逐一分析而是对图像的行进行操作。图像的每一行都用游程长度编码RLE来表示相邻的目标范围。这种算法与基于像素的算法相比大大提高了处理的速度。2、Blob分析流程Blob分析的基本步骤这是一种理想状态也是最基本的套路获取图像-分割图像区分前景像素和背景像素-特征提取比如面积、重心、旋转角度等。步骤核心目标常用 Halcon 算子举例​1. 图像获取与预处理​获取高质量图像减少噪声、校正光照不均read_image,gauss_filter,mean_image,emphasize​2. 图像分割​将前景目标与背景分离创建二值区域threshold,binary_threshold,dyn_threshold​3. 连通区域分析​将二值图像分割成独立的连通区域Blobconnection​4. 区域处理与筛选​优化区域形状并根据特征如面积、形状筛选目标select_shape,opening_circle,closing_circle​5. 特征提取​计算并输出所需特征数量、位置、面积、形状参数等area_center,smallest_rectangle,orientation_region3、常用算子1. 图像获取与预处理图像质量直接影响 Blob 分析的效果。​获取图像​使用read_image读取图像。​预处理​常用滤波算子平滑噪声如gauss_filter高斯滤波、mean_image均值滤波。对于光照不均可能需要进行光照校正或使用图像增强算子如emphasize来提升对比度。2. 图像分割分割是将前景目标从背景中分离出来的关键一步。​全局阈值分割 (threshold)​​这是最直接的方法适用于前景和背景灰度对比明显且光照均匀的场景。你需要根据图像直方图或经验设定一个固定的灰度范围[MinGray, MaxGray]。* 读取图像后设定阈值范围例如提取灰度值在128到255之间的像素 read_image (Image, printer_chip/printer_chip_01) threshold (Image, Region, 128, 255)自动阈值分割 (binary_threshold)​​当图像对比度稳定但手动设定阈值繁琐时此算子可根据直方图自动选择阈值常用max_separability最大类间方差法即Otsu等方法。局部动态阈值分割 (dyn_threshold)​​在光照不均或背景复杂时特别有效。它需要一个参考图像通常由原图平滑滤波得到如使用mean_image然后逐像素比较原图与参考图的灰度差。* 读取图像后 read_image (Image, printer_chip/printer_chip_01) * 先对原图进行平滑处理生成参考图像 mean_image (Image, ImageMean, 31, 31) * 然后进行动态阈值分割提取比局部背景亮出一定差值的像素 dyn_threshold (Image, ImageMean, RegionDynThresh, 10, light)3. 连通区域分析与区域处理分割得到的区域可能包含多个粘连目标或噪声。​连通区域分析 (connection)​​此算子将二值图像中所有相互连接的前景像素集合找出来并为每个独立的连通区域分配唯一标签这是后续对单个Blob进行分析的基础。​形态学处理​用于优化区域形状。​开运算 (opening_circle,opening_rectangle1)​​先腐蚀后膨胀可消除小噪声、断开细小的连接。​闭运算 (closing_circle,closing_rectangle1)​​先膨胀后腐蚀可填充区域内部的小孔洞、连接邻近区域。​区域筛选 (select_shape)​​根据面积、宽度、高度、圆度等特征从大量区域中筛选出感兴趣的目标。* 读取图像后 read_image (Image, printer_chip/printer_chip_01) threshold (Image, Region, 100, 255) connection (Region, ConnectedRegions) * 筛选面积在100到1000像素之间的区域 select_shape (ConnectedRegions, SelectedRegions, area, and, 30000, 50000) * 可以组合多个特征进行筛选 select_shape (SelectedRegions, FinalRegions, [area,roundness], and, [100,0.85], [1000,1.0])4. 特征提取对筛选后的最终区域提取所需信息。* 计算每个区域的面积和中心坐标 area_center (SelectedRegions, Area, Row, Column) * 计算区域的最小外接矩形 smallest_rectangle1 (SelectedRegions, Row1, Column1, Row2, Column2) * 计算区域的方向主轴角度 orientation_region (SelectedRegions, Orientation)4、典型应用场景与实例​缺陷检测如玻璃划痕、织物瑕疵​​​思路​完好产品表面纹理均匀。缺陷通常表现为局部灰度突变。​方法​可能结合动态阈值或高精度阈值来捕捉微弱的瑕疵信号再通过形态学处理和区域筛选确认。​零件计数与定位​​思路​在图像中统计特定零件的数量并获取其位置。​方法​通过阈值分割零件利用connection分离粘连零件再使用select_shape根据面积和形状过滤最后通过area_center获取位置。​字符识别OCR预处理​​思路​在正式识别前先将图像中的每个字符分割出来。​方法​Blob分析可用于定位和分离字符区域。注意事项​光照是关键​Blob分析的效果极大程度依赖于光照条件。尽可能在采集图像阶段保证光照均匀和稳定。​预处理的重要性​不要忽视预处理。适当的滤波可以显著改善分割效果。​结构元素选择​进行形态学操作时结构元素如圆形、矩形的大小和形状会直接影响效果需要根据目标特征谨慎选择。​特征选择​select_shape支持的特征非常多选择与你的目标最相关的特征进行筛选可以提高准确性和效率。​局限性​Blob分析主要适用于目标与背景对比度较高的图像。对于低对比度图像、需要匹配复杂模板或纹理分析的任务可能需要结合其他方法如基于形状的匹配或深度学习。Halcon 的 Blob 分析是一个系统性的过程核心在于通过图像分割、连通区域分析、形态学处理和特征筛选从图像中提取出有用的二维形状信息。掌握其流程和关键算子并能根据具体应用场景灵活调整策略是成功应用它的关键。