BLOB分析

通过BLOB分析模块,可在像素为有限灰度级的图像中检测、定位或分析目标物体。该模块可输出目标物体的存在性、数量、位置、形状、方向以及目标物体间的拓扑关系等信息。

本节内容包含:

模块原理

开始使用BLOB分析模块前,建议先了解该模块的算法工作原理,以便更合理地配置该模块的参数。

本节内容包含:

什么是blob

blob,即图像上由互相连通的像素点构成的区域。此处的“连通”分为如下两种类型:

  • 4连通:两个像素点有共同的边缘,即一个像素点在另一个像素的上方、下方、左侧或右侧。

  • 8连通:在4连通的基础上,将对角线上的相邻像素也纳入为“互相连通”的像素。

图 1 4连通和8连通

blob分析流程

blob分析的基本流程如下图所示。

图 2 blob分析
图像二值化

图像二值化指将图像中的像素点转换为纯黑(灰度值255)或纯白(灰度值0)。转换后,图像被分割为黑白两部分。转换过程中,灰度值转换为0和255的像素点具体由预设的像素阈值(即特定的灰度值)决定。具体的转换机制由下文参数配置中的阈值方式定义。

合理设置阈值可让blob分析得到更好的分析结果。

孔洞填充

此处的“孔洞”指被blob包围且与blob颜色相反的部分。blob为白色,孔洞为黑色。孔洞填充在blob分析中是否执行、如何执行,由下文参数配置中提及的填充面积阈值决定。

blob提取

算法根据连通域特性提取blob,连通特性包括上文已提及的4连通或8连通,可通过下文参数配置中提及的连通性配置。

blob筛选

算法根据预设的条件筛选blob。blob分析过程中具体如何进行筛选,由下文参数配置中提及的各项“使能”参数决定。合理配置这些参数,可获取更为精准的目标blob。

blob排序

算法对上一步筛选出的blob按照特定特征进行排序。blob分析过程中具体如何进行排序,由下文参数配置中提及的排序特征排序方式决定。

blob输出

算法返回如下信息:

  • 二值化图像

  • blob图像

  • 符合预设筛选条件的blob数量

  • 符合预设筛选条件的每个blob的基本特征信息以及特征加权得分。

使用场景

BLOB分析模块仅适用于特定的业务场景。

如果业务场景满足如下所述的适用情况,建议在流程中调用该模块进行blob分析。

适用情况

不适用情况

  • 仅需提取检测对象的二维特征

  • 检测图像的对比度高

  • 需判断检测对象是否存在

  • 检测图像的缩放尺度固定且不存在图像旋转

  • 检测图像的对比度低

  • 仅使用两个灰度级不能反映待检测对象的基本属性

使用方法

在流程中,BLOB分析模块的前后序模块详情如下。

表 1 前后续模块

前后序模块

描述

前序模块

图像源表面缺陷滤波以及深度学习分类下的DL图像分割DL实例分割等。该两种“分割”模块,输出图像一般都是概率图。概率图中,概率值越高的地方图像越亮,概率值越低的地方,图像越暗。因此通常需要将这些模块输出图像进行blob分析处理,获取目标位置信息。

后序模块

可处理blob分析输出数据的模块,如格式化条件检测以及测量分类下的模块。

下图所示的计数场景中,格式化模块将BLOB分析处理后的数据做格式化处理,屏蔽无关数据,最终仅输出图中的blob数量。

图 3 示例1:格式化blob数据

下图的胶囊计数检测场景中,条件检测模块通过BLOB分析模块获取胶囊个数,并判断胶囊个数是否满足预设的条件,最终输出判断结果。

图 4 示例2:检测胶囊个数是否达标

参数配置

以下仅介绍该模块的运行参数详情。通过配置运行参数,可定义当前模块如何处理输入的数据。

说明:

阈值方式

定义图像二值化的阈值设置方式,包括不进行二值化单阈值双阈值自动阈值等。图像二值化的结果将直接影响blob分析结果,请根据实际场景谨慎设置阈值方式

不进行二值化

适用于输入图像本身已为二值图的场景。

单阈值

通过单阈值算法进行图像二值化,需设置低阈值。该算法适用于对算法效率要求较高或需对较大检测目标进行二值化的场景。该算法二值化处理速度快,但存在空间量化误差,相对精度较低。

不同极性设置下,二值化效果有所差异。极性用于指定在二值化之前,灰度图中前景的灰度是否亮于背景。

  • 极性设置为暗于背景时,灰度值小于低阈值的像素点被分割为前景,其余像素点为背景。

  • 极性设置为亮于背景时,灰度值大于或等于低阈值的像素点被分割为前景,其余像素点为背景。

