机器视觉技术与应用实战(BLOB分析)

我发现写blob分析(Binary Large Object)相应的处理函数的文章非常少。那就写一写关于blob分析相关的文章。

blob工具也叫做斑点工具,先对图像进行二值化,对图像中连通区域进行计算,计算几何特征。
BLOB分析功能: 1、图像分割 2、连通域分析 3、BLOB特征分析

图像分割: 允许BLOB分析将图像分割成两类:斑点和背景。当然我更愿意认为这个是其中的二值化起到了作用,通过 二值化将背景和斑点进行分离。这个要求物体和背景对比度比较好的情况,之前说过的,对比度其实更多反 映在灰度值之间的差距,物体的那部分的灰度值和背景的灰度值的差距非常大越好分离,如双峰直方图。双峰直方图类似如下:

BLOB里面有两种类型的阈值函数:硬阈值和软阈值。 

在visionpro里面同样有相应的处理方式:

 硬阈值:不允许有跨斑点边界的灰度值变化。硬阈值通常设置在两个峰值中间的低谷处。

 举个栗子:

原图:

灰度直方图+阈值线(紫色):

 

可以看到阈值几乎划在了背景和物体灰度值中间 

 于是得到BLOB处理后图(截图为了看到白色区域,特意截取大一点):灰度直方图为:0和255

 硬阈值的边缘灰度值是跳跃的,不存在过渡像素。如图是上面图的一部分:

硬阈值对于边界区域的像素的处理太粗暴了。于是乎,软阈值它来了!

软阈值:展现处理斑点边界区域的像素的灵活性,软阈值倾斜并覆盖一系列像素值。一旦处理,阈值范围内的像素被输出为加权像素。加权像素按照它在阈值范围内的值来计算斑点结果。以下是我设置的软阈值范围,低阈值和高阈值之间的阈值范围就是加权像素的区域,低于低阈值的统统设置为0,高于高阈值的统统 设置为255,区域内的像素进行加权,得到过渡灰度值。在这张图里面,我设置了低阈值为150,高阈值为 210。

结果如下:

 直方图是这样的(注意红色箭头指的地方),红色箭头的地方是有像素点分布的:

它的边缘是这样的:

 可以看到明显的过渡像素

对于过渡像素的求值,目前还没找到相应的详细计算方法,只能知道是用到了加权的方式统计的。

最后,如果是测量某一个区域的某一些值,blob分析可能会影响到准确性。blob分析在我所处的项目中,通常用于检测有无比较粗略的测量