图 5 原图

图 6 单阈值且极性为暗于背景
图 7 单阈值极性为亮于背景
双阈值

通过双阈值算法进行图像二值化。需设置两个阈值(低阈值高阈值)。该算法适用于对算法效率要求较高或需对较大检测目标进行二值化的场景。该方式二值化处理速度快,但存在空间量化误差,相对精度较低。

  • 低阈值小于高阈值时,灰度值介于两个阈值之间的像素点将被分割为前景,其余像素点为背景。

  • 低阈值大于高阈值时,灰度值在两个阈值之外的像素点将被分割为前景,其余像素点为背景。

自动阈值

算法根据图像自动配置阈值进行图像二值化,适用于需要根据输入图像动态计算阈值的场景。不同极性设置下,二值化效果有所差异。极性用于指定在二值化之前,灰度图中前景的灰度是否亮于背景。

软阈值(固定)

软阈值算法是相对于硬阈值算法的概念,分为固定软阈值算法和相对软阈值算法。软阈值算法可降低由空间量化误差(Spatial Quantization Error,SQE)导致的blob大小、轮廓长度和位置的不精确问题。

说明:

硬阈值算法,即上文已提及的单阈值双阈值自动阈值

下图展示了硬阈值算法与软阈值算法的核心区别。为了降低空间量化误差对算法输出结果的影响,软阈值算法给位于感兴趣区域内的每个像素点分配一个像素权重。像素权重为0,表明该像素是一个背景像素;像素权重为1,表明该像素是一个前景像素;像素权重在0和1之间,表明该像素位于前景和背景区域的边界。

图 8 软阈值和硬阈值的区别

软阈值(固定)即固定软阈值算法,适用于目标和背景之间可进行简单二值划分的场景。该算法耗时相对较长。

通过该算法进行图像二值化,需设置阈值范围软阈值柔和度。不同极性设置下,二值化效果有所差异。极性用于指定在二值化之前,灰度图中前景的灰度是否亮于背景。

  • 极性暗于背景时,灰度值小于等于低阈值的像素权重为1(为前景);大于等于高阈值的像素权重为0(为背景);介于两阈值之间的像素权重在0和1之间,即为前景和背景区域的边界。

  • 极性亮于背景时,灰度值小于等于低阈值的像素点的权重为0(为背景);大于等于高阈值的像素点的权重为1(为前景);介于两阈值之间的像素权重在0和1之间,即为前景和背景区域的边界。

软阈值柔和度

设置像素权重值0和1之间的阶梯个数(如下图所示)。该值为0时,软阈值处理结果等价于硬阈值

图 9 柔和度原理

柔和度越高,则blob边缘越柔和,毛刺感越弱(如下图所示)。

图 10 柔和度比对效果
软阈值(相对)

通过相对软阈值算法进行图像二值化。该二值化方法适用于照明环境不稳定的场景。该算法耗时相对较长。

选用该算法,需设置低尾部比例高尾部比例低阈值比例高阈值比例和上文已提及的软阈值柔和度

图 11 相对软阈值算法原理

相对软阈值算法的工作流主要包括两个步骤。以下结合上图对该两个步骤进行说明。

  1. 通过高/低尾部比例排除具有极端灰度值的若干像素点。如果图像的像素总数为N,高/低尾部比例分别为H%和L%,则图像中灰度值最低的N×L%个像素和灰度值最高的N*H%个像素分别赋予0和1的权重值。

  2. 在剩余像素点的灰度值范围内划分高/低阈值。如果剩余像素点的灰度值分布在[A, B]的范围内,低阈值比例为TL%,高阈值比例为TH%,则低阈值为(B-A)* TL% + A,高阈值为(B-A)* TH% + A。

    • 极性亮于背景时,灰度值小于等于低阈值的像素权重为0(为背景),大于等于高阈值的像素权重为1(为前景),介于两阈值之间的像素权重在0和1之间。

    • 极性暗于背景时,灰度值小于等于低阈值的像素权重为1(为前景),大于等于高阈值的像素权重为0(为背景),介于两阈值之间的像素权重在0和1之间。

低尾部比例

起始于0灰度值的较低灰度值像素点相对于像素点总数的比例。这些较低灰度值像素点将在图像二值化中忽略。

高尾部比例

终止于255灰度值的较高灰度值像素点相对于像素点总数的比例。该部分像素点将在图像二值化中忽略。

低阈值比例

去除低尾部比例高尾部比例对应的像素点后,灰度值低于低阈值的像素点相对所有剩余像素点的比例。

高阈值比例

去除低尾部比例高尾部比例对应的像素点后,灰度值在最低灰度值至高阈值之间的像素点相对所有剩余像素点的比例。

查找个数

设置最终输出的blob的最大数量。

填充面积阈值

blob区域内的最小非blob区域面积(可理解为是blob中的“孔洞”)。如果“孔洞”面积小于或等于该值,则将其与外围的blob合并。

孔洞填充前

孔洞填充后

面积使能

开启后,算法仅筛选出面积在面积范围内的blob。

轮廓输出使能

开启后,图像上的blob将显示轮廓。

点输出使能

开启后,该模块将输出blob各个轮廓点的X/Y轴坐标(如下图所示)。该参数可与轮廓输出使能配合使用。

图 12 轮廓点X/Y轴坐标

Blob图像输出

关闭后,算法将不输出blob分析后的图像。

二值化图输出

关闭后,算法将不输出blob分析后的二值化图像。

高级参数

角度使能

开启后,算法仅筛选出角度在角度范围内的blob。此处的角度指blob的“最小外接矩形”的长轴与图像x轴方向的夹角(顺时针为正,逆时针为负的)。

图 13 最小外接矩形
RECT宽使能

开启后,算法仅筛选出blob矩形框宽度在RECT宽范围内的blob。

说明:

此处的“矩形框”与最小外接矩形不同,特指宽高均与图像宽高平行的矩形(如下图所示)。

图 14 blob矩形框
RECT高使能

开启后,算法仅筛选出矩形框高度在RECT高范围内的blob。

说明:

此处的“矩形框”与最小外接矩形不同,特指宽高均与图像宽高平行的矩形。

周长使能

开启后,算法仅筛选出轮廓长度在周长范围内的blob。

短轴使能

开启后,算法仅筛选出最小外接矩形短轴长在短轴范围内的blob。

长轴使能

开启后,算法仅筛选出最小外接矩形长轴长度在长轴范围内的blob。

圆形度使能

开启后,算法仅筛选出圆形度在圆形度范围内的blob。

图 15 圆形度计算公式

该计算公式中,circularity为圆形度,S为blob面积(即连通域面积),d为blob质心到blob轮廓点的最大距离。圆形度范围为0~1,圆的圆形度为1。圆形度越小,blob形状越不规则。

说明:

质心为blob内的所有像素点的坐标平均值所对应的点。

图 16 圆形度
矩形度使能

开启后,算法仅筛选出矩形度在矩形度范围内的blob。

图 17 矩形度计算公式

该计算公式中, R为矩形度, S1为blob面积(即连通域面积), S2为blob的最小外接矩形的面积。矩形度范围是0~1,矩形的矩形度为1。矩形度越小,blob形状越不规则。

质心偏移使能

开启后,算法仅筛选出质心偏移在质心偏移范围内的blob。

质心为blob内的所有像素点的坐标平均值所对应的点,如下图中蓝点所示;矩形中心是blob的最小外接矩形的几何中心,如下图中红点所示。两点之间的距离即为质心相对于矩形中心的偏移量。

图 18 质心偏移
轴比范围

开启后,算法仅筛选出最小外接矩形短轴长度和长轴长度比值在轴比范围内的blob。

排序特征

设置输出的blob在当前结果页签内的排序依据。可依据面积、周长、圆形度、矩形度、连通域中心x、连通域中心y、box角度、box宽、box高、矩形左上顶点x、矩形左上顶点y、二阶中心距主轴角度、轴比等特征排序。

实际配置效果与下文的排序方式相关。

排序方式

按升序或降序对输出的blob在在当前结果页签内进行排序。也可设置为不排序

连通性

设置判断图像上像素点是否互相连通的标准,包括4连通8连通。通常设置为8连通可比设置为4连通获得更大的blob。

以下示例中,如果采用4连通定义“连通”,则下图白色像素点构成的特征图像包含两个“连通区域”,即如下左图中两个橙框中的由白色像素点构成的区域;如果采用8连通定义,则仅包含一个“连通区域”,即如下右图中所有由白色像素点构成的区域。

图 19 两个连通区域
图 20 单个连通区域
像素超界使能

开启后,如果blob中与图像边缘、ROI边缘或掩膜边缘重合的像素点数量大于最大超界像素,那么该blob将被算法删除。

如果将最大超界像素设置为0,所有与图像边缘、ROI边缘或掩膜边缘相交的blob都会被删除。

图 21 像素超界

模块结果

该模块输出结果中各项参数详情,请参见BLOB分析模块的输出结